diff --git a/.github/workflows/argus-stack-prod-upsert.yaml b/.github/workflows/argus-stack-prod-upsert.yaml index b40a640a2..c42dd923a 100644 --- a/.github/workflows/argus-stack-prod-upsert.yaml +++ b/.github/workflows/argus-stack-prod-upsert.yaml @@ -4,16 +4,21 @@ on: release: types: [published] +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + jobs: prod_stack_upsert: runs-on: [ARM64, self-hosted, Linux] permissions: - id-token: write - contents: read + id-token: write + issues: write + pull-requests: write steps: - name: Upsert Prod Stack - uses: chanzuckerberg/argus-artifacts/ci/packages/create-stack@v0.19.1 + uses: chanzuckerberg/argus-artifacts/ci/packages/create-stack@v0.23.0 with: appName: single-cell-explorer envName: prod diff --git a/.github/workflows/argus-stack-rdev-create.yaml b/.github/workflows/argus-stack-rdev-create.yaml index 25406fd4e..d0bde8abc 100644 --- a/.github/workflows/argus-stack-rdev-create.yaml +++ b/.github/workflows/argus-stack-rdev-create.yaml @@ -4,17 +4,22 @@ on: pull_request: types: [ labeled, synchronize ] +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + jobs: create-rdev-stack: runs-on: [ARM64, self-hosted, Linux] if: contains(github.event.pull_request.labels.*.name, 'stack') permissions: - id-token: write - contents: read + id-token: write + issues: write + pull-requests: write steps: - name: Create Stack - uses: chanzuckerberg/argus-artifacts/ci/packages/create-stack@v0.19.1 + uses: chanzuckerberg/argus-artifacts/ci/packages/create-stack@v0.23.0 with: appName: single-cell-explorer envName: rdev diff --git a/.github/workflows/argus-stack-rdev-delete.yaml b/.github/workflows/argus-stack-rdev-delete.yaml index 484a1356d..fd96c2cb5 100644 --- a/.github/workflows/argus-stack-rdev-delete.yaml +++ b/.github/workflows/argus-stack-rdev-delete.yaml @@ -9,12 +9,13 @@ jobs: runs-on: [ARM64, self-hosted, Linux] if: ${{ !contains(github.event.pull_request.labels.*.name, 'stack') || github.event.pull_request.state == 'closed' }} permissions: - id-token: write - contents: read + id-token: write + issues: write + pull-requests: write steps: - name: Delete Stack - uses: chanzuckerberg/argus-artifacts/ci/packages/delete-stack@v0.19.1 + uses: chanzuckerberg/argus-artifacts/ci/packages/delete-stack@v0.23.0 with: appName: single-cell-explorer envName: rdev diff --git a/.github/workflows/argus-stack-staging-upsert.yaml b/.github/workflows/argus-stack-staging-upsert.yaml index 98e5f4631..1df68a9b7 100644 --- a/.github/workflows/argus-stack-staging-upsert.yaml +++ b/.github/workflows/argus-stack-staging-upsert.yaml @@ -6,6 +6,10 @@ on: - '.infra/common.yaml' - '.infra/staging/values.yaml' +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + jobs: run_if: if: github.head_ref == 'release-please--branches--main' @@ -17,19 +21,21 @@ jobs: needs: run_if runs-on: [ARM64, self-hosted, Linux] permissions: - id-token: write - contents: read + id-token: write + issues: write + pull-requests: write steps: - name: Upsert Staging Stack - uses: chanzuckerberg/argus-artifacts/ci/packages/create-stack@v0.19.1 + uses: chanzuckerberg/argus-artifacts/ci/packages/create-stack@v0.23.0 with: appName: single-cell-explorer envName: staging + waitForDeploymentSeconds: 300 - - name: Wait for Stating Stack to become Healthy - id: wait - uses: chanzuckerberg/argus-artifacts/ci/packages/wait-for-deployment@v0.19.1 - with: - appName: single-cell-explorer - envName: staging + staging_smoke_test: + uses: ./.github/workflows/workflow-smoke-test.yaml + needs: staging_stack_upsert + secrets: inherit + with: + env: stage diff --git a/.github/workflows/workflow-smoke-test.yaml b/.github/workflows/workflow-smoke-test.yaml new file mode 100644 index 000000000..b2ecc3fde --- /dev/null +++ b/.github/workflows/workflow-smoke-test.yaml @@ -0,0 +1,61 @@ +name: Smoke Test + +on: + workflow_call: + inputs: + env: + description: 'Env name' + required: true + type: string + +jobs: + smoke-test: + # (thuang): We now run the smoke tests against 2 datasets sequentially, so need longer timeout + timeout-minutes: 60 + runs-on: ubuntu-22.04 + defaults: + run: + working-directory: ./client + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - uses: actions/setup-node@v4 + with: + node-version-file: "client/.nvmrc" + cache: "npm" + cache-dependency-path: "client/package-lock.json" + - name: Install dependencies + run: | + npm ci + npx playwright install --with-deps + + # Run e2e tests + - name: Run e2e tests + run: | + npm run e2e-${{ inputs.env }} + + - name: Publish to Chromatic + uses: chromaui/action@latest + with: + # ⚠️ Make sure to configure a `CHROMATIC_PROJECT_TOKEN` repository secret + projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }} + workingDir: ./client + # This is `npm run build-archive-storybook` + buildScriptName: "build-archive-storybook" + + - name: Upload FE test results as an artifact + if: always() + uses: actions/upload-artifact@v3 + with: + name: playwright-report + path: ~/**/playwright-report/* + retention-days: 14 + + - name: Upload blob report to GitHub Actions Artifacts + if: always() + uses: actions/upload-artifact@v3 + with: + name: all-blob-reports + path: ~/**/blob-report/* + retention-days: 1 diff --git a/.infra/rdev/values.yaml b/.infra/rdev/values.yaml index af688adf4..0a41cb458 100644 --- a/.infra/rdev/values.yaml +++ b/.infra/rdev/values.yaml @@ -2,7 +2,7 @@ stack: services: explorer: image: - tag: sha-7764ea31 + tag: sha-312771fe replicaCount: 1 env: # env vars common to all deployment stages