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