test runner traffic target
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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/"
|
||||
|
||||
116
setup_traffic_target_server.sh
Normal file
116
setup_traffic_target_server.sh
Normal 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"
|
||||
Reference in New Issue
Block a user