Skip to content

Nightly Build with System Tests #538

Nightly Build with System Tests

Nightly Build with System Tests #538

name: Nightly Build with System Tests
on:
schedule:
- cron: "0 1 * * MON" # At 01:00 on Monday
workflow_dispatch:
jobs:
prepare-environment:
runs-on: [self-hosted, linux]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.12'
cache: 'pip'
- name: Install dependencies
run: pip install -r requirements.txt --no-cache-dir
- name: Install SOCBED
run: pip install --editable .
build-machines:
runs-on: [self-hosted, linux]
needs: [prepare-environment]
timeout-minutes: 480
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.12'
cache: 'pip'
- name: Build Internet Router
uses: nick-invision/retry@v3
with:
timeout_minutes: 60
max_attempts: 3
command: ./tools/build_internetrouter runner
- name: Build Company Router
uses: nick-invision/retry@v3
with:
timeout_minutes: 60
max_attempts: 3
command: ./tools/build_companyrouter runner
- name: Build Attacker
uses: nick-invision/retry@v3
with:
timeout_minutes: 180
max_attempts: 3
command: ./tools/build_attacker runner
- name: Build Log Server
uses: nick-invision/retry@v3
with:
timeout_minutes: 120
max_attempts: 3
command: ./tools/build_logserver runner
- name: Build Internal Server
uses: nick-invision/retry@v3
with:
timeout_minutes: 60
max_attempts: 3
command: ./tools/build_internalserver runner
- name: Build DMZ Server
uses: nick-invision/retry@v3
with:
timeout_minutes: 60
max_attempts: 3
command: ./tools/build_dmzserver runner
- name: Build Client
uses: nick-invision/retry@v3
with:
timeout_minutes: 180
max_attempts: 3
command: ./tools/build_client runner
- name: Run logging setup
uses: nick-invision/retry@v3
with:
timeout_minutes: 60
max_attempts: 3
command: ./tools/logging_setup
test-machines:
runs-on: [self-hosted, linux]
needs: [build-machines]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.12'
cache: 'pip'
- name: Ensure all machines are powered off
run: ./tools/cleanup_failed_session
- name: Run stable system tests
uses: nick-invision/retry@v3
with:
timeout_minutes: 60
max_attempts: 5
on_retry_command: ./tools/cleanup_failed_session
command: tox -- -m "systest and not unstable"
delete-machines:
runs-on: [self-hosted, linux]
if: always()
needs: [test-machines]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.12'
cache: 'pip'
- name: Delete created VMs
run: ./tools/delete_vms
- name: Uninstall SOCBED
run: pip uninstall socbed -y
- name: Remove all installed packages
run: pip freeze | xargs pip uninstall -y