33 lines
No EOL
1.5 KiB
Bash
Executable file
33 lines
No EOL
1.5 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
# Reproducible Forgejo + CI runner setup.
|
|
# Run on a fresh Ubuntu 22.04/24.04 server with root.
|
|
# Requires: docker, docker compose, git already installed.
|
|
|
|
REPO_ORIGIN="https://git.slaid098.dev/slaid098/forgejo-infra.git"
|
|
DEPLOY_DIR="/root/dockers/forgejo"
|
|
|
|
echo "==> Cloning forgejo-infra config..."
|
|
git clone "$REPO_ORIGIN" /tmp/forgejo-infra-clone
|
|
|
|
echo "==> Creating $DEPLOY_DIR..."
|
|
mkdir -p "$DEPLOY_DIR/app_data/forgejo" "$DEPLOY_DIR/app_data/runner"
|
|
cp /tmp/forgejo-infra-clone/compose/docker-compose.yml "$DEPLOY_DIR/docker-compose.yml"
|
|
cp /tmp/forgejo-infra-clone/compose/runner-config.yaml "$DEPLOY_DIR/app_data/runner/config.yaml"
|
|
cp -r /tmp/forgejo-infra-clone/runner-image "$DEPLOY_DIR/runner-image"
|
|
|
|
echo "==> Building runner image..."
|
|
cd "$DEPLOY_DIR/runner-image"
|
|
docker build -t git.slaid098.dev/slaid098/runner:latest .
|
|
|
|
echo "==> Pushing runner image to Forgejo registry..."
|
|
# Requires: docker login git.slaid098.dev done beforehand (with a token that has package:write scope)
|
|
docker push git.slaid098.dev/slaid098/runner:latest
|
|
|
|
echo "==> Starting Forgejo + runner..."
|
|
cd "$DEPLOY_DIR"
|
|
docker compose up -d
|
|
|
|
echo "==> Done. Forgejo will be at http://localhost:3000 — configure NPM/reverse proxy + DNS separately."
|
|
echo " Register the runner: docker compose run --rm runner act_runner register --instance http://forgejo:3000 --token <TOKEN> --name linux-2 --labels ubuntu-latest:docker://git.slaid098.dev/slaid098/runner:latest --no-interactive" |