From f60734e5203b497b2cd58d17e1c5c9045d428750 Mon Sep 17 00:00:00 2001 From: nyyu Date: Sat, 5 Apr 2025 19:31:12 +0200 Subject: [PATCH] feat: restore woodpecker --- woodpecker/.SRCINFO | 29 ++++++++ woodpecker/PKGBUILD | 102 +++++++++++++++++++++++++++ woodpecker/agent.conf | 8 +++ woodpecker/server.conf | 38 ++++++++++ woodpecker/woodpecker-agent.service | 22 ++++++ woodpecker/woodpecker-server.service | 21 ++++++ 6 files changed, 220 insertions(+) create mode 100644 woodpecker/.SRCINFO create mode 100644 woodpecker/PKGBUILD create mode 100644 woodpecker/agent.conf create mode 100644 woodpecker/server.conf create mode 100644 woodpecker/woodpecker-agent.service create mode 100644 woodpecker/woodpecker-server.service diff --git a/woodpecker/.SRCINFO b/woodpecker/.SRCINFO new file mode 100644 index 0000000..57c1f40 --- /dev/null +++ b/woodpecker/.SRCINFO @@ -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 diff --git a/woodpecker/PKGBUILD b/woodpecker/PKGBUILD new file mode 100644 index 0000000..0c9a686 --- /dev/null +++ b/woodpecker/PKGBUILD @@ -0,0 +1,102 @@ +# Maintainer: nyyu + +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" +} diff --git a/woodpecker/agent.conf b/woodpecker/agent.conf new file mode 100644 index 0000000..fa09e14 --- /dev/null +++ b/woodpecker/agent.conf @@ -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 diff --git a/woodpecker/server.conf b/woodpecker/server.conf new file mode 100644 index 0000000..833c307 --- /dev/null +++ b/woodpecker/server.conf @@ -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= diff --git a/woodpecker/woodpecker-agent.service b/woodpecker/woodpecker-agent.service new file mode 100644 index 0000000..dcc1a40 --- /dev/null +++ b/woodpecker/woodpecker-agent.service @@ -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 diff --git a/woodpecker/woodpecker-server.service b/woodpecker/woodpecker-server.service new file mode 100644 index 0000000..e6e0d3f --- /dev/null +++ b/woodpecker/woodpecker-server.service @@ -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