forgejo-infra/setup.sh

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"