From 9136989d0b8f351c0b16db8c8cb90a2a3769178d Mon Sep 17 00:00:00 2001 From: Matthias Berner Date: Sat, 28 Feb 2026 20:26:37 +0100 Subject: [PATCH] test --- .drone.yml | 140 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 140 insertions(+) create mode 100644 .drone.yml diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..5964f13 --- /dev/null +++ b/.drone.yml @@ -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 ] \ No newline at end of file