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 |
version1 | 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.0or a max satisfying semver one like~> v1.10. In this case this will return the latest patch release ofv1.10. For theproversion, add-proto the string ↩