我试图通过使用API命令在CI/CD中自动创建ENV变量,但不幸的是得到401未授权错误。
以前我用同样的方法做这个,并且能够做到。
但现在它抛出了一个错误,请谁帮我找出。
命令:
curl --request POST --header “PRIVATE-TOKEN: <your_access_token>” \
“https://gitlab.com/api/v4/projects/1/variables” --form “key=NEW_VARIABLE” --form “value=new value”
请查看错误消息:
1条答案
按热度按时间mf98qq941#
“创建变量”API调用实际上如下所示:
(make请务必使用正确的双引号
"
,而不要使用“
)仔细检查项目的ID(在本例中为“1”),并确保使用令牌进行身份验证的用户具有正确的权限:
他们必须是“维护者”或“所有者”,才能拥有“管理项目级CI/CD变量”的权限。
例如,使用一个Personal Access Token与
api
的作用域,从glpat-
(glpat-xxxxxxx
)开始,我可以先用list my projects(usingjq
):curl -XGET --header "PRIVATE-TOKEN: glpat-xxxx" "https://gitlab.com/api/v4/projects/owned?=true"|jq ".[] | \"\(.id) \(.path_with_namespace)\""
这样我就可以找到
然后,我可以列出现有项目的变量:
curl -XGET --header "PRIVATE-TOKEN: glpat-xxxx" "https://gitlab.com/api/v4/projects/<projectId>/variables"
结果:
我对那个项目没有任何意见。
我将设置一个:
curl -XPOST --header "PRIVATE-TOKEN: glpat-xxxx" "https://gitlab.com/api/v4/projects/<projectId>/variables" --form "key=NEW_VARIABLE" --form "value=new value"
结果:
让我们再次确认:
curl -XGET --header "PRIVATE-TOKEN: glpat-xxxx" "https://gitlab.com/api/v4/projects/<projectId>/variables"
结果:
它确实有效。
OP Anirban Das在注解中确认了Postman的使用方式问题:
实际上,在Postman的正文中,选择“
form
”,在那里我直接提到了Key
部分中的键名和Value
部分中的值。但这并不正确。
在
Key
部分中,我们需要提到“key
“,并且键名应该在Value
部分中。类似地,“
value
“位于key部分,其值位于Value
部分。此操作生效后,您将在右侧导航窗格中看到“
</>
“图标,该图标将为您提供相应的curl
命令