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

问题描述

我正在尝试向 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"

解决方法

我改用了 JSON 内容,这似乎解决了问题。

https://docs.gitlab.com/ee/development/documentation/restful_api_styleguide.html#post-data-using-json-content

curl --request POST \
  --header "PRIVATE-TOKEN: $CI_JOB_TOKEN" \
  --header "content-type: application/json" \
  --data '{"name": "${LINUX}","url": "${PACKAGE_REGISTRY_URL}/${PKG_VERSION}/${LINUX}"}' \
  --url "${RELEASE_REGISTRY_URL}/${CI_PROJECT_ID}/releases/v${PKG_VERSION}/assets/links"

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...