woodpecker-ci
This commit is contained in:
46
woodpecker-ci/Bastillefile
Normal file
46
woodpecker-ci/Bastillefile
Normal 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
|
||||
46
woodpecker-ci/usr/local/etc/rc.d/woodpecker_agent
Normal file
46
woodpecker-ci/usr/local/etc/rc.d/woodpecker_agent
Normal 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"
|
||||
46
woodpecker-ci/usr/local/etc/rc.d/woodpecker_server
Normal file
46
woodpecker-ci/usr/local/etc/rc.d/woodpecker_server
Normal 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"
|
||||
14
woodpecker-ci/usr/local/etc/woodpecker/agent.env
Normal file
14
woodpecker-ci/usr/local/etc/woodpecker/agent.env
Normal 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
|
||||
21
woodpecker-ci/usr/local/etc/woodpecker/server.env
Normal file
21
woodpecker-ci/usr/local/etc/woodpecker/server.env
Normal 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
|
||||
Reference in New Issue
Block a user