mirror of
https://github.com/goreleaser/goreleaser.git
synced 2025-01-10 03:47:03 +02:00
0cdf994fb1
closes #472
98 lines
2.5 KiB
Markdown
98 lines
2.5 KiB
Markdown
---
|
|
title: Environment
|
|
weight: 20
|
|
menu: true
|
|
---
|
|
|
|
## GitHub Token
|
|
|
|
GoReleaser requires a GitHub API token with the `repo` scope selected to
|
|
deploy the artifacts to GitHub.
|
|
You can create one [here](https://github.com/settings/tokens/new).
|
|
|
|
This token should be added to the environment variables as `GITHUB_TOKEN`.
|
|
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).
|
|
|
|
Alternatively, you can provide the GitHub token in a file. GoReleaser will check `~/.config/goreleaser/github_token` by default, you can change that in
|
|
the `.goreleaser.yml` file:
|
|
|
|
```yaml
|
|
# .goreleaser.yml
|
|
env_files:
|
|
github_token: ~/.path/to/my/token
|
|
```
|
|
|
|
## GitHub Enterprise
|
|
|
|
You can use GoReleaser with GitHub Enterprise by providing its URLs in
|
|
the `.goreleaser.yml` configuration file:
|
|
|
|
```yaml
|
|
# .goreleaser.yml
|
|
github_urls:
|
|
api: https://git.company.com/api/v3/
|
|
upload: https://git.company.com/api/uploads/
|
|
download: https://git.company.com/
|
|
```
|
|
|
|
If none are set, they default to GitHub's public URLs.
|
|
|
|
**IMPORTANT**: be careful with the URLs, they may change from one instalation
|
|
to another. If they are wrong, goreleaser will fail at some point, so, make
|
|
sure they're right before opening an issue. See for example [#472][472].
|
|
|
|
[472]: https://github.com/goreleaser/goreleaser/issues/472
|
|
|
|
## The dist folder
|
|
|
|
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
|
|
```
|
|
|
|
## Using the `main.version`
|
|
|
|
Default wise GoReleaser sets three _ldflags_:
|
|
|
|
* `main.version`: Current Git tag (the `v` prefix is stripped) or the name of
|
|
the snapshot, if you're using the `--snapshot` flag
|
|
* `main.commit`: Current git commit SHA
|
|
* `main.date`: Date according [RFC3339](https://golang.org/pkg/time/#pkg-constants)
|
|
|
|
You can use it in your `main.go` file:
|
|
|
|
```go
|
|
package main
|
|
|
|
import "fmt"
|
|
|
|
var (
|
|
version = "dev"
|
|
commit = "none"
|
|
date = "unknown"
|
|
)
|
|
|
|
func main() {
|
|
fmt.Printf("%v, commit %v, built at %v", version, commit, date)
|
|
}
|
|
```
|
|
|
|
You can override this by changing the `ldflags` option in the `build` section.
|
|
|
|
## Customizing Git
|
|
|
|
By default, GoReleaser uses full length commit hashes when setting a `main.commit`
|
|
_ldflag_ or creating filenames in `--snapshot` mode.
|
|
|
|
You can use short, 7 character long commit hashes by setting it in the `.goreleaser.yml`:
|
|
|
|
```yaml
|
|
# .goreleaser.yml
|
|
git:
|
|
short_hash: true
|
|
```
|