Skip to content

ci: .github/workflows/api.yml when using wrangler-action passes with vars #2589

ci: .github/workflows/api.yml when using wrangler-action passes with vars

ci: .github/workflows/api.yml when using wrangler-action passes with vars #2589

Workflow file for this run

name: API
on:
push:
branches:
- main
paths:
- 'packages/api/**'
- 'packages/db/**'
- '.github/workflows/api.yml'
- 'package-lock.json'
pull_request:
paths:
- 'packages/api/**'
- 'packages/db/**'
- '.github/workflows/api.yml'
- 'package-lock.json'
workflow_dispatch:
inputs:
force_deploy_staging:
description: whether to deploy to staging even if the job wouldn't normally run
required: true
type: boolean
default: false
force_deploy_production:
description: whether to deploy to production even if the job wouldn't normally run
required: true
type: boolean
default: false
jobs:
test:
runs-on: ubuntu-latest
name: Test
steps:
- uses: actions/checkout@v2
- uses: microsoft/playwright-github-action@v1
- uses: actions/setup-node@v2
with:
node-version: 18
- uses: bahmutov/npm-install@v1
- run: npm run build --workspace packages/api
- run: npm test --workspace packages/api
env:
PG_REST_URL: ${{secrets.PG_REST_URL}}
PG_REST_JWT: ${{secrets.PG_REST_JWT}}
PG_CONNECTION: ${{secrets.PG_CONNECTION}}
changelog:
name: Changelog
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
needs: test
outputs:
releases_created: ${{ steps.tag-release.outputs.releases_created }}
steps:
- uses: GoogleCloudPlatform/release-please-action@v3
id: tag-release
with:
path: packages/api
token: ${{ secrets.GITHUB_TOKEN }}
release-type: node
monorepo-tags: true
package-name: api
changelog-types: '[{"type":"feat","section":"Features","hidden":false},{"type":"fix","section":"Bug Fixes","hidden":false},{"type":"chore","section":"Other Changes","hidden":false}]'
deploy-staging:
name: Deploy Staging
if: (github.event_name == 'push' && github.ref == 'refs/heads/main') || inputs.force_deploy_staging
runs-on: ubuntu-latest
needs: test
environment:
name: staging
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: 18
- uses: bahmutov/npm-install@v1
- name: Publish api worker
uses: cloudflare/[email protected]
env:
ENV: 'staging' # inform the build process what the env is
SENTRY_TOKEN: ${{ secrets.SENTRY_TOKEN}}
SENTRY_UPLOAD: ${{ secrets.SENTRY_UPLOAD}}
NEXT_PUBLIC_W3UP_LAUNCH_SUNSET_ANNOUNCEMENT_START: ${{ vars.NEXT_PUBLIC_W3UP_LAUNCH_SUNSET_ANNOUNCEMENT_START }}
NEXT_PUBLIC_W3UP_LAUNCH_SUNSET_START: ${{ vars.NEXT_PUBLIC_W3UP_LAUNCH_SUNSET_START }}
NEXT_PUBLIC_W3UP_LAUNCH_LIMITED_AVAILABILITY_START: ${{ vars.NEXT_PUBLIC_W3UP_LAUNCH_LIMITED_AVAILABILITY_START }}
with:
apiToken: ${{ secrets.CF_TOKEN }}
workingDirectory: 'packages/api'
environment: 'staging'
vars: |
NEXT_PUBLIC_W3UP_LAUNCH_LIMITED_AVAILABILITY_START
NEXT_PUBLIC_W3UP_LAUNCH_SUNSET_ANNOUNCEMENT_START
NEXT_PUBLIC_W3UP_LAUNCH_SUNSET_START
- name: Test upload to staging
run: |
npm run build -w packages/client
echo "$(date --utc --iso-8601=seconds) web3.storage upload test" > ./upload-test-small
./packages/w3/bin.js put ./upload-test-small --api https://api-staging.web3.storage --token ${{ secrets.STAGING_WEB3_TOKEN }}
deploy-production:
name: Deploy Production
if: (github.event_name == 'push' && github.ref == 'refs/heads/main' && needs.changelog.outputs.releases_created) || inputs.force_deploy_production
runs-on: ubuntu-latest
needs:
- test
- changelog
environment:
name: production
url: https://web3.storage
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: 18
registry-url: https://registry.npmjs.org/
- uses: bahmutov/npm-install@v1
- name: API - Deploy to Cloudflare
uses: cloudflare/[email protected]
env:
ENV: 'production' # inform the build process what the env is
SENTRY_TOKEN: ${{ secrets.SENTRY_TOKEN}}
SENTRY_UPLOAD: ${{ secrets.SENTRY_UPLOAD}}
NEXT_PUBLIC_W3UP_LAUNCH_SUNSET_ANNOUNCEMENT_START: ${{ vars.NEXT_PUBLIC_W3UP_LAUNCH_SUNSET_ANNOUNCEMENT_START }}
NEXT_PUBLIC_W3UP_LAUNCH_SUNSET_START: ${{ vars.NEXT_PUBLIC_W3UP_LAUNCH_SUNSET_START }}
NEXT_PUBLIC_W3UP_LAUNCH_LIMITED_AVAILABILITY_START: ${{ vars.NEXT_PUBLIC_W3UP_LAUNCH_LIMITED_AVAILABILITY_START }}
with:
apiToken: ${{ secrets.CF_TOKEN }}
workingDirectory: 'packages/api'
environment: 'production'
vars: |
NEXT_PUBLIC_W3UP_LAUNCH_LIMITED_AVAILABILITY_START
NEXT_PUBLIC_W3UP_LAUNCH_SUNSET_ANNOUNCEMENT_START
NEXT_PUBLIC_W3UP_LAUNCH_SUNSET_START