test runner traffic target
Some checks failed
Build and Deploy MITM Webserver / build (push) Successful in 10s
Build and Deploy MITM Webserver / traffic_target (push) Has been cancelled

This commit is contained in:
2026-03-08 17:40:07 +01:00
parent 5ea4dd388e
commit dc76daf217
3 changed files with 162 additions and 36 deletions

View File

@@ -3,7 +3,7 @@ name: Build and Deploy MITM Webserver
on:
push:
branches:
- main # oder der Branch, den du automatisch bauen willst
- main
jobs:
build:
@@ -32,3 +32,48 @@ jobs:
- 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

View File

@@ -180,41 +180,6 @@ systemctl start gitea-act-runner
echo "==> Gitea Act Runner installiert & gestartet"
# -----------------------------
# Gitea Runner Job Script
# -----------------------------
echo "==> Setup auto-build script"
BUILD_SCRIPT="$RUNNER_DIR/build.sh"
cat >$BUILD_SCRIPT <<'EOL'
#!/bin/bash
set -e
APP_DIR="/opt/mitm-webserver"
FRONTEND_DIR="$APP_DIR/frontend"
BACKEND_DIR="$APP_DIR/backend"
BACKEND_SERVICE="mitm-backend"
cd $APP_DIR
git reset --hard
git pull
# Build Frontend
cd $FRONTEND_DIR
npm install
npm run build
# Backend Dependencies
cd $BACKEND_DIR
source venv/bin/activate
pip install -r requirements.txt
deactivate
# Restart backend
systemctl restart $BACKEND_SERVICE
EOL
chmod +x $BUILD_SCRIPT
echo "==> Setup complete! Gitea Runner will automatically build on push."
echo "Frontend: http://<server_ip>/"
echo "Backend API: http://<server_ip>/api/"

View File

@@ -0,0 +1,116 @@
#!/bin/bash
set -euo pipefail
REPO_URL="${REPO_URL:-https://gitea.malmert.de/marcus/mitm-webserver.git}"
APP_DIR="${APP_DIR:-/opt/mitm-webserver}"
TARGET_SCRIPT_REL="${TARGET_SCRIPT_REL:-tools/traffic-target.sh}"
TARGET_SERVICE="${TARGET_SERVICE:-mitm-traffic-target}"
RUNNER_DIR="${RUNNER_DIR:-/opt/gitea-act-runner}"
RUNNER_BIN_URL="${RUNNER_BIN_URL:-https://gitea.com/gitea/act_runner/releases/download/v0.2.13/act_runner-0.2.13-linux-amd64}"
RUNNER_INSTANCE_URL="${RUNNER_INSTANCE_URL:-https://gitea.malmert.de/}"
RUNNER_NAME="${RUNNER_NAME:-traffic-target-runner}"
RUNNER_LABELS="${RUNNER_LABELS:-traffic-target:host}"
RUNNER_TOKEN="${RUNNER_TOKEN:-}"
if [[ -z "$RUNNER_TOKEN" ]]; then
echo "RUNNER_TOKEN must be set before running this script." >&2
exit 1
fi
echo "==> Update system packages"
apt update
apt upgrade -y
DEBIAN_FRONTEND=noninteractive apt install -y \
git \
curl \
wget \
python3 \
openssl \
socat \
iperf3
echo "==> Setup repository"
if [[ ! -d "$APP_DIR/.git" ]]; then
git clone "$REPO_URL" "$APP_DIR"
else
cd "$APP_DIR"
git fetch origin main
git checkout main
git merge --ff-only origin/main
fi
TARGET_SCRIPT_PATH="$APP_DIR/$TARGET_SCRIPT_REL"
if [[ ! -x "$TARGET_SCRIPT_PATH" ]]; then
chmod +x "$TARGET_SCRIPT_PATH"
fi
echo "==> Setup traffic target systemd service"
cat >/etc/systemd/system/${TARGET_SERVICE}.service <<EOL
[Unit]
Description=MITM Traffic Target
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
WorkingDirectory=$APP_DIR
ExecStart=$TARGET_SCRIPT_PATH
Restart=always
RestartSec=5
User=root
[Install]
WantedBy=multi-user.target
EOL
systemctl daemon-reload
systemctl enable "$TARGET_SERVICE"
systemctl restart "$TARGET_SERVICE"
echo "==> Install Gitea Act Runner"
mkdir -p "$RUNNER_DIR"
cd "$RUNNER_DIR"
if [[ ! -x "$RUNNER_DIR/act_runner" ]]; then
wget -O act_runner "$RUNNER_BIN_URL"
chmod +x act_runner
fi
if [[ ! -f "$RUNNER_DIR/.runner" ]]; then
./act_runner register \
--instance "$RUNNER_INSTANCE_URL" \
--token "$RUNNER_TOKEN" \
--name "$RUNNER_NAME" \
--labels "$RUNNER_LABELS" \
--no-interactive
else
echo "==> Runner already registered"
fi
echo "==> Setup Gitea Act Runner systemd service"
cat >/etc/systemd/system/gitea-act-runner.service <<EOL
[Unit]
Description=Gitea Actions Runner (act_runner)
After=network-online.target
Wants=network-online.target
[Service]
ExecStartPre=/bin/sleep 10
ExecStart=$RUNNER_DIR/act_runner daemon
WorkingDirectory=$RUNNER_DIR
Restart=always
RestartSec=5
User=root
[Install]
WantedBy=multi-user.target
EOL
systemctl daemon-reload
systemctl enable gitea-act-runner
systemctl restart gitea-act-runner
echo "==> Setup complete"
echo "Traffic target service: systemctl status ${TARGET_SERVICE}"
echo "Act runner service: systemctl status gitea-act-runner"