update #4231
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: | |
- "backend/**" | |
- "keycloak/**" | |
- "kubernetes/**" | |
- "website/**" | |
- "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-m | |
timeout-minutes: 30 | |
env: | |
ALL_BROWSERS: ${{ github.ref == 'refs/heads/main' && 'true' || 'false' }} | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Install k3d | |
run: | | |
curl -s https://raw.githubusercontent.com/rancher/k3d/main/install.sh | bash | |
- uses: azure/setup-helm@v4 | |
- name: Create k3d cluster | |
run: | | |
./deploy.py --verbose cluster | |
- name: Template with helm | |
uses: WyriHaximus/github-action-helm3@v4 | |
with: | |
exec: ./deploy.py --verbose helm --branch ${{ github.ref_name }} --sha ${{ github.sha }} --for-e2e --template > /tmp/helm_template.yaml | |
- name: Upload default helm template | |
uses: actions/upload-artifact@v4 | |
with: | |
name: helm-template | |
path: /tmp/helm_template.yaml | |
- name: Deploy with helm | |
run: | | |
./deploy.py --verbose helm --branch ${{ github.ref_name }} --sha ${{ github.sha }} --for-e2e | |
- 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' | |
# Waits are identical to the update-argocd-metadata.yml file | |
# Mirror changes to that file | |
- name: Wait for Config Processor Docker Image | |
uses: lewagon/[email protected] | |
with: | |
ref: ${{ github.sha }} | |
check-name: Build config-processor Docker Image | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
wait-interval: 2 | |
- name: Wait for Backend Docker Image | |
uses: lewagon/[email protected] | |
with: | |
ref: ${{ github.sha }} | |
check-name: Build Backend Docker Image | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
wait-interval: 2 | |
- name: Wait for Website Docker Image | |
uses: lewagon/[email protected] | |
with: | |
ref: ${{ github.sha }} | |
check-name: Build Website Docker Image | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
wait-interval: 2 | |
- name: Wait for Keycloakify Docker Image | |
uses: lewagon/[email protected] | |
with: | |
ref: ${{ github.sha }} | |
check-name: Build keycloakify Docker Image | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
wait-interval: 2 | |
# End of wait block | |
- name: Wait for the pods to be ready (timeout 480s) | |
run: ./.github/scripts/wait_for_pods_to_be_ready.py | |
- name: Sleep for 10 secs | |
run: sleep 10 | |
- 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: Upload Test Results | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: test-results | |
path: website/test-results/ | |
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/ |