Skip to content

Nightly Build with System Tests #401

Nightly Build with System Tests

Nightly Build with System Tests #401

name: Nightly Build with System Tests
on:
schedule:
- cron: "0 1 * * MON,WED,FRI" # At 01:00 on Monday, Wednesday and Friday
workflow_dispatch:
jobs:
prepare-environment:
runs-on: [self-hosted, linux]
steps:
- uses: actions/checkout@v3
- name: Create virtual environment
run: python3 -m venv /usr/share/runner-dependencies/socbed_env
- name: Activate virtual environment
run: source /usr/share/runner-dependencies/socbed_env/bin/activate
- name: Upgrade pip3 inside virtual environment
run: pip3 install --upgrade pip
- name: Install requirements in virtual environment (without using cached packages)
run: pip3 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@v3
- name: Activate virtual environment
run: source /usr/share/runner-dependencies/socbed_env/bin/activate
- name: Build Internet Router
uses: nick-invision/retry@v2
with:
timeout_minutes: 60
max_attempts: 3
command: ./tools/build_internetrouter runner
- name: Build Company Router
uses: nick-invision/retry@v2
with:
timeout_minutes: 60
max_attempts: 3
command: ./tools/build_companyrouter runner
- name: Build Attacker
uses: nick-invision/retry@v2
with:
timeout_minutes: 180
max_attempts: 3
command: ./tools/build_attacker runner
- name: Build Log Server
uses: nick-invision/retry@v2
with:
timeout_minutes: 120
max_attempts: 3
command: ./tools/build_logserver runner
- name: Build Internal Server
uses: nick-invision/retry@v2
with:
timeout_minutes: 60
max_attempts: 3
command: ./tools/build_internalserver runner
- name: Build DMZ Server
uses: nick-invision/retry@v2
with:
timeout_minutes: 60
max_attempts: 3
command: ./tools/build_dmzserver runner
- name: Build Client
uses: nick-invision/retry@v2
with:
timeout_minutes: 180
max_attempts: 3
command: ./tools/build_client runner
- name: Run logging setup
uses: nick-invision/retry@v2
with:
timeout_minutes: 60
max_attempts: 3
command: ./tools/logging_setup
test-machines:
runs-on: [self-hosted, linux]
needs: [prepare-environment, build-machines]
steps:
- uses: actions/checkout@v3
- name: Activate virtual environment
run: source /usr/share/runner-dependencies/socbed_env/bin/activate
- name: Ensure all machines are powered off
run: ./tools/cleanup_failed_session
- name: Run stable system tests
uses: nick-invision/retry@v2
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: [prepare-environment, build-machines, test-machines]
steps:
- uses: actions/checkout@v3
- name: Delete created VMs
run: ./tools/delete_vms
- name: Deactivate virtual environment
run: deactivate || true
- name: Delete virtual environment
run: rm -rf /usr/share/runner-dependencies/socbed_env