Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
3.5 KiB
Azure Pipelines
GoReleaser can also be used within our official GoReleaser Extensions for Azure DevOps through Visual Studio marketplace.
Task definition
- task: goreleaser@0
inputs:
version: 'latest'
distribution: 'goreleaser'
args: ''
workdir: '$(Build.SourcesDirectory)'
Task inputs
Following inputs can be used:
Name | Type | Default | Description |
---|---|---|---|
distribution |
String | goreleaser |
GoReleaser distribution, either goreleaser or goreleaser-pro |
version 1 |
String | latest |
GoReleaser version |
args |
String | Arguments to pass to GoReleaser | |
workdir |
String | $(Build.SourcesDirectory) |
Working directory (below repository root) |
installOnly |
Bool | false |
Just install GoReleaser |
Task environment variables
...
variables:
- name: GORELEASER_KEY
value: xxx
...
or short:
...
variables:
GORELEASER_KEY: xxx
...
Following environment variables can be used, as environment variable.
Name | Description |
---|---|
GITHUB_TOKEN |
GITHUB_TOKEN for e.g. brew |
GORELEASER_KEY |
Your GoReleaser Pro License Key, in case you are using the goreleaser-pro distribution |
Example pipeline
Generally there are two ways to define an Azure Pipeline: Classic pipelines defined in the UI or YAML pipelines.
Here is how to do it with YAML:
# customize trigger to your needs
trigger:
branches:
include:
- main
- refs/tags/*
variables:
GO_VERSION: "1.20"
pool:
vmImage: ubuntu-latest
jobs:
- job: Test
steps:
- task: GoTool@0
inputs:
version: "$(GO_VERSION)"
displayName: Install Go
- bash: go test ./...
displayName: Run Go Tests
- job: Release
# only runs if Test was successful
dependsOn: Test
# only runs if pipeline was triggered from a branch.
condition: and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags'))
steps:
- task: GoTool@0
inputs:
version: "$(GO_VERSION)"
displayName: Install Go
- task: goreleaser@0
inputs:
version: 'latest'
distribution: 'goreleaser'
args: ''
workdir: '$(Build.SourcesDirectory)'
In this example a Test
job is used to run go test ./...
to first make sure that there're no failing tests. Only if
that job succeeds and the pipeline was triggered from a tag (because of the defined condition
) GoReleaser will be run.
-
Can be a fixed version like
v1.10.0
or a max satisfying semver one like~> v1.10
. In this case this will return the latest patch release ofv1.10
. For thepro
version, add-pro
to the string ↩︎