Skip to content

wrangler deploy after npm publish #93

wrangler deploy after npm publish

wrangler deploy after npm publish #93

Workflow file for this run

name: CI/CD
jobs:
# Stage 1: codacy, devskim, install
codacy:
name: Codacy
runs-on: ubuntu-latest
env:
DD_ENV: ci
services:
datadog-agent:
image: datadog/agent:latest
env:
DD_API_KEY: ${{ secrets.DATADOG_API_KEY }}
DD_HOSTNAME: none
DD_INSIDE_CI: true
ports:
- 8126:8126
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Analyze
uses: codacy/codacy-analysis-cli-action@master
with:
project-token: ${{ secrets.CODACY_PROJECT_TOKEN }}
format: sarif
gh-code-scanning-compat: true
max-allowed-issues: 2147483647
output: sarif/codacy.sarif
verbose: true
## rejecting SARIF, as there are more runs than allowed (22 > 20)
# - name: Upload SARIF
# if: always()
# uses: github/codeql-action/upload-sarif@main
# with:
# sarif_file: sarif/codacy.sarif
# wait-for-processing: true
devskim:
name: DevSkim
runs-on: ubuntu-latest
env:
DD_ENV: ci
- 8126:8126
permissions:
actions: read
contents: read
security-events: write
services:
datadog-agent:
image: datadog/agent:latest
env:
DD_API_KEY: ${{ secrets.DATADOG_API_KEY }}
DD_HOSTNAME: none
DD_INSIDE_CI: true
ports:
- 8126:8126
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Scan
uses: microsoft/DevSkim-Action@v1
- name: Upload SARIF
uses: github/codeql-action/upload-sarif@v2
with:
sarif_file: devskim-results.sarif
wait-for-processing: true
install:
name: Install
runs-on: ubuntu-latest
env:
DD_ENV: ci
services:
datadog-agent:
image: datadog/agent:latest
env:
DD_API_KEY: ${{ secrets.DATADOG_API_KEY }}
DD_HOSTNAME: none
DD_INSIDE_CI: true
ports:
- 8126:8126
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Setup Node
uses: actions/setup-node@v3
with:
cache: yarn
check-latest: true
node-version: 'lts/*'
- name: Install dependencies
run: yarn install --immutable
# Stage 2: prepack
prepack:
name: Prepack
needs: install
runs-on: ubuntu-latest
env:
DD_ENV: ci
services:
datadog-agent:
image: datadog/agent:latest
env:
DD_API_KEY: ${{ secrets.DATADOG_API_KEY }}
DD_HOSTNAME: none
DD_INSIDE_CI: true
ports:
- 8126:8126
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Setup Node
uses: actions/setup-node@v3
with:
cache: yarn
check-latest: true
node-version: 'lts/*'
- name: Install dependencies
run: yarn install --immutable
- name: Prepack
run: yarn run --require dd-trace/init prepack
env:
DD_ENV: ci
DD_PROFILING_ENABLED: true
DD_SERVICE: quisi.do
DD_VERSION: ${{ github.sha }}
GITHUB_REPOSITORY: ${{ github.repository }}
GITHUB_SHA: ${{ github.sha }}
IMAGEKIT_KEY: ${{ secrets.IMAGEKIT_KEY }}
PATREON_OAUTH_CLIENT_ID: J_6jrNJZNibHylSF83UVl9I4OHZYf67RAsU0s7_LnH1N5BKF-vgOyweF3KQLOKm1
PATREON_OAUTH_REDIRECT_URI: https://a.quisi.do/patreon/
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: prepack
path: |
packages/*/.next/
packages/*/dist/
packages/*/out/
# Stage 3: lighthouse, prepublish, prepublish-applications
lighthouse:
name: Lighthouse
needs: prepack
runs-on: ubuntu-latest
env:
DD_ENV: ci
services:
datadog-agent:
image: datadog/agent:latest
env:
DD_API_KEY: ${{ secrets.DATADOG_API_KEY }}
DD_HOSTNAME: none
DD_INSIDE_CI: true
ports:
- 8126:8126
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Download artifacts
uses: actions/download-artifact@v3
with:
name: prepack
path: packages/
- name: Setup Node
uses: actions/setup-node@v3
with:
cache: yarn
check-latest: true
node-version: 'lts/*'
- name: Install dependencies
run: yarn install --immutable
- name: Audit
run: yarn packages/next run lighthouse:serve
- name: Validate
run: yarn packages/next run postlighthouse
- name: Upload report
if: always()
uses: actions/upload-artifact@v3
with:
name: lighthouse
path: |
packages/*/lighthouse.report.*
packages/*/lighthouse-*.devtoolslog.json
packages/*/lighthouse-*.trace.json
prepublish:
name: Prepublish
needs: prepack
runs-on: ubuntu-latest
env:
DD_ENV: ci
services:
datadog-agent:
image: datadog/agent:latest
env:
DD_API_KEY: ${{ secrets.DATADOG_API_KEY }}
DD_HOSTNAME: none
DD_INSIDE_CI: true
ports:
- 8126:8126
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Download artifacts
uses: actions/download-artifact@v3
with:
name: prepack
path: packages/
- name: Setup Node
uses: actions/setup-node@v3
with:
cache: yarn
check-latest: true
node-version: 'lts/*'
- name: Install dependencies
run: yarn install --immutable
- name: Prepublish
run: yarn run --require dd-trace/ci/init prepublish
env:
DD_API_KEY: ${{ secrets.DATADOG_API_KEY }}
DD_CIVISIBILITY_AGENTLESS_ENABLED: true
DD_ENV: ci
DD_SERVICE: quisi.do
# Run prepublish on applications, because prepublish won't be triggered for
# applications by the publish step.
prepublish-applications:
name: Prepublish applications
needs: prepack
runs-on: ubuntu-latest
env:
DD_ENV: ci
services:
datadog-agent:
image: datadog/agent:latest
env:
DD_API_KEY: ${{ secrets.DATADOG_API_KEY }}
DD_HOSTNAME: none
DD_INSIDE_CI: true
ports:
- 8126:8126
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Download artifacts
uses: actions/download-artifact@v3
with:
name: prepack
path: packages/
- name: Setup Node
uses: actions/setup-node@v3
with:
cache: yarn
check-latest: true
node-version: 'lts/*'
- name: Install dependencies
run: yarn install --immutable
- name: Prepublish quisi.do
run: yarn packages/next run prepublish
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: prepublish-applications
path: packages/*/jest/
# Stage 4: github-pages, npm, opensource-registry, sentry-release
datadog-sourcemaps:
name: Datadog sourcemaps
needs: [lighthouse, prepublish-applications]
runs-on: ubuntu-latest
env:
DD_ENV: ci
services:
datadog-agent:
image: datadog/agent:latest
env:
DD_API_KEY: ${{ secrets.DATADOG_API_KEY }}
DD_HOSTNAME: none
DD_INSIDE_CI: true
ports:
- 8126:8126
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Download artifacts
uses: actions/download-artifact@v3
with:
name: prepack
path: packages/
- name: Install dependencies
run: yarn install --immutable
- name: Upload Datadog sourcemaps
run: yarn packages/next run datadog:sourcemaps
env:
DATADOG_API_KEY: ${{ secrets.DATADOG_API_KEY }}
RELEASE_VERSION: ${{ github.sha }}
github-pages:
name: GitHub Pages
needs: [lighthouse, prepublish-applications]
runs-on: ubuntu-latest
env:
DD_ENV: ci
services:
datadog-agent:
image: datadog/agent:latest
env:
DD_API_KEY: ${{ secrets.DATADOG_API_KEY }}
DD_HOSTNAME: none
DD_INSIDE_CI: true
ports:
- 8126:8126
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Download artifacts
uses: actions/download-artifact@v3
with:
name: prepack
path: packages/
- name: Deploy
uses: JamesIves/github-pages-deploy-action@v4
with:
branch: gh-pages
clean: true
folder: packages/next/out/
single-commit: true
npm:
name: NPM
needs: [prepack, prepublish]
runs-on: ubuntu-latest
env:
DD_ENV: ci
services:
datadog-agent:
image: datadog/agent:latest
env:
DD_API_KEY: ${{ secrets.DATADOG_API_KEY }}
DD_HOSTNAME: none
DD_INSIDE_CI: true
ports:
- 8126:8126
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Download artifacts
uses: actions/download-artifact@v3
with:
name: prepack
path: packages/
- name: Setup Node
uses: actions/setup-node@v3
with:
cache: yarn
check-latest: true
node-version: 'lts/*'
- name: Install dependencies
run: yarn install --immutable
- name: Publish
env:
NPM_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }}
run: >
yarn config set npmAuthToken $NPM_AUTH_TOKEN;
yarn run publish;
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: npm
path: packages/*/jest/
opensource-registry:
name: OpenSource registry
needs: [prepack, prepublish]
runs-on: ubuntu-latest
env:
DD_ENV: ci
services:
datadog-agent:
image: datadog/agent:latest
env:
DD_API_KEY: ${{ secrets.DATADOG_API_KEY }}
DD_HOSTNAME: none
DD_INSIDE_CI: true
ports:
- 8126:8126
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Download artifacts
uses: actions/download-artifact@v3
with:
name: prepack
path: packages/
- name: Setup Node
uses: actions/setup-node@v3
with:
cache: yarn
check-latest: true
node-version: 'lts/*'
registry-url: 'https://npm-publish.opensourceregistry.com'
- name: Install dependencies
run: yarn install --immutable
- name: Publish
env:
NPM_AUTH_TOKEN: ${{ secrets.OPENSOURCE_REGISTRY_NPM_TOKEN }}
run: >
yarn config set npmAuthToken $NPM_AUTH_TOKEN;
yarn run publish;
sentry-release:
name: Sentry release
needs: [lighthouse, prepublish-applications]
runs-on: ubuntu-latest
env:
DD_ENV: ci
services:
datadog-agent:
image: datadog/agent:latest
env:
DD_API_KEY: ${{ secrets.DATADOG_API_KEY }}
DD_HOSTNAME: none
DD_INSIDE_CI: true
ports:
- 8126:8126
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Download artifacts
uses: actions/download-artifact@v3
with:
name: prepack
path: packages/
- name: Sentry release
uses: getsentry/action-release@v1
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_LOG_LEVEL: info
SENTRY_ORG: quisido
SENTRY_PROJECT: quisi-do
with:
environment: production
sourcemaps: build
version: ${{ github.sha }}
# Stage 5: cloudflare-purge, github-packages, wrangler-deploy-*
cloudflare-purge:
name: Cloudflare purge
needs: github-pages
runs-on: ubuntu-latest
env:
DD_ENV: ci
services:
datadog-agent:
image: datadog/agent:latest
env:
DD_API_KEY: ${{ secrets.DATADOG_API_KEY }}
DD_HOSTNAME: none
DD_INSIDE_CI: true
ports:
- 8126:8126
steps:
- name: Purge Cloudflare files
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_PURGE_API_TOKEN }}
CLOUDFLARE_ZONE_ID: ${{ secrets.CLOUDFLARE_ZONE_ID }}
run: >
curl \
--data '{
"files": [
"https://quisi.do",
"https://quisi.do/index.html"
]
}' \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--header "Content-Type:application/json" \
--request POST \
"https://api.cloudflare.com/client/v4/zones/$CLOUDFLARE_ZONE_ID/purge_cache"
github-packages:
name: GitHub Packages
needs: npm
runs-on: ubuntu-latest
env:
DD_ENV: ci
permissions:
contents: read
packages: write
services:
datadog-agent:
image: datadog/agent:latest
env:
DD_API_KEY: ${{ secrets.DATADOG_API_KEY }}
DD_HOSTNAME: none
DD_INSIDE_CI: true
ports:
- 8126:8126
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Download artifacts
uses: actions/download-artifact@v3
with:
name: prepack
path: packages/
- name: Setup Node
uses: actions/setup-node@v3
with:
cache: yarn
check-latest: true
node-version: 'lts/*'
registry-url: 'https://npm.pkg.github.com'
scope: '@${{ github.repository_owner }}'
- name: Install dependencies
run: yarn install --immutable
- name: Publish
env:
NPM_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: >
yarn config set npmAuthToken $NPM_AUTH_TOKEN;
yarn config set \
npmScopes.${{ github.repository_owner }}.npmPublishRegistry \
'https://npm.pkg.github.com';
yarn run publish;
wrangler-deploy-authn:
name: Wrangler deploy Authentication
needs: [lighthouse, npm, prepublish-applications]
runs-on: ubuntu-latest
env:
DD_ENV: ci
services:
datadog-agent:
image: datadog/agent:latest
env:
DD_API_KEY: ${{ secrets.DATADOG_API_KEY }}
DD_HOSTNAME: none
DD_INSIDE_CI: true
ports:
- 8126:8126
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Setup Node
uses: actions/setup-node@v3
with:
cache: yarn
check-latest: true
node-version: 'lts/*'
- name: Install dependencies
run: yarn install --immutable
- name: Deploy
run: yarn packages/authn run production:deploy
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_EDIT_WORKERS_API_TOKEN }}
wrangler-deploy-cloudflare-analytics:
name: Wrangler deploy Cloudflare Analytics
needs: [lighthouse, npm, prepublish-applications]
runs-on: ubuntu-latest
env:
DD_ENV: ci
services:
datadog-agent:
image: datadog/agent:latest
env:
DD_API_KEY: ${{ secrets.DATADOG_API_KEY }}
DD_HOSTNAME: none
DD_INSIDE_CI: true
ports:
- 8126:8126
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Setup Node
uses: actions/setup-node@v3
with:
cache: yarn
check-latest: true
node-version: 'lts/*'
- name: Install dependencies
run: yarn install --immutable
- name: Deploy
run: yarn packages/cloudflare-analytics run deploy
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_EDIT_WORKERS_API_TOKEN }}
# Stage 6: neuralegion
neuralegion:
name: NeuraLegion
needs: cloudflare-purge
runs-on: ubuntu-latest
env:
DD_ENV: ci
services:
datadog-agent:
image: datadog/agent:latest
env:
DD_API_KEY: ${{ secrets.DATADOG_API_KEY }}
DD_HOSTNAME: none
DD_INSIDE_CI: true
ports:
- 8126:8126
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Scan
continue-on-error: true
# id: scan
uses: NeuraLegion/run-scan@release
with:
api_token: ${{ secrets.NEURALEGION_TOKEN }}
name: GitHub SHA - ${{ github.sha }}
crawler_urls: |
["https://quisi.do/"]
discovery_types: |
["crawler"]
# - name: Wait for breakpoint
# continue-on-error: true
# uses: NeuraLegion/wait-for@release
# with:
# api_token: ${{ secrets.NEURALEGION_TOKEN }}
# code_scanning_alerts: true
# github_token: ${{ secrets.GITHUB_TOKEN }}
# scan: ${{ steps.scan.outputs.id }}
# timeout: 600
# wait_for: any
on:
push:
branches: [main]
workflow_dispatch: