1
0
mirror of https://github.com/goreleaser/goreleaser.git synced 2025-01-10 03:47:03 +02:00
goreleaser/www/docs/ci/actions.md

159 lines
4.7 KiB
Markdown
Raw Normal View History

---
title: GitHub Actions
---
GoReleaser can also be used within our official [GoReleaser Action][goreleaser-action]
through [GitHub Actions][actions].
You can create a workflow for pushing your releases by putting YAML configuration to
`.github/workflows/release.yml`.
## Usage
### Workflow
2019-09-29 16:32:25 +02:00
Below is a simple snippet to use this action in your workflow:
```yaml
2019-09-29 16:32:25 +02:00
name: goreleaser
on:
2019-09-29 16:32:25 +02:00
pull_request:
push:
2019-09-29 16:32:25 +02:00
jobs:
2019-09-29 16:32:25 +02:00
goreleaser:
runs-on: ubuntu-latest
steps:
2019-09-29 16:32:25 +02:00
-
name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
2019-09-29 16:32:25 +02:00
-
name: Set up Go
uses: actions/setup-go@v2
with:
go-version: 1.14
2019-09-29 16:32:25 +02:00
-
name: Run GoReleaser
uses: goreleaser/goreleaser-action@v2
2019-09-29 16:32:25 +02:00
with:
version: latest
args: release --rm-dist
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
```
!!! info
Note the `fetch-depth: 0` option on the `Checkout` workflow step. It is required for the change log to work correctly.
### Run on new tag
If you want to run GoReleaser only on new tag, you can use this event:
```yaml
on:
push:
tags:
- '*'
```
Or with a condition on GoReleaser step:
```yaml
-
name: Run GoReleaser
uses: goreleaser/goreleaser-action@v2
if: startsWith(github.ref, 'refs/tags/')
with:
version: latest
args: release --rm-dist
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
```
!!! tip
For detailed instructions please follow GitHub Actions [workflow syntax][syntax].
2019-09-29 16:32:25 +02:00
### Signing
If [signing is enabled][signing] in your GoReleaser configuration, you can use the [Import GPG][import-gpg]
GitHub Action along with this one:
```yaml
-
name: Import GPG key
id: import_gpg
uses: crazy-max/ghaction-import-gpg@v2
env:
GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }}
PASSPHRASE: ${{ secrets.PASSPHRASE }}
-
name: Run GoReleaser
uses: goreleaser/goreleaser-action@v2
with:
version: latest
args: release --rm-dist
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GPG_FINGERPRINT: ${{ steps.import_gpg.outputs.fingerprint }}
```
And reference the fingerprint in your signing configuration using the `GPG_FINGERPRINT` environment variable:
```yaml
signs:
- artifacts: checksum
args: ["--batch", "-u", "{{ .Env.GPG_FINGERPRINT }}", "--output", "${signature}", "--detach-sign", "${artifact}"]
```
2019-09-29 16:32:25 +02:00
## Customizing
### Inputs
2019-01-26 01:47:17 +02:00
2019-09-29 16:32:25 +02:00
Following inputs can be used as `step.with` keys
| Name | Type | Default | Description |
|-----------|--------|----------|-------------------------------------------|
| `version` | String | `latest` | GoReleaser version. Example: `v0.117.0` |
| `args` | String | | Arguments to pass to GoReleaser |
| `workdir` | String | `.` | Working directory (below repository root) |
2019-01-26 01:47:17 +02:00
### Environment Variables
Following environment variables can be used as `step.env` keys
| Name | Description |
|----------------|-------------------------------------------------------|
| `GITHUB_TOKEN` | [GITHUB_TOKEN][github-token] as provided by `secrets` |
## Limitation
`GITHUB_TOKEN` permissions [are limited to the repository][about-github-token] that contains your workflow.
If you need to push the homebrew tap to another repository, you must therefore create a custom
[Personal Access Token][pat] with `repo` permissions and [add it as a secret in the repository][secrets]. If you
create a secret named `GH_PAT`, the step will look like this:
```yaml
-
name: Run GoReleaser
uses: goreleaser/goreleaser-action@v2
with:
version: latest
args: release --rm-dist
env:
GITHUB_TOKEN: ${{ secrets.GH_PAT }}
```
2019-09-29 16:32:25 +02:00
[goreleaser-action]: https://github.com/goreleaser/goreleaser-action
[actions]: https://github.com/features/actions
[syntax]: https://help.github.com/en/articles/workflow-syntax-for-github-actions#About-yaml-syntax-for-workflows
2020-05-27 09:58:38 +02:00
[signing]: https://goreleaser.com/customization/sign/
[import-gpg]: https://github.com/crazy-max/ghaction-import-gpg
[github-token]: https://help.github.com/en/actions/configuring-and-managing-workflows/authenticating-with-the-github_token
[about-github-token]: https://help.github.com/en/actions/configuring-and-managing-workflows/authenticating-with-the-github_token#about-the-github_token-secret
[pat]: https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/
[secrets]: https://help.github.com/en/actions/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets