GitLab发布链接API:404项目未找到。

4

我正在尝试将一个资产添加到GitLab的发布中,但是在尝试添加链接时,我一直收到 {"message":"404 Project Not Found"} 的错误提示。我试图遵循https://docs.gitlab.com/13.7/ee/api/releases/links.html#create-a-link,但我可能要么疯了或者漏掉了什么。我已经输出了${PACKAGE_REGISTRY_URL}/${PKG_VERSION}/${LINUX}${RELEASE_REGISTRY_URL}/${CI_PROJECT_ID}/releases/v${PKG_VERSION}/assets/links两个 URL,并且这两个都是有效的,并且看起来是正确的链接。如果我使用第一个链接(PACKAGE_URL),那么我会下载我想要的文件。如果我使用第二个链接(RELEASE_REGISTRY_URL),则会显示一个空数组的页面。

enter image description here

我还验证了所有变量都具有我所期望的正确值。我尝试过使用和不使用link_type选项。

# This works with no problem
curl --header "JOB-TOKEN: $CI_JOB_TOKEN" \
  --upload-file bin/${LINUX} "${PACKAGE_REGISTRY_URL}/${PKG_VERSION}/${LINUX}"

# This returns: {"message":"404 Project Not Found"}
curl --request POST \
  --header "JOB-TOKEN: $CI_JOB_TOKEN" \
  --data link_type="other" \
  --data name="${LINUX}" \
  --data url="${PACKAGE_REGISTRY_URL}/${PKG_VERSION}/${LINUX}" \
  --data filepath="bin/${LINUX}" \
    "${RELEASE_REGISTRY_URL}/${CI_PROJECT_ID}/releases/v${PKG_VERSION}/assets/links"

"${PACKAGE_REGISTRY_URL}/${PKG_VERSION}/${LINUX}" -> # https://gitlab.com/api/v4/projects/<myidishere>/packages/generic/test/1.1.0/test-1.1.0-linux

"${RELEASE_REGISTRY_URL}/${CI_PROJECT_ID}/releases/v${PKG_VERSION}/assets/links" -> # https://gitlab.com/api/v4/projects/<myidishere>/releases/v1.1.0/assets/links

这是GitLab文档中的示例。
curl --request POST \
    --header "PRIVATE-TOKEN: <your_access_token>" \
    --data name="hellodarwin-amd64" \
    --data url="https://gitlab.example.com/mynamespace/hello/-/jobs/688/artifacts/raw/bin/hello-darwin-amd64" \
    --data filepath="/bin/hellodarwin-amd64" \
    "https://gitlab.example.com/api/v4/projects/20/releases/v1.7.0/assets/links"
3个回答

0

这是一个权限问题。在调用GitLab API时,我们通常使用CI_JOB_TOKEN,而CI_JOB_TOKEN复制了运行它的用户的权限。

请将您自己设为所在仓库的所有者(或授予更高的权限)。

下面的脚本仅在我拥有更高的访问发布API的权限时才起作用。

    - |-
      PAYLOAD=$(cat << JSON
      {
        "tag_name": "$VERSION",
        "ref": "$CI_COMMIT_SHA"
      }
      JSON
      )
    - |
      curl --fail-with-body \
        --data-binary "${PAYLOAD}" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json" \
        --header "Job-Token: ${CI_JOB_TOKEN}" \
        --request POST \
        "https://git.ivxs.uk/api/v4/projects/${CI_PROJECT_ID}/releases"

0

1
您不能使用 CI_JOB_TOKEN 进行资产 API 的身份验证... - MUHAHA

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接