Skip to content

Nightly tests

Nightly tests #50

Workflow file for this run

name: Nightly tests
on:
schedule:
- cron: '0 0 * * *'
workflow_dispatch:
inputs:
test_env:
type: choice
description: 'Select the wether to run the tests in the CI environment or Production environment'
default: 'PROD'
options:
- CI
- PROD
notebooks:
description: 'The path to the notebooks to test. leave empty to test all notebooks'
required: false
defaults:
run:
working-directory: .tests
shell: bash
jobs:
tests:
permissions:
contents: 'read'
id-token: 'write'
strategy:
fail-fast: false
matrix: ${{ github.event.inputs.notebooks == '' && fromJson('{"idx":[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]}') || fromJson('{"idx":[0]}') }}
env:
CSAE_NOTEBOOKS: ${{ github.event.inputs.notebooks }}
CSAE_ENV_PASSWORD: ${{ secrets.CSAE_ENV_PASSWORD }}
CSAE_PARALLEL_TESTS_COUNT: ${{ vars.CSAE_PARALLEL_TESTS_COUNT }}
CSAE_WORKERS_COUNT: ${{ vars.CSAE_WORKERS_COUNT }}
CSAE_CI_JOB_IDX: ${{ matrix.idx }}
TEST_ENV: ${{ github.event.inputs.test_env || 'PROD' }}
CSAE_CI_JOB_COUNT: ${{ github.event.inputs.notebooks == '' && '10' || '1' }}
name: Job ${{ matrix.idx }}
timeout-minutes: 1440
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 16
- name: Define env name and GCP credentials
id: define-environment
run: |
echo "env-name=ci-$(date +%s%N)" >> $GITHUB_OUTPUT
if [ "${TEST_ENV}" == "CI" ]; then
echo "workload_identity_provider=projects/561066095864/locations/global/workloadIdentityPools/github/providers/jupyter-demos" >> $GITHUB_OUTPUT
echo "[email protected]" >> $GITHUB_OUTPUT
echo "gcp_project=clearscape-ci" >> $GITHUB_OUTPUT
echo "CSAE_CLEARSCAPE_API_KEY=${{ secrets.CSAE_CI_CLEARSCAPE_API_KEY }}" >> $GITHUB_ENV
else
echo "workload_identity_provider=projects/323844706402/locations/global/workloadIdentityPools/github/providers/jupyter-demos" >> $GITHUB_OUTPUT
echo "service_account=cicd-sa@clearscape-production.iam.gserviceaccount.com" >> $GITHUB_OUTPUT
echo "gcp_project=clearscape-production" >> $GITHUB_OUTPUT
echo "CSAE_CLEARSCAPE_API_KEY=${{ secrets.CSAE_CLEARSCAPE_API_KEY }}" >> $GITHUB_ENV
fi
- name: Authenticate with Google Cloud
id: auth
uses: 'google-github-actions/auth@v2'
with:
workload_identity_provider: ${{steps.define-environment.outputs.workload_identity_provider}}
service_account: ${{steps.define-environment.outputs.service_account}}
- name: Get secrets from Google Secret Manager
id: 'secrets'
uses: 'google-github-actions/get-secretmanager-secrets@v2'
with:
secrets: |-
OPENAI_API_KEY:${{steps.define-environment.outputs.gcp_project}}/JUPYTER_NOTEBOOK_CI_OPEN_AI_KEY
export_to_environment: true
- name: Install dependencies
run: npm ci
- name: Install Playwright browsers
run: |
npx playwright install --with-deps
- name: Find all Jupyter notebooks
run: find .. -name '*.ipynb' | sort > ./files.txt
- name: Start test environments
id: start-test-environment
run: npx ts-node pre_create_env.ts
- name: Run Playwright tests
run: |
npx playwright test
- name: Delete test environments
if: always()
run: npx ts-node post_delete_env.ts
- uses: actions/upload-artifact@v3
if: always()
with:
name: playwright-report-job-${{ matrix.idx }}
path: .tests/playwright-report/
retention-days: 30