Fixes #2459 - Set `/data/` as primary storage `access_endpoint_url` in nightly test chart - Modify nightly test GH Actions workflow to spawn a separate job per nightly test module using dynamic matrix - Set configuration not to fail other jobs if one job fails - Modify failing tests: - Add fixture to background job nightly test module so it can run alone - Add retry loop to crawlconfig stats nightly test so it's less dependent on timing GitHub limits each workflow to 256 jobs, so this should continue to be able to scale up for us without issue. --------- Co-authored-by: Ilya Kreymer <ikreymer@users.noreply.github.com>
110 lines
3.2 KiB
YAML
110 lines
3.2 KiB
YAML
name: Nightly tests (K3d)
|
|
|
|
on:
|
|
schedule:
|
|
# Run daily at 8am UTC
|
|
- cron: '0 8 * * *'
|
|
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
collect-test-modules:
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
matrix: ${{ steps.set-matrix.outputs.matrix }}
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- id: set-matrix
|
|
run: |
|
|
echo matrix="$(ls ./backend/test_nightly/ | grep -o "^test_.*" | jq -R -s -c 'split("\n")[:-1]')" >> $GITHUB_OUTPUT
|
|
|
|
btrix-k3d-nightly-test:
|
|
name: ${{ matrix.module }}
|
|
needs: collect-test-modules
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
module: ${{fromJSON(needs.collect-test-modules.outputs.matrix)}}
|
|
fail-fast: false
|
|
steps:
|
|
- name: Create k3d Cluster
|
|
uses: AbsaOSS/k3d-action@v2
|
|
with:
|
|
cluster-name: btrix-nightly
|
|
args: >-
|
|
-p "30870:30870@agent:0:direct"
|
|
-p "30090:30090@agent:0:direct"
|
|
--agents 1
|
|
--no-lb
|
|
--k3s-arg "--disable=traefik,servicelb@server:*"
|
|
|
|
- name: Checkout
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v2
|
|
with:
|
|
driver-opts: network=host
|
|
|
|
- name: Build Backend
|
|
uses: docker/build-push-action@v3
|
|
with:
|
|
context: backend
|
|
load: true
|
|
#outputs: type=tar,dest=backend.tar
|
|
tags: webrecorder/browsertrix-backend:latest
|
|
cache-from: type=gha,scope=backend
|
|
cache-to: type=gha,scope=backend,mode=max
|
|
|
|
- name: Build Frontend
|
|
uses: docker/build-push-action@v3
|
|
with:
|
|
context: frontend
|
|
load: true
|
|
#outputs: type=tar,dest=frontend.tar
|
|
tags: webrecorder/browsertrix-frontend:latest
|
|
cache-from: type=gha,scope=frontend
|
|
cache-to: type=gha,scope=frontend,mode=max
|
|
|
|
- name: 'Import Images'
|
|
run: |
|
|
k3d image import webrecorder/browsertrix-backend:latest -m direct -c btrix-nightly --verbose
|
|
k3d image import webrecorder/browsertrix-frontend:latest -m direct -c btrix-nightly --verbose
|
|
|
|
- name: Install Kubectl
|
|
uses: azure/setup-kubectl@v3
|
|
|
|
- name: Install Helm
|
|
uses: azure/setup-helm@v3
|
|
with:
|
|
version: 3.10.2
|
|
|
|
- name: Start Cluster with Helm
|
|
run: |
|
|
helm upgrade --install -f ./chart/values.yaml -f ./chart/test/test.yaml -f ./chart/test/test-nightly-addons.yaml btrix ./chart/
|
|
|
|
- name: Install Python
|
|
uses: actions/setup-python@v3
|
|
with:
|
|
python-version: '3.9'
|
|
|
|
- name: Install Python Libs
|
|
run: pip install -r ./backend/test-requirements.txt
|
|
|
|
- name: Wait for all pods to be ready
|
|
run: kubectl wait --for=condition=ready pod --all --timeout=240s
|
|
|
|
- name: Create Extra Test Buckets
|
|
run: kubectl exec -i deployment/local-minio -c minio -- mkdir /data/replica-0
|
|
|
|
- name: Run Tests
|
|
run: pytest -vv ./backend/test_nightly/${{ matrix.module }}
|
|
|
|
- name: Print Backend Logs (API)
|
|
if: ${{ failure() }}
|
|
run: kubectl logs svc/browsertrix-cloud-backend -c api
|
|
|
|
- name: Print Backend Logs (Operator)
|
|
if: ${{ failure() }}
|
|
run: kubectl logs svc/browsertrix-cloud-backend -c op
|