browsertrix/.github/workflows/k3d-nightly-ci.yaml
Ilya Kreymer fb3d88291f
Background Jobs Work (#1321)
Fixes #1252 

Supports a generic background job system, with two background jobs,
CreateReplicaJob and DeleteReplicaJob.
- CreateReplicaJob runs on new crawls, uploads, profiles and updates the
`replicas` array with the info about the replica after the job succeeds.
- DeleteReplicaJob deletes the replica.
- Both jobs are created from the new `replica_job.yaml` template. The
CreateReplicaJob sets secrets for primary storage + replica storage,
while DeleteReplicaJob only needs the replica storage.
- The job is processed in the operator when the job is finalized
(deleted), which should happen immediately when the job is done, either
because it succeeds or because the backoffLimit is reached (currently
set to 3).
- /jobs/ api lists all jobs using a paginated response, including filtering and sorting
- /jobs/<job id> returns details for a particular job
- tests: nightly tests updated to check create + delete replica jobs for crawls as well as uploads, job api endpoints
- tests: also fixes to timeouts in nightly tests to avoid crawls finishing too quickly.

---------
Co-authored-by: Tessa Walsh <tessa@bitarchivist.net>
2023-11-02 13:02:17 -07:00

92 lines
2.7 KiB
YAML

name: Nightly tests (K3d)
on:
schedule:
# Run daily at 8am UTC
- cron: '0 8 * * *'
jobs:
btrix-k3d-nightly-test:
runs-on: ubuntu-latest
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/test_*.py
- 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