* tests: - fix cancel crawl test by ensuring state is not running or waiting - fix stop crawl test by ensuring stop is only initiated after at least one page has been crawled, otherwise result may be failed, as no crawl data has been crawled yet (separate fix in crawler to avoid loop if stopped before any data written webrecorder/browsertrix-crawler#314) - bump page limit to 4 for tests to ensure crawl is partially complete, not fully complete when stopping - allow canceled or partial_complete due to race condition * chart: bump frontend limits in default, not just for tests (addresses #780) * crawl stop before starting: - if crawl stopped before it started, mark as canceled - add test for stopping immediately, which should result in 'canceled' crawl - attempt to increase resync interval for immediate failure - nightly tests: increase page limit to test timeout * backend: - detect stopped-before-start crawl as 'failed' instead of 'done' - stats: return stats counters as int instead of string
84 lines
2.4 KiB
YAML
84 lines
2.4 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"
|
|
--agents 1
|
|
--no-lb
|
|
--k3s-arg "--no-deploy=traefik,servicelb,metrics-server@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 --set invite_expire_seconds=10 --set max_pages_per_crawl=10 btrix ./chart/
|
|
|
|
- name: Install Python
|
|
uses: actions/setup-python@v3
|
|
with:
|
|
python-version: '3.9'
|
|
|
|
- name: Install Python Libs
|
|
run: pip install pytest requests
|
|
|
|
- name: Wait for all pods to be ready
|
|
run: kubectl wait --for=condition=ready pod --all --timeout=240s
|
|
|
|
- name: Run Tests
|
|
run: pytest -vv ./backend/test_nightly/*.py
|
|
|
|
- name: Print Backend Logs
|
|
if: ${{ failure() }}
|
|
run: kubectl logs svc/browsertrix-cloud-backend
|