Nightly Build with System Tests #542
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: 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 | |