feat: restore woodpecker
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed

This commit is contained in:
nyyu 2025-04-05 19:31:12 +02:00
parent 1440f7ffc5
commit f60734e520
6 changed files with 220 additions and 0 deletions

29
woodpecker/.SRCINFO Normal file
View file

@ -0,0 +1,29 @@
pkgbase = woodpecker
pkgdesc = Woodpecker is a community fork of the Drone CI system
pkgver = 3.5.1
pkgrel = 1
url = https://woodpecker-ci.org
arch = x86_64
license = Apache
makedepends = go
makedepends = git
makedepends = pnpm
options = !lto
source = git+https://github.com/woodpecker-ci/woodpecker.git#tag=v3.5.1
source = woodpecker-server.service
source = woodpecker-agent.service
source = agent.conf
source = server.conf
sha256sums = b9ef3fe9fa979984b517d043b25152ba51c9ffe395cf468915dbf14a1ed9320b
sha256sums = 6e22e6939222aaad07311e37a086935ca32dd149c3688b2809db5f55df816516
sha256sums = 1081a646cf645bc09ddda8472cf9a341e545bf03f5738d56ae427b33806e538c
sha256sums = a6c2bdfc934e40a9636e7447ecd5bf7b200444116085cd7c69d304dfb822eba9
sha256sums = d983da1df22d00338aa82be5844554f27f789361f405fe381f73896623bd2c7a
pkgname = woodpecker-server
backup = etc/woodpecker/server
pkgname = woodpecker-agent
backup = etc/woodpecker/agent
pkgname = woodpecker-cli

102
woodpecker/PKGBUILD Normal file
View file

@ -0,0 +1,102 @@
# Maintainer: nyyu <mail at nyyu dot dev>
pkgbase=woodpecker
pkgname=(
'woodpecker-server'
'woodpecker-agent'
'woodpecker-cli'
)
pkgver=3.5.1
pkgrel=1
pkgdesc="Woodpecker is a community fork of the Drone CI system"
arch=('x86_64')
url="https://woodpecker-ci.org"
license=('Apache')
makedepends=('go' 'git' 'pnpm')
options=('!lto')
source=(git+https://github.com/woodpecker-ci/woodpecker.git#tag=v$pkgver
'woodpecker-server.service'
'woodpecker-agent.service'
'agent.conf'
'server.conf')
sha256sums=('b9ef3fe9fa979984b517d043b25152ba51c9ffe395cf468915dbf14a1ed9320b'
'6e22e6939222aaad07311e37a086935ca32dd149c3688b2809db5f55df816516'
'1081a646cf645bc09ddda8472cf9a341e545bf03f5738d56ae427b33806e538c'
'a6c2bdfc934e40a9636e7447ecd5bf7b200444116085cd7c69d304dfb822eba9'
'd983da1df22d00338aa82be5844554f27f789361f405fe381f73896623bd2c7a')
prepare() {
cd "$pkgbase"
# create directory for build output
mkdir -p build
# download dependencies
go mod download
}
build() {
cd "$pkgbase"
# generate web interface to embed in woodpecker-server
pushd web
pnpm install --frozen-lockfile
pnpm build
popd
# set Go flags
export CGO_CPPFLAGS="${CPPFLAGS}"
export CGO_CFLAGS="${CFLAGS}"
export CGO_CXXFLAGS="${CXXFLAGS}"
# build server/agent/cli
go build -v \
-buildmode=pie \
-mod=readonly \
-modcacherw \
-ldflags "-compressdwarf=false \
-linkmode external \
-extldflags '${LDFLAGS}' \
-X go.woodpecker-ci.org/woodpecker/v3/version.Version=${pkgver}" \
-o build \
./cmd/...
}
package_woodpecker-server() {
backup=('etc/woodpecker/server')
# service
install -Dm644 woodpecker-server.service "$pkgdir/usr/lib/systemd/system/woodpecker-server.service"
# config
install -Dm644 server.conf "$pkgdir/etc/woodpecker/server"
cd "$pkgbase"
# binary
install -vDm755 build/server "$pkgdir/usr/bin/woodpecker-server"
}
package_woodpecker-agent() {
backup=('etc/woodpecker/agent')
# service
install -Dm644 woodpecker-agent.service "$pkgdir/usr/lib/systemd/system/woodpecker-agent.service"
# config
install -Dm644 agent.conf "$pkgdir/etc/woodpecker/agent"
cd "$pkgbase"
# binary
install -vDm755 build/agent "$pkgdir/usr/bin/woodpecker-agent"
}
package_woodpecker-cli() {
cd "$pkgbase"
# binary
install -vDm755 build/cli "$pkgdir/usr/bin/woodpecker"
}

