81 lines
2.0 KiB
YAML
81 lines
2.0 KiB
YAML
name: Build and Deploy MITM Webserver
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: self-hosted
|
|
steps:
|
|
- name: Checkout code
|
|
run: |
|
|
cd /opt/mitm-webserver
|
|
git fetch origin main
|
|
git checkout main
|
|
git reset --hard origin/main
|
|
|
|
- name: Build Frontend
|
|
run: |
|
|
cd /opt/mitm-webserver/frontend
|
|
npm install
|
|
npm run build
|
|
|
|
- name: Setup Backend
|
|
run: |
|
|
cd /opt/mitm-webserver/backend
|
|
python3 -m venv venv
|
|
source venv/bin/activate
|
|
pip install -r requirements.txt
|
|
deactivate
|
|
|
|
- name: Restart Backend
|
|
run: |
|
|
sudo systemctl restart mitm-backend
|
|
|
|
traffic_target:
|
|
runs-on: traffic-target
|
|
steps:
|
|
- name: Update target checkout and detect script changes
|
|
shell: bash
|
|
run: |
|
|
set -euo pipefail
|
|
|
|
APP_DIR="/opt/mitm-webserver"
|
|
TARGET_SCRIPT="tools/traffic-target.sh"
|
|
RESTART_MARKER="/tmp/traffic-target-restart-required"
|
|
|
|
cd "$APP_DIR"
|
|
|
|
OLD_REV="$(git rev-parse HEAD)"
|
|
git fetch origin main
|
|
NEW_REV="$(git rev-parse origin/main)"
|
|
|
|
if git diff --quiet "$OLD_REV" "$NEW_REV" -- "$TARGET_SCRIPT"; then
|
|
rm -f "$RESTART_MARKER"
|
|
echo "traffic-target.sh unchanged"
|
|
else
|
|
touch "$RESTART_MARKER"
|
|
echo "traffic-target.sh changed"
|
|
fi
|
|
|
|
git checkout main
|
|
git merge --ff-only origin/main
|
|
|
|
- name: Restart traffic target daemon when needed
|
|
shell: bash
|
|
run: |
|
|
set -euo pipefail
|
|
|
|
RESTART_MARKER="/tmp/traffic-target-restart-required"
|
|
TARGET_SERVICE="mitm-traffic-target"
|
|
|
|
if [ -f "$RESTART_MARKER" ]; then
|
|
systemctl restart "$TARGET_SERVICE"
|
|
rm -f "$RESTART_MARKER"
|
|
echo "Restarted ${TARGET_SERVICE}"
|
|
else
|
|
echo "No restart required"
|
|
fi
|