--- 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 ]