# Release workflow: derive the version, changelog, tag, and package from Conventional Commits on main. when: - event: push branch: main depends_on: - ci labels: performance: high clone: git: image: woodpeckerci/plugin-git settings: depth: 0 partial: false tags: true steps: release: image: node:24-bookworm-slim environment: NPM_TOKEN: from_secret: gitea_package_token GITEA_REGISTRY_USERNAME: from_secret: gitea_registry_username GITEA_RELEASE_TOKEN: from_secret: gitea_release_token commands: - corepack enable - corepack prepare pnpm@11.0.0 --activate - apt-get update && apt-get install --yes --no-install-recommends ca-certificates git - pnpm install --frozen-lockfile - git config user.name "Woodpecker CI" - git config user.email "woodpecker-ci@mifi.dev" - git remote set-url origin "https://${GITEA_REGISTRY_USERNAME}:${GITEA_RELEASE_TOKEN}@git.mifi.dev/mifi/logger.git" - npm config set @mifi:registry https://git.mifi.dev/api/packages/mifi/npm/ - npm config set -- //git.mifi.dev/api/packages/mifi/npm/:_authToken "$NPM_TOKEN" - pnpm build - pnpm release notify-release-failure: image: curlimages/curl:8.14.1 depends_on: [release] environment: MATTERMOST_BOT_ACCESS_TOKEN: from_secret: mattermost_bot_access_token MATTERMOST_CHANNEL_ID: from_secret: mattermost_pushes_channel_id MATTERMOST_POST_API_URL: from_secret: mattermost_post_api_url commands: - | BODY=$(printf '{"channel_id":"%s","message":"[%s - Build #%s] Package release failure 💩"}' "$MATTERMOST_CHANNEL_ID" "$CI_REPO" "$CI_PIPELINE_NUMBER") curl --fail --show-error --silent --request POST --header 'Content-Type: application/json' --header "Authorization: Bearer $MATTERMOST_BOT_ACCESS_TOKEN" --data "$BODY" "$MATTERMOST_POST_API_URL" when: - status: [failure] notify-release-success: image: curlimages/curl:8.14.1 depends_on: [release] environment: MATTERMOST_BOT_ACCESS_TOKEN: from_secret: mattermost_bot_access_token MATTERMOST_CHANNEL_ID: from_secret: mattermost_pushes_channel_id MATTERMOST_POST_API_URL: from_secret: mattermost_post_api_url commands: - | BODY=$(printf '{"channel_id":"%s","message":"[%s - Build #%s] Package release success 🎉"}' "$MATTERMOST_CHANNEL_ID" "$CI_REPO" "$CI_PIPELINE_NUMBER") curl --fail --show-error --silent --request POST --header 'Content-Type: application/json' --header "Authorization: Bearer $MATTERMOST_BOT_ACCESS_TOKEN" --data "$BODY" "$MATTERMOST_POST_API_URL" when: - status: [success]