All checks were successful
continuous-integration/drone/push Build is passing
143 lines
4.4 KiB
YAML
143 lines
4.4 KiB
YAML
---
|
|
kind: secret
|
|
name: git_username
|
|
get:
|
|
path: secret/data/gitea
|
|
name: api_access_user # Bitte prüfen, ob der Key in deinem Secret-Store so heißt
|
|
---
|
|
kind: secret
|
|
name: git_password
|
|
get:
|
|
path: secret/data/gitea
|
|
name: api_access_token # Oder 'password', je nachdem was hinterlegt ist
|
|
---
|
|
kind: secret
|
|
name: password_matrix
|
|
get:
|
|
path: secret/data/matrix/bot/drone-bot
|
|
name: password
|
|
---
|
|
kind: secret
|
|
name: userid_matrix
|
|
get:
|
|
path: secret/data/matrix/bot/drone-bot
|
|
name: userid
|
|
---
|
|
kind: secret
|
|
name: roomid_matrix
|
|
get:
|
|
path: secret/data/matrix/bot/drone-bot
|
|
name: roomid
|
|
|
|
---
|
|
kind: pipeline
|
|
type: docker
|
|
name: freebsd-build
|
|
|
|
platform:
|
|
os: linux
|
|
arch: amd64
|
|
|
|
# Wir deaktivieren den Standard-Clone, da wir das Upstream-Repo dynamisch klonen
|
|
clone:
|
|
disable: true
|
|
|
|
steps:
|
|
- name: check-and-clone
|
|
image: alpine/git
|
|
environment:
|
|
API_USER:
|
|
from_secret: git_username
|
|
API_TOKEN:
|
|
from_secret: git_password
|
|
commands:
|
|
- apk add --no-cache curl bash
|
|
# Neuestes Tag vom Upstream Repo ermitteln
|
|
- LATEST_TAG=$(git ls-remote --tags --refs --sort='v:refname' https://github.com/woodpecker-ci/woodpecker.git | tail -n1 | awk -F/ '{print $3}')
|
|
- echo "Neuestes Tag ist $LATEST_TAG"
|
|
# Prüfen, ob dieses Tag bereits in der Registry existiert
|
|
- HTTP_CODE=$(curl -o /dev/null -s -w "%{http_code}" -I -u $API_USER:$API_TOKEN "https://git.familie-berner.de/api/packages/Public/generic/woodpecker-freebsd/$LATEST_TAG/woodpecker-server")
|
|
- |
|
|
if [ "$HTTP_CODE" = "200" ]; then
|
|
echo "Version $LATEST_TAG existiert bereits. Überspringe Build."
|
|
echo "SKIP" > .build_mode
|
|
echo -n "$LATEST_TAG" > .latest_tag
|
|
else
|
|
echo "Version $LATEST_TAG existiert noch nicht. Starte Build."
|
|
git clone --depth 1 --branch "$LATEST_TAG" https://github.com/woodpecker-ci/woodpecker.git .
|
|
echo "BUILD" > .build_mode
|
|
echo -n "$LATEST_TAG" > .latest_tag
|
|
fi
|
|
|
|
- name: build-frontend
|
|
image: node:20
|
|
commands:
|
|
- if [ "$(cat .build_mode)" = "SKIP" ]; then exit 0; fi
|
|
- cd web
|
|
- npm install --legacy-peer-deps
|
|
- npm run build
|
|
|
|
- name: build-backend
|
|
image: golang:1.25
|
|
environment:
|
|
GOOS: freebsd
|
|
GOARCH: amd64
|
|
CGO_ENABLED: 0
|
|
commands:
|
|
- if [ "$(cat .build_mode)" = "SKIP" ]; then exit 0; fi
|
|
- go build -ldflags "-s -w" -o dist/woodpecker-server ./cmd/server
|
|
- go build -ldflags "-s -w" -o dist/woodpecker-agent ./cmd/agent
|
|
- go build -ldflags "-s -w" -o dist/woodpecker-cli ./cmd/cli
|
|
- tar -czf dist/woodpecker-web-assets.tar.gz -C web/dist .
|
|
- ls -lh dist/
|
|
|
|
- name: upload-packages
|
|
image: curlimages/curl
|
|
environment:
|
|
API_USER:
|
|
from_secret: git_username
|
|
API_TOKEN:
|
|
from_secret: git_password
|
|
commands:
|
|
- if [ "$(cat .build_mode)" = "SKIP" ]; then exit 0; fi
|
|
- TAG=$(cat .latest_tag)
|
|
- echo "Lade Version $TAG hoch..."
|
|
- curl -X DELETE -u $API_USER:$API_TOKEN "https://git.familie-berner.de/api/packages/Public/generic/woodpecker-freebsd/$TAG"
|
|
- curl --fail -u $API_USER:$API_TOKEN -T dist/woodpecker-server "https://git.familie-berner.de/api/packages/Public/generic/woodpecker-freebsd/$TAG/woodpecker-server"
|
|
- curl --fail -u $API_USER:$API_TOKEN -T dist/woodpecker-agent "https://git.familie-berner.de/api/packages/Public/generic/woodpecker-freebsd/$TAG/woodpecker-agent"
|
|
- curl --fail -u $API_USER:$API_TOKEN -T dist/woodpecker-cli "https://git.familie-berner.de/api/packages/Public/generic/woodpecker-freebsd/$TAG/woodpecker-cli"
|
|
- curl --fail -u $API_USER:$API_TOKEN -T dist/woodpecker-web-assets.tar.gz "https://git.familie-berner.de/api/packages/Public/generic/woodpecker-freebsd/$TAG/woodpecker-web-assets.tar.gz"
|
|
|
|
- name: notify-success
|
|
image: spotlightkid/drone-matrixchat-notify
|
|
settings:
|
|
homeserver: https://matrix.familie-berner.de
|
|
roomid:
|
|
from_secret: roomid_matrix
|
|
userid:
|
|
from_secret: userid_matrix
|
|
password:
|
|
from_secret: password_matrix
|
|
markdown: 'yes'
|
|
template: |
|
|
✅ Woodpecker FreeBSD Build erfolgreich!
|
|
when:
|
|
status: [ success ]
|
|
event:
|
|
exclude: [ cron ]
|
|
|
|
- name: notify-failed
|
|
image: spotlightkid/drone-matrixchat-notify
|
|
settings:
|
|
homeserver: https://matrix.familie-berner.de
|
|
roomid:
|
|
from_secret: roomid_matrix
|
|
userid:
|
|
from_secret: userid_matrix
|
|
password:
|
|
from_secret: password_matrix
|
|
markdown: 'yes'
|
|
template: |
|
|
❌ Woodpecker FreeBSD Build fehlgeschlagen!
|
|
when:
|
|
status: [ failure ] |