2017-09-10 22:07:28 +02:00
|
|
|
---
|
2017-11-27 01:55:59 +02:00
|
|
|
title: Environment
|
2017-09-10 22:07:28 +02:00
|
|
|
---
|
|
|
|
|
2019-08-26 09:31:38 +02:00
|
|
|
## API Tokens
|
2017-09-10 22:07:28 +02:00
|
|
|
|
2019-06-29 16:02:40 +02:00
|
|
|
GoReleaser requires either a GitHub API token with the `repo` scope selected to
|
2019-08-26 09:31:38 +02:00
|
|
|
deploy the artifacts to GitHub **or** a GitLab API token with `api` scope **or** a Gitea API token.
|
|
|
|
You can create one [here](https://github.com/settings/tokens/new) for GitHub
|
|
|
|
or [here](https://gitlab.com/profile/personal_access_tokens) for GitLab
|
|
|
|
or in `Settings | Applications | Generate New Token` page of your Gitea instance.
|
2017-09-10 22:07:28 +02:00
|
|
|
|
2019-08-26 09:31:38 +02:00
|
|
|
This token should be added to the environment variables as `GITHUB_TOKEN` or `GITLAB_TOKEN` or `GITEA_TOKEN` respecively.
|
2017-09-10 22:07:28 +02:00
|
|
|
Here is how to do it with Travis CI:
|
|
|
|
[Defining Variables in Repository Settings](https://docs.travis-ci.com/user/environment-variables/#Defining-Variables-in-Repository-Settings).
|
|
|
|
|
2019-08-26 09:31:38 +02:00
|
|
|
Alternatively, you can provide the GitHub/GitLab token in a file.
|
|
|
|
GoReleaser will check `~/.config/goreleaser/github_token`, `~/.config/goreleaser/gitlab_token`
|
|
|
|
and `~/.config/goreleaser/gitea_token` by default, you can change that in
|
2018-02-03 20:47:26 +02:00
|
|
|
the `.goreleaser.yml` file:
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
# .goreleaser.yml
|
|
|
|
env_files:
|
2019-06-29 16:02:40 +02:00
|
|
|
# use only one or release will fail!
|
|
|
|
github_token: ~/.path/to/my/gh_token
|
|
|
|
gitlab_token: ~/.path/to/my/gl_token
|
2019-08-26 09:31:38 +02:00
|
|
|
gitea_token: ~/.path/to/my/gitea_token
|
2018-02-03 20:47:26 +02:00
|
|
|
```
|
2018-02-03 04:06:48 +02:00
|
|
|
|
2020-05-10 23:59:21 +02:00
|
|
|
!!! info
|
|
|
|
you can define multiple env files, but the release process will fail
|
|
|
|
because multiple tokens are defined. Use only one.
|
2019-06-29 16:02:40 +02:00
|
|
|
|
2018-02-19 01:37:59 +02:00
|
|
|
## GitHub Enterprise
|
|
|
|
|
|
|
|
You can use GoReleaser with GitHub Enterprise by providing its URLs in
|
|
|
|
the `.goreleaser.yml` configuration file:
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
# .goreleaser.yml
|
|
|
|
github_urls:
|
2018-05-09 01:43:40 +02:00
|
|
|
api: https://git.company.com/api/v3/
|
|
|
|
upload: https://git.company.com/api/uploads/
|
|
|
|
download: https://git.company.com/
|
2019-01-19 22:16:25 +02:00
|
|
|
# set to true if you use a self-signed certificate
|
|
|
|
skip_tls_verify: false
|
2018-02-19 01:37:59 +02:00
|
|
|
```
|
|
|
|
|
|
|
|
If none are set, they default to GitHub's public URLs.
|
|
|
|
|
2019-06-29 16:02:40 +02:00
|
|
|
## GitLab Enterprise or private hosted
|
|
|
|
|
2019-08-26 09:31:38 +02:00
|
|
|
You can use GoReleaser with GitLab Enterprise by providing its URLs in
|
2019-06-29 16:02:40 +02:00
|
|
|
the `.goreleaser.yml` configuration file:
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
# .goreleaser.yml
|
|
|
|
gitlab_urls:
|
|
|
|
api: https://gitlab.mycompany.com/api/v4/
|
|
|
|
download: https://gitlab.company.com
|
|
|
|
# set to true if you use a self-signed certificate
|
|
|
|
skip_tls_verify: false
|
|
|
|
```
|
2018-05-09 01:43:40 +02:00
|
|
|
|
2019-06-29 16:02:40 +02:00
|
|
|
If none are set, they default to GitLab's public URLs.
|
2018-05-09 01:43:40 +02:00
|
|
|
|
2019-08-26 09:31:38 +02:00
|
|
|
## Gitea
|
|
|
|
|
|
|
|
You can use GoReleaser with Gitea by providing its URLs in
|
|
|
|
the `.goreleaser.yml` configuration file:
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
# .goreleaser.yml
|
|
|
|
gitea_urls:
|
|
|
|
api: https://gitea.myinstance.com/api/v1/
|
2020-11-21 15:36:29 +02:00
|
|
|
download: https://gitea.myinstance.com
|
2019-08-26 09:31:38 +02:00
|
|
|
# set to true if you use a self-signed certificate
|
|
|
|
skip_tls_verify: false
|
|
|
|
```
|
|
|
|
|
2017-12-04 13:49:29 +02:00
|
|
|
## The dist folder
|
2017-11-27 01:50:49 +02:00
|
|
|
|
|
|
|
By default, GoReleaser will create its artifacts in the `./dist` folder.
|
|
|
|
If you must, you can change it by setting it in the `.goreleaser.yml` file:
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
# .goreleaser.yml
|
|
|
|
dist: another-folder-that-is-not-dist
|
|
|
|
```
|
2017-11-27 01:58:58 +02:00
|
|
|
|
2017-12-04 13:49:29 +02:00
|
|
|
## Using the `main.version`
|
2017-11-27 01:58:58 +02:00
|
|
|
|
2018-05-06 14:19:14 +02:00
|
|
|
Default wise GoReleaser sets three _ldflags_:
|
2018-05-06 10:44:46 +02:00
|
|
|
|
2018-05-28 15:49:38 +02:00
|
|
|
- `main.version`: Current Git tag (the `v` prefix is stripped) or the name of
|
2018-05-06 14:19:14 +02:00
|
|
|
the snapshot, if you're using the `--snapshot` flag
|
2018-05-28 15:49:38 +02:00
|
|
|
- `main.commit`: Current git commit SHA
|
|
|
|
- `main.date`: Date according [RFC3339](https://golang.org/pkg/time/#pkg-constants)
|
2018-05-06 10:44:46 +02:00
|
|
|
|
2017-11-27 01:58:58 +02:00
|
|
|
You can use it in your `main.go` file:
|
|
|
|
|
|
|
|
```go
|
|
|
|
package main
|
|
|
|
|
2018-05-06 10:44:46 +02:00
|
|
|
import "fmt"
|
|
|
|
|
|
|
|
var (
|
|
|
|
version = "dev"
|
|
|
|
commit = "none"
|
|
|
|
date = "unknown"
|
2020-04-21 18:18:45 +02:00
|
|
|
builtBy = "unknown"
|
2018-05-06 10:44:46 +02:00
|
|
|
)
|
2017-11-27 01:58:58 +02:00
|
|
|
|
|
|
|
func main() {
|
2020-04-21 18:18:45 +02:00
|
|
|
fmt.Printf("my app %s, commit %s, built at %s by %s", version, commit, date, builtBy)
|
2017-11-27 01:58:58 +02:00
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
You can override this by changing the `ldflags` option in the `build` section.
|
2020-01-31 20:38:56 +02:00
|
|
|
|
|
|
|
## Overriding Git Tags
|
|
|
|
|
2020-05-10 23:59:21 +02:00
|
|
|
You can force the [build tag](/customization/build#define-build-tag)
|
|
|
|
and [previous changelog tag](/customization/release#define-previous-tag)
|
|
|
|
using environment variables. This is useful in cases where one git commit
|
|
|
|
is referenced by multiple git tags.
|