1
0
mirror of https://github.com/goreleaser/goreleaser.git synced 2025-01-10 03:47:03 +02:00
goreleaser/www/docs/scm/gitlab.md
Steve Azzopardi 68ff8e996f
feat: support templates for scm urls (#2465)
Background
---
When a git repository is hosted in multiple GitLab instances the
`.goreleaser.yml` needs to take in consideration both APIs endpoints. At
the moment it defaults to GitLab.com and you can override it with
`gitlab_urls` however this forces you to only support 1 GitLab instance.

We need this for
https://gitlab.com/gitlab-com/gl-infra/infrastructure/-/issues/14122
where we have a tool that is developed on GitLab.com but then mirrored
to an internal GitLab instance since we need it to operate GitLab.com
even when it's down.

Solution
---
Support templates like `{{ .Env.CI_SERVER_URL }}` for the
`gitlab_urls`, `github_urls`  and `gitea_urls` so it can use environment
variables and the same `.goreleaser` file can be used in multiple SCM
instances.

Co-authored-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
2021-09-09 01:42:13 +00:00

51 lines
1.6 KiB
Markdown

# GitLab
## API Token
GoReleaser requires an API token with the `api` scope selected to deploy the artifacts to GitLab.
You can create one [here](https://gitlab.com/profile/personal_access_tokens).
This token should be added to the environment variables as `GITLAB_TOKEN`.
Alternatively, you can provide the GitLab token in a file.
GoReleaser will check `~/.config/goreleaser/gitlab_token` by default, but you can change that in the `.goreleaser.yml` file:
```yaml
# .goreleaser.yml
env_files:
gitlab_token: ~/.path/to/my/gitlab_token
```
## GitLab Enterprise or private hosted
You can use GoReleaser with GitLab Enterprise by providing its URLs in the
`.goreleaser.yml` configuration file. This takes a normal string or a template value.
```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
```
If none are set, they default to GitLab's public URLs.
!!! note
Releasing to a private-hosted GitLab CE will only work for version `v12.9+`, due to dependencies
on [release](https://docs.gitlab.com/ee/user/project/releases/index.html) functionality
and [direct asset linking](https://docs.gitlab.com/ee/user/project/releases/index.html#permanent-links-to-release-assets).
## Example release
Here's an example of how the release might look like:
<a href="https://gitlab.com/goreleaser/example/-/releases">
<figure>
<img src="https://img.carlosbecker.dev/goreleaser-gitlab.png"/>
<figcaption>Example release on GitLab.</figcaption>
</figure>
</a>