mirror of
https://github.com/goreleaser/goreleaser.git
synced 2025-02-03 13:11:48 +02:00
112 lines
3.5 KiB
Markdown
112 lines
3.5 KiB
Markdown
# Azure Pipelines
|
|
|
|
GoReleaser can also be used within our official [GoReleaser Extensions for Azure DevOps][goreleaser-extension]
|
|
through [Visual Studio marketplace][marketplace].
|
|
|
|
### Task definition
|
|
|
|
````yaml
|
|
- 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`**¹** | 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 |
|
|
|
|
> **¹** Can be a fixed version like `v0.132.0` or a max satisfying semver one like `~> 0.132`. In this case this will return `v0.132.1`.
|
|
> For the `pro` version, add `-pro` to the string
|
|
|
|
### Task environment variables
|
|
|
|
```yaml
|
|
...
|
|
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](https://help.github.com/en/actions/configuring-and-managing-workflows/authenticating-with-the-github_token) for e.g. `brew` or `gofish` |
|
|
| `GORELEASER_KEY` | Your [GoReleaser Pro](https://goreleaser.com/pro) License Key, in case you are using the `goreleaser-pro` distribution |
|
|
|
|
### Example pipeline
|
|
|
|
Generally there are two ways to define an [Azure Pipeline](https://azure.microsoft.com/en-us/services/devops/pipelines/):
|
|
Classic pipelines defined in the UI or YAML pipelines.
|
|
|
|
Here is how to do it with YAML:
|
|
|
|
```yaml
|
|
# customize trigger to your needs
|
|
trigger:
|
|
branches:
|
|
include:
|
|
- main
|
|
- refs/tags/*
|
|
|
|
variables:
|
|
GO_VERSION: "1.17"
|
|
|
|
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.
|
|
|
|
[goreleaser-extension]: https://marketplace.visualstudio.com/items?itemName=GoReleaser.goreleaser
|
|
[marketplace]: https://marketplace.visualstudio.com/azuredevops
|