# SPDX-FileCopyrightText: 2023 Johannes Loher # # SPDX-License-Identifier: MIT $schema: https://raw.githubusercontent.com/woodpecker-ci/woodpecker/master/pipeline/schema/schema.json variables: - &bun_image oven/bun:latest - &is_latest_channel evaluate: CI_COMMIT_TAG matches "^[0-9]+\\\\.[0-9]+\\\\.[0-9]+$" - &is_beta_channel evaluate: CI_COMMIT_TAG matches "^[0-9]+\\\\.[0-9]+\\\\.[0-9]+-[0-9]+$" - &release_plugin woodpeckerci/plugin-gitea-release - &release_base_settings base_url: ${CI_FORGE_URL} title: ${CI_COMMIT_TAG} note: CHANGELOG.md files: - ${CI_REPO_NAME}.zip - ${CI_REPO_NAME}/system.json api_key: from_secret: forge_token when: event: tag evaluate: CI_COMMIT_TAG matches "^[0-9]+\\\\.[0-9]+\\\\.[0-9]+(-[0-9]+)?$" depends_on: - checks steps: install: image: *bun_image commands: - bun install --frozen-lockfile build: image: *bun_image environment: NODE_ENV: production commands: - export APPDATA=$(pwd) - bun run build package: group: prepare-release image: alpine:latest commands: - apk update - apk add zip curl - mv dist ${CI_REPO_NAME} - zip -r ${CI_REPO_NAME}.zip ${CI_REPO_NAME}/* changelog: group: prepare-release image: *bun_image commands: - bun run changelog choose-latest-channel: group: prepare-release image: alpine:latest commands: - echo latest > .RELEASE_CHANNEL when: <<: *is_latest_channel choose-beta-channel: group: prepare-release image: alpine:latest commands: - echo beta > .RELEASE_CHANNEL when: <<: *is_beta_channel release-latest: image: *release_plugin settings: <<: *release_base_settings when: <<: *is_latest_channel release-beta: image: *release_plugin settings: <<: *release_base_settings prerelease: true when: <<: *is_beta_channel publish-manifest: group: publish image: alpine:latest commands: - apk update - apk add curl - export RELEASE_CHANNEL=$(cat .RELEASE_CHANNEL) - 'curl --header "Authorization: token $${FORGE_TOKEN}" -X "DELETE" "${CI_FORGE_URL}/api/packages/${CI_REPO_OWNER}/generic/${CI_REPO_NAME}/$${RELEASE_CHANNEL}/system.json"' - 'curl --fail --header "Authorization: token $${FORGE_TOKEN}" --upload-file ${CI_REPO_NAME}/system.json "${CI_FORGE_URL}/api/packages/${CI_REPO_OWNER}/generic/${CI_REPO_NAME}/$${RELEASE_CHANNEL}/system.json"' secrets: - forge_token publish-to-foundry-admin: group: publish image: johannesloher/foundry-publish environment: FVTT_DELETE_OBSOLETE_VERSIONS: "true" commands: - export FVTT_MANIFEST_PATH=${CI_REPO_NAME}/system.json - export FVTT_MANIFEST_URL=${CI_REPO_URL}/releases/download/${CI_COMMIT_TAG}/system.json - foundry-publish secrets: - fvtt_package_id - fvtt_username - fvtt_password when: <<: *is_latest_channel