chore(deps): upgrade all keycloakify components in one go #4566
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 | |
actions: read # Required by workflow-telemetry-action | |
runs-on: ubuntu-latest-m | |
timeout-minutes: 30 | |
env: | |
ALL_BROWSERS: ${{ github.ref == 'refs/heads/main' && 'true' || 'false' }} | |
steps: | |
- name: Collect Workflow Telemetry | |
uses: catchpoint/workflow-telemetry-action@v2 | |
- 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-file: ./website/.nvmrc | |
- 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/wait-on-check-action@v1.3.4 | |
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/wait-on-check-action@v1.3.4 | |
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/wait-on-check-action@v1.3.4 | |
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/wait-on-check-action@v1.3.4 | |
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 2>&1 | tee output.txt | |
echo '```' >> $GITHUB_STEP_SUMMARY | |
sed -n '/Running [0-9]\+ tests/,$p' output.txt >> $GITHUB_STEP_SUMMARY | |
echo '```' >> $GITHUB_STEP_SUMMARY | |
- 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/ |