Goreleaser 未能在 gitlab 上发布工件

问题描述 投票:0回答:1

所以我正在尝试使用 goreleaser 来完成 gitlab(私人仓库)上的个人项目,但在构建过程中我被这个错误阻止了:

⨯ 31秒后释放失败 error=scmreleases: failed 发布工件:GET https://gitlab.com/api/v4/projects/night-gold/PROJECT/releases/0.0.10: 401 {消息:401 未经授权}

如你所见,我在 gitlab.com,所以我没有在 goreleaser.yml 中设置 gitlab_urls,因为我应该使用默认值。

我的gitlabci.yml:

stages:
  - release

release:
  stage: release
  image:
    name: goreleaser/goreleaser
    entrypoint: ['']
  only:
    - tags
  variables:
    # Disable shallow cloning so that goreleaser can diff between tags to
    # generate a changelog.
    GIT_DEPTH: 0
    GITLAB_TOKEN: $GITLAB_TOKEN
  script:
    - goreleaser release --clean

我的 goreleaser.yml:

project_name: PROJECTNAME
version: 1

before:
  hooks:
    - go mod tidy

builds:
  - env: [CGO_ENABLED=0]
    goos:
      - linux
    goarch:
      - amd64
      - arm64

archives:
  - format: tar.gz
    # this name template makes the OS and Arch compatible with the results of `uname`.
    name_template: >-
      {{ .ProjectName }}_
      {{- title .Os }}_
      {{- if eq .Arch "amd64" }}x86_64
      {{- else if eq .Arch "386" }}i386
      {{- else }}{{ .Arch }}{{ end }}
      {{- if .Arm }}v{{ .Arm }}{{ end }}

changelog:
  sort: asc
  filters:
    exclude:
      - "^docs:"
      - "^test:"

我按照文档中所写的那样生成了具有 api 权限的令牌,但它不起作用,更准确地说,该令牌具有维护者角色,我测试了它是否可以执行某些操作。

我在这里缺少什么?

编辑:

我目前找到了一些东西,goreleaser使用的url是这样的:

https://gitlab.com/api/v4/projects/User/Project_Name/releases/0.0.11

经过多次测试,我发现这种类型的 url 不起作用... gitlab.com/api/ 采用项目 ID 而不是 User/Project_Name,就我而言,它并不是真正的 401,我得到的是 404因为它的目标是一个不存在的 URL...

仍在寻找是否有解决方案。

gitlab gitlab-ci goreleaser
1个回答
0
投票

尝试将其添加到您的 .goreleaser.yaml 中:

gitlab_url: API:$GITLAB_REPO/api/v4/

© www.soinside.com 2019 - 2024. All rights reserved.