woodpecker-ci

This commit is contained in:
2026-02-28 18:40:09 +01:00
parent 9eee99798d
commit da5bb195d1
5 changed files with 173 additions and 0 deletions

View File

@@ -0,0 +1,46 @@
ARG GITEA_URL=https://git.familie-berner.de
ARG ORG=Open
ARG VERSION=v3.13.0
# 1. Abhängigkeiten installieren
# Wir nutzen postgresql16-server (Stable). Falls 18 verfügbar ist, hier anpassen.
PKG curl postgresql16-server ca_root_nss
# 2. Postgres aktivieren und initialisieren
SYSRC postgresql_enable=YES
SERVICE postgresql initdb
SERVICE postgresql start
# Kurz warten, bis die DB hochgefahren ist
CMD sleep 5
# DB User und Datenbank anlegen
CMD su - postgres -c "createuser -w -d woodpecker"
CMD su - postgres -c "createdb -O woodpecker woodpecker"
CMD su - postgres -c "psql -c \"ALTER USER woodpecker WITH PASSWORD 'woodpecker';\""
# 3. Woodpecker Binaries herunterladen
CMD mkdir -p /usr/local/bin
CMD curl -fL -o /usr/local/bin/woodpecker-server ${GITEA_URL}/api/packages/${ORG}/generic/woodpecker-freebsd/${VERSION}/woodpecker-server
CMD curl -fL -o /usr/local/bin/woodpecker-agent ${GITEA_URL}/api/packages/${ORG}/generic/woodpecker-freebsd/${VERSION}/woodpecker-agent
CMD curl -fL -o /usr/local/bin/woodpecker-cli ${GITEA_URL}/api/packages/${ORG}/generic/woodpecker-freebsd/${VERSION}/woodpecker-cli
CMD chmod +x /usr/local/bin/woodpecker-server /usr/local/bin/woodpecker-agent /usr/local/bin/woodpecker-cli
# 4. Konfiguration und RC-Skripte kopieren
# Bastille kopiert Dateien aus dem 'files/' Unterordner des Templates an die Zielposition
CMD mkdir -p /usr/local/etc/woodpecker
# Kopiere RC-Skripte (Quelle: files/usr/local/etc/rc.d/...)
CP usr/local/etc/rc.d/woodpecker-server /usr/local/etc/rc.d/woodpecker-server
CP usr/local/etc/rc.d/woodpecker-agent /usr/local/etc/rc.d/woodpecker-agent
# Kopiere Env-Files (Quelle: files/usr/local/etc/woodpecker/...)
CP usr/local/etc/woodpecker/server.env /usr/local/etc/woodpecker/server.env
CP usr/local/etc/woodpecker/agent.env /usr/local/etc/woodpecker/agent.env
CMD chmod +x /usr/local/etc/rc.d/woodpecker-server
CMD chmod +x /usr/local/etc/rc.d/woodpecker-agent
# 5. Dienste aktivieren
SYSRC woodpecker_server_enable=YES
SYSRC woodpecker_agent_enable=YES

View File

@@ -0,0 +1,46 @@
#!/bin/sh
# PROVIDE: woodpecker_agent
# REQUIRE: DAEMON NETWORKING postgresql
# KEYWORD: shutdown
. /etc/rc.subr
name="woodpecker_agent"
rcvar="woodpecker_agent_enable"
load_rc_config $name
: ${woodpecker_agent_enable:="NO"}
: ${woodpecker_agent_user:="root"}
: ${woodpecker_agent_group:="wheel"}
: ${woodpecker_agent_bin:="/usr/local/bin/woodpecker-agent"}
: ${woodpecker_agent_dir:="/usr/local/etc/woodpecker"}
# Pfad zu deiner .env Datei (pass ihn ggf. an, wenn sie in /root liegt!)
: ${woodpecker_agent_envfile:="${woodpecker_agent_dir}/agent.env"}
pidfile="/var/run/${name}.pid"
command="/usr/sbin/daemon"
# Hier ist die Änderung: Wir überschreiben das Standard-Start-Kommando
start_cmd="woodpecker_agent_start"
woodpecker_agent_start() {
echo "Starting woodpecker_agent with environment from ${woodpecker_agent_envfile}..."
# Prüfen, ob die Datei existiert
if [ ! -f "${woodpecker_agent_envfile}" ]; then
echo "Error: .env file not found at ${woodpecker_agent_envfile}"
return 1
fi
# Die .env Datei laden und alle Zeilen exportieren
# Wir filtern Kommentare (#) und leere Zeilen aus
export $(grep -v '^#' "${woodpecker_agent_envfile}" | xargs)
# Jetzt den Daemon starten
/usr/sbin/daemon -f -P ${pidfile} -r ${woodpecker_agent_bin}
}
run_rc_command "$1"

