Skip to main content
Plugins / Release

Release

by Woodpecker Authors

Plugin to create a release and upload assets


plugin-release

Woodpecker CI plugin to create a release and upload assets in the forge.

If the release already exists matching the tag, it will be used without overwriting. Files will still be uploaded based on the file-exists setting.

Supports Gitea, Forgejo and GitHub.

Settings

Settings Name Default Description
api-key none API access token
files none List of files to upload (accepts globs). Filepaths are relative to repository root by default, regardless of previous build steps, as long as the directory key is not manually set.
file-exists overwrite What to do if files already exist; one of overwrite, fail, or skip
checksum none Generate checksums for specific files
checksum-file CHECKSUMsum.txt name used for checksum file. CHECKSUM is replaced with the chosen method (default: CHECKSUMsum.txt)
checksum-flatten false include only the basename of the file in the checksum file
target CI_REPO_DEFAULT_BRANCH Branch where further development happens (usually main)
draft false Create a draft release
skip-verify false Visit base-url and skip verifying certificate
prerelease false Create a pre-release
base-url CI_FORGE_URL Base URL
upload-url https://uploads.github.com/ upload url for GitHub
note none File or string with notes for the release (ex: changelog)
title none File or string with the title for the release
env-file none Path to a .env file to load
overwrite false force overwrite existing release information (title, note and publish if release was draft before and draft=true, discussion category if none)
discussion-category none create a discussion in the given category (github)
generate-release-notes false automatically generate GitHub release notes
env-file none load env vars from file

Access Token

Gitea

The access token must have the scopes repo (<=1.19) or write:repository and read:misc (>=1.20).

Example

publish:
  image: woodpeckerci/plugin-release
  settings:
    files:
      # Paths are relative to the root of the repository
      # Could also be "hello-world*" to match both
      - 'hello-world'
      - 'hello-world.exe'
    api_key:
      from_secret: ACCESS_TOKEN