Workflow file for this run
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: E2E test (on kubernetes) | |
on: | |
workflow_dispatch: | |
push: | |
paths: | |
- "website/**" | |
- "backend/**" | |
- "kubernetes/**" | |
- "preprocessing/**" | |
- "deploy.py" | |
- ".github/scripts/**" | |
- ".github/workflows/**" | |
concurrency: | |
group: ci-${{ github.ref == 'refs/heads/main' && github.run_id || github.ref }}-e2e-k3d | |
cancel-in-progress: true | |
jobs: | |
k3d-e2e: | |
permissions: | |
packages: read | |
contents: read | |
checks: read | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Install k3d | |
run: | | |
curl -s https://raw.githubusercontent.com/rancher/k3d/main/install.sh | bash | |
- name: Create k3d cluster | |
run: | | |
./deploy.py --verbose cluster | |
- name: Test helm template | |
uses: WyriHaximus/github-action-helm3@v4 | |
with: | |
exec: helm template does-not-matter ./kubernetes/loculus > defaultTemplate.yaml | |
- name: Upload default helm template | |
uses: actions/upload-artifact@v4 | |
with: | |
name: default-helm-template | |
path: defaultTemplate.yaml | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
- name: Cache .npm | |
uses: actions/cache@v4 | |
with: | |
path: ~/.npm | |
key: ${{ runner.os }}-node-${{ hashFiles('website/**/package-lock.json') }} | |
- name: Install dependencies | |
run: cd website && npm i | |
- name: Get Installed Playwright Version | |
id: playwright-version | |
run: cd website && echo "PLAYWRIGHT_VERSION=$(node -e "console.log(require('./package-lock.json').packages['node_modules/@playwright/test'].version)")" >> $GITHUB_ENV | |
- name: Cache Playwright Browsers | |
uses: actions/cache@v4 | |
id: playwright-cache | |
with: | |
path: ~/.cache/ms-playwright | |
key: ${{ runner.os }}-playwright-${{ env.PLAYWRIGHT_VERSION }} | |
- name: Install Playwright Browsers and System Dependencies | |
run: cd website && npx playwright install --with-deps | |
if: steps.playwright-cache.outputs.cache-hit != 'true' | |
- name: Install only System Dependencies | |
run: cd website && npx playwright install-deps | |
if: steps.playwright-cache.outputs.cache-hit == 'true' | |
- name: Wait for Backend Docker Image | |
uses: lewagon/wait-on-check-action@v1.3.3 | |
with: | |
ref: ${{ github.sha }} | |
check-name: Build Backend Docker Image | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Wait for Website Docker Image | |
uses: lewagon/wait-on-check-action@v1.3.3 | |
with: | |
ref: ${{ github.sha }} | |
check-name: Build Website Docker Image | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Deploy with helm | |
uses: WyriHaximus/github-action-helm3@v4 | |
with: | |
exec: ./deploy.py --verbose helm --branch ${{ github.ref_name }} --sha ${{ github.sha }} --dockerconfigjson ${{ secrets.GHCR_DOCKER_CONFIG }} | |
- name: Wait for the pods to be ready | |
run: ./.github/scripts/wait_for_pods_to_be_ready.py | |
- name: Sleep for 20 secs | |
run: sleep 20 | |
- name: Run E2E test | |
run: cd website && npm run e2e | |
- uses: actions/upload-artifact@v4 | |
if: ${{ failure() }} | |
with: | |
name: playwright-report | |
path: website/playwright-report/ | |
retention-days: 30 | |
- name: List running pods | |
if: ${{ !cancelled() }} | |
run: kubectl get pods --all-namespaces | |
- name: Describe pods | |
if: ${{ !cancelled() }} | |
run: kubectl describe pods -l app=loculus | |
- name: Show events | |
if: ${{ !cancelled() }} | |
run: kubectl get events | |
- name: Save logs from all containers to file | |
if: ${{ !cancelled() }} | |
run: ./.github/scripts/collect_kubernetes_logs.sh | |
- name: Upload Kubernetes logs | |
if: ${{ !cancelled() }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: kubernetes-logs | |
path: kubernetes_logs/ |