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 ↩