View File

@@ -0,0 +1,46 @@
#!/bin/sh
# PROVIDE: woodpecker_server
# REQUIRE: DAEMON NETWORKING postgresql
# KEYWORD: shutdown
. /etc/rc.subr
name="woodpecker_server"
rcvar="woodpecker_server_enable"
load_rc_config $name
: ${woodpecker_server_enable:="NO"}
: ${woodpecker_server_user:="root"}
: ${woodpecker_server_group:="wheel"}
: ${woodpecker_server_bin:="/usr/local/bin/woodpecker-server"}
: ${woodpecker_server_dir:="/usr/local/etc/woodpecker"}
# Pfad zu deiner .env Datei (pass ihn ggf. an, wenn sie in /root liegt!)
: ${woodpecker_server_envfile:="${woodpecker_server_dir}/server.env"}
pidfile="/var/run/${name}.pid"
command="/usr/sbin/daemon"
# Hier ist die Änderung: Wir überschreiben das Standard-Start-Kommando
start_cmd="woodpecker_server_start"
woodpecker_server_start() {
echo "Starting woodpecker_server with environment from ${woodpecker_server_envfile}..."
# Prüfen, ob die Datei existiert
if [ ! -f "${woodpecker_server_envfile}" ]; then
echo "Error: .env file not found at ${woodpecker_server_envfile}"
return 1
fi
# Die .env Datei laden und alle Zeilen exportieren
# Wir filtern Kommentare (#) und leere Zeilen aus
export $(grep -v '^#' "${woodpecker_server_envfile}" | xargs)
# Jetzt den Daemon starten
/usr/sbin/daemon -f -P ${pidfile} -r ${woodpecker_server_bin}
}
run_rc_command "$1"

View File

@@ -0,0 +1,14 @@
# Die Adresse deines Woodpecker-Servers (interner Port 9000 ist Standard für gRPC)
WOODPECKER_SERVER=localhost:9000
# Das Secret MUSS exakt dasselbe sein wie in deiner Server-.env
WOODPECKER_AGENT_SECRET=geheimes_token_123
# Wichtig für FreeBSD: Explizit auf 'local' setzen
WOODPECKER_BACKEND=local
# Optional: Wie viele Jobs gleichzeitig laufen dürfen
WOODPECKER_MAX_WORKFLOWS=2
# Name des Agenten (erscheint im UI)
WOODPECKER_AGENT_NAME=freebsd-jail-agent

View File

@@ -0,0 +1,21 @@
# .env
# Die URL, unter der Woodpecker im Browser aufgerufen wird
WOODPECKER_HOST=https://woodpecker.familie-berner.de
# Ein geheimes Passwort, das Server und Agent teilen (frei wählbar)
WOODPECKER_AGENT_SECRET=geheimes_token_123
# Gitea Anbindung (Zwingend erforderlich für Login!)
WOODPECKER_GITEA=true
WOODPECKER_GITEA_URL=https://git.familie-berner.de
# Diese beiden Werte musst du in Gitea unter "Einstellungen -> Anwendungen" erstellen:
WOODPECKER_GITEA_CLIENT=2baedfc7-399c-4d04-aa5c-396673dbf76f
WOODPECKER_GITEA_SECRET=gto_u2lu27q5bajvku6eacl2bjznripjmoymegjgbbnkirkuoe67u3tq
# Dein Gitea-Username als Admin
WOODPECKER_ADMIN=matthiasberner
WOODPECKER_DATABASE_DRIVER=postgres
WOODPECKER_DATABASE_DATASOURCE="postgres://woodpecker@localhost:5432/woodpecker?sslmode=disable"
WOODPECKER_OPEN=true