140
.drone.yml
Normal file
140
.drone.yml
Normal file
@@ -0,0 +1,140 @@
|
||||
---
|
||||
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"
|
||||
- echo -n "$LATEST_TAG" > .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/Open/generic/woodpecker-freebsd/$LATEST_TAG/woodpecker-server")
|
||||
- |
|
||||
if [ "$HTTP_CODE" = "200" ]; then
|
||||
echo "Version $LATEST_TAG existiert bereits. Überspringe Build."
|
||||
echo "SKIP" > .build_mode
|
||||
else
|
||||
echo "Version $LATEST_TAG existiert noch nicht. Starte Build."
|
||||
echo "BUILD" > .build_mode
|
||||
git clone --depth 1 --branch "$LATEST_TAG" https://github.com/woodpecker-ci/woodpecker.git .
|
||||
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/Open/generic/woodpecker-freebsd/$TAG"
|
||||
- curl --fail -u $API_USER:$API_TOKEN -T dist/woodpecker-server "https://git.familie-berner.de/api/packages/Open/generic/woodpecker-freebsd/$TAG/woodpecker-server"
|
||||
- curl --fail -u $API_USER:$API_TOKEN -T dist/woodpecker-agent "https://git.familie-berner.de/api/packages/Open/generic/woodpecker-freebsd/$TAG/woodpecker-agent"
|
||||
- curl --fail -u $API_USER:$API_TOKEN -T dist/woodpecker-cli "https://git.familie-berner.de/api/packages/Open/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/Open/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 ]
|
||||
|
||||
- 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 ]
|
||||
Reference in New Issue
Block a user