8
woodpecker/agent.conf Normal file
View file

@ -0,0 +1,8 @@
# agent configuration
WOODPECKER_SERVER=localhost:9992
WOODPECKER_AGENT_CONFIG_FILE=/var/lib/woodpecker-agent/agent.conf
WOODPECKER_AGENT_SECRET=""
WOODPECKER_HEALTHCHECK=false
# WOODPECKER_MAX_WORKFLOWS=4
WOODPECKER_BACKEND=docker

38
woodpecker/server.conf Normal file
View file

@ -0,0 +1,38 @@
# woodpecker server configuration
# database configuration
WOODPECKER_DATABASE_DRIVER=sqlite3
WOODPECKER_DATABASE_DATASOURCE=/var/lib/woodpecker/woodpecker.sqlite
# remote configuration
WOODPECKER_GITHUB=false
WOODPECKER_GITHUB_CLIENT=""
WOODPECKER_GITHUB_SECRET=""
# gitea
WOODPECKER_GITEA=false
WOODPECKER_GITEA_URL=""
WOODPECKER_GITEA_CLIENT=""
WOODPECKER_GITEA_SECRET=""
# server
WOODPECKER_HOST="https://drone.exemple.com"
WOODPECKER_SERVER_ADDR=:9991
WOODPECKER_GRPC_ADDR=:9992
# secret
WOODPECKER_AGENT_SECRET=""
# access configuration
WOODPECKER_ADMIN=
WOODPECKER_ORGS=
WOODPECKER_REPO_OWNERS=
WOODPECKER_OPEN=false
# env
# WOODPECKER_ENVIRONMENT=
# WOODPECKER_DOCKER_CONFIG=
# WOODPECKER_DEFAULT_CLONE_IMAGE=woodpeckerci/plugin-git:v1.6.1
# debug
# WOODPECKER_LOG_LEVEL=

View file

@ -0,0 +1,22 @@
[Unit]
Description=Woodpecker agent
Requires=network-online.target
After=network-online.target woodpecker-server.service docker.service
[Service]
User=woodpecker-agent
Group=docker
Type=simple
EnvironmentFile=/etc/woodpecker/agent
ExecStart=/usr/bin/woodpecker-agent
ExecReload=/usr/bin/kill -HUP $MAINPID
Restart=on-failure
KillSignal=SIGINT
LimitNOFILE=8192
PrivateDevices=yes
DynamicUser=yes
StateDirectory=woodpecker-agent
ReadWritePaths=/var/run/docker.sock
[Install]
WantedBy=multi-user.target

View file

@ -0,0 +1,21 @@
[Unit]
Description=Woodpecker server
Requires=network-online.target
After=network-online.target
[Service]
User=woodpecker
Type=simple
EnvironmentFile=/etc/woodpecker/server
ExecStart=/usr/bin/woodpecker-server
ExecReload=/usr/bin/kill -HUP $MAINPID
Restart=on-failure
KillSignal=SIGINT
LimitNOFILE=8192
PrivateDevices=yes
DynamicUser=yes
StateDirectory=woodpecker
[Install]
WantedBy=multi-user.target