From dc76daf217d74272e02317c3b8bb9ad646893488 Mon Sep 17 00:00:00 2001 From: malmert Date: Sun, 8 Mar 2026 17:40:07 +0100 Subject: [PATCH] test runner traffic target --- .gitea/workflows/build.yaml | 47 ++++++++++++- setup_build_server.sh | 35 ---------- setup_traffic_target_server.sh | 116 +++++++++++++++++++++++++++++++++ 3 files changed, 162 insertions(+), 36 deletions(-) create mode 100644 setup_traffic_target_server.sh diff --git a/.gitea/workflows/build.yaml b/.gitea/workflows/build.yaml index ae4695e..3f9c200 100644 --- a/.gitea/workflows/build.yaml +++ b/.gitea/workflows/build.yaml @@ -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 diff --git a/setup_build_server.sh b/setup_build_server.sh index f01eb4f..956e8da 100755 --- a/setup_build_server.sh +++ b/setup_build_server.sh @@ -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:///" echo "Backend API: http:///api/" diff --git a/setup_traffic_target_server.sh b/setup_traffic_target_server.sh new file mode 100644 index 0000000..7f27a84 --- /dev/null +++ b/setup_traffic_target_server.sh @@ -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 < 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 < Setup complete" +echo "Traffic target service: systemctl status ${TARGET_SERVICE}" +echo "Act runner service: systemctl status gitea-act-runner"