fix: add graceful shutdown timeout (#196) #132
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Create Release | |
on: | |
push: | |
branches: | |
- main | |
- '[0-9]+.*' | |
jobs: | |
createReleaseVersion: | |
name: Create Release Version | |
runs-on: ubuntu-latest | |
permissions: | |
contents: write | |
pull-requests: write | |
outputs: | |
releaseVersion: ${{ steps.release.outputs.releaseVersion }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Setup Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: '18' | |
cache: 'npm' | |
- name: Install dependencies | |
run: | | |
npm ci | |
- name: Lint | |
run: | | |
npm run lint -- -- --no-fix --max-warnings 0 | |
- name: Test | |
run: | | |
npm run test:ci | |
- name: App type check | |
working-directory: ./packages/app | |
run: | | |
npm run typecheck | |
- name: Create Release Version | |
id: release | |
env: | |
GITHUB_TOKEN: ${{ github.token }} | |
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} | |
run: | | |
VITE_APP_ENVIRONMENT=production \ | |
npx semantic-release | |
deployBackendToStaging: | |
name: Deploy Block Explorer backend to staging | |
runs-on: [matterlabs-ci-runner] | |
permissions: | |
contents: read | |
needs: createReleaseVersion | |
if: ${{ github.ref == 'refs/heads/main' && needs.createReleaseVersion.outputs.releaseVersion != '' }} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Docker Build | |
uses: docker/setup-buildx-action@v2 | |
- name: Log in to Docker Hub | |
uses: docker/login-action@v2 | |
with: | |
username: ${{ secrets.DOCKERHUB_USER }} | |
password: ${{ secrets.DOCKERHUB_TOKEN }} | |
- name: Generate build ID for Flux Image Automation | |
id: setVersionForFlux | |
run: | | |
sha=$(git rev-parse --short HEAD) | |
ts=$(date +%s%N | cut -b1-13) | |
echo "::set-output name=imageTag::${sha}-${ts}" | |
- name: Auth to google artifact registry | |
run: | | |
gcloud auth configure-docker us-docker.pkg.dev -q | |
- name: Build and push Docker image for API | |
uses: docker/build-push-action@v4 | |
with: | |
push: true | |
tags: | | |
"matterlabs/block-explorer-api:latest" | |
"matterlabs/block-explorer-api:v${{ needs.createReleaseVersion.outputs.releaseVersion }}" | |
"matterlabs/block-explorer-api:${{ steps.setVersionForFlux.outputs.imageTag }}" | |
"us-docker.pkg.dev/matterlabs-infra/matterlabs-docker/block-explorer-api:latest" | |
"us-docker.pkg.dev/matterlabs-infra/matterlabs-docker/block-explorer-api:v${{ needs.createReleaseVersion.outputs.releaseVersion }}" | |
"us-docker.pkg.dev/matterlabs-infra/matterlabs-docker/block-explorer-api:${{ steps.setVersionForFlux.outputs.imageTag }}" | |
file: packages/api/Dockerfile | |
no-cache: true | |
- name: Build and push Docker image for Worker | |
uses: docker/build-push-action@v4 | |
with: | |
push: true | |
tags: | | |
"matterlabs/block-explorer-worker:latest" | |
"matterlabs/block-explorer-worker:v${{ needs.createReleaseVersion.outputs.releaseVersion }}" | |
"matterlabs/block-explorer-worker:${{ steps.setVersionForFlux.outputs.imageTag }}" | |
"us-docker.pkg.dev/matterlabs-infra/matterlabs-docker/block-explorer-worker:latest" | |
"us-docker.pkg.dev/matterlabs-infra/matterlabs-docker/block-explorer-worker:v${{ needs.createReleaseVersion.outputs.releaseVersion }}" | |
"us-docker.pkg.dev/matterlabs-infra/matterlabs-docker/block-explorer-worker:${{ steps.setVersionForFlux.outputs.imageTag }}" | |
file: packages/worker/Dockerfile | |
no-cache: true | |
- name: Build and push Docker image for Data Fetcher | |
uses: docker/build-push-action@v4 | |
with: | |
push: true | |
tags: | | |
"matterlabs/block-explorer-data-fetcher:latest" | |
"matterlabs/block-explorer-data-fetcher:v${{ needs.createReleaseVersion.outputs.releaseVersion }}" | |
"matterlabs/block-explorer-data-fetcher:${{ steps.setVersionForFlux.outputs.imageTag }}" | |
"us-docker.pkg.dev/matterlabs-infra/matterlabs-docker/block-explorer-data-fetcher:latest" | |
"us-docker.pkg.dev/matterlabs-infra/matterlabs-docker/block-explorer-data-fetcher:v${{ needs.createReleaseVersion.outputs.releaseVersion }}" | |
"us-docker.pkg.dev/matterlabs-infra/matterlabs-docker/block-explorer-data-fetcher:${{ steps.setVersionForFlux.outputs.imageTag }}" | |
file: packages/data-fetcher/Dockerfile | |
no-cache: true | |
- name: Build and push Docker image for App | |
uses: docker/build-push-action@v4 | |
with: | |
push: true | |
tags: | | |
"matterlabs/block-explorer-app:latest" | |
"matterlabs/block-explorer-app:v${{ needs.createReleaseVersion.outputs.releaseVersion }}" | |
"matterlabs/block-explorer-app:${{ steps.setVersionForFlux.outputs.imageTag }}" | |
"us-docker.pkg.dev/matterlabs-infra/matterlabs-docker/block-explorer-app:latest" | |
"us-docker.pkg.dev/matterlabs-infra/matterlabs-docker/block-explorer-app:v${{ needs.createReleaseVersion.outputs.releaseVersion }}" | |
"us-docker.pkg.dev/matterlabs-infra/matterlabs-docker/block-explorer-app:${{ steps.setVersionForFlux.outputs.imageTag }}" | |
file: packages/app/Dockerfile | |
no-cache: true | |
deployFrontendToStaging: | |
name: Deploy Block Explorer frontend to staging | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
needs: createReleaseVersion | |
if: ${{ github.ref == 'refs/heads/main' && needs.createReleaseVersion.outputs.releaseVersion != '' }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Download Dist package | |
uses: dsaltares/fetch-gh-release-asset@master | |
with: | |
version: "tags/v${{ needs.createReleaseVersion.outputs.releaseVersion }}" | |
file: "dist.zip" | |
target: "dist.zip" | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Unzip Dist package | |
run: | | |
unzip dist.zip -d packages/app | |
- name: Update config | |
run: | | |
echo "window[\"##runtimeConfig\"] = { appEnvironment: \"staging\", sentryDSN: \"${{ vars.SENTRY_DSN }}\" };" > packages/app/dist/config.js | |
- name: Download Storybook package | |
uses: dsaltares/fetch-gh-release-asset@master | |
with: | |
version: "tags/v${{ needs.createReleaseVersion.outputs.releaseVersion }}" | |
file: "storybook-static.zip" | |
target: "storybook-static.zip" | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Unzip Storybook package | |
run: | | |
unzip storybook-static.zip -d packages/app | |
- name: Deploy | |
uses: matter-labs/action-hosting-deploy@main | |
id: deploy | |
with: | |
repoToken: "${{ secrets.GITHUB_TOKEN }}" | |
firebaseServiceAccount: "${{ secrets.FIREBASE_SERVICE_ACCOUNT_STAGING_SCAN_V2 }}" | |
projectId: staging-scan-v2 | |
channelID: live | |
entryPoint: ./packages/app |