postman 无法使用API标记创建ENV变量

q9yhzks0  于 2022-11-07  发布在  Postman
关注(0)|答案(1)|浏览(239)

我试图通过使用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”

请查看错误消息:

mf98qq94

mf98qq941#

“创建变量”API调用实际上如下所示:

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"

(make请务必使用正确的双引号",而不要使用
仔细检查项目的ID(在本例中为“1”),并确保使用令牌进行身份验证的用户具有正确的权限:
他们必须是“维护者”或“所有者”,才能拥有“管理项目级CI/CD变量”的权限。
例如,使用一个Personal Access Tokenapi的作用域,从glpat-glpat-xxxxxxx)开始,我可以先用list my projectsusing jq):
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"
结果:

{"variable_type":"env_var","key":"NEW_VARIABLE","value":"new value","protected":false,"masked":false,"environment_scope":"*"}

让我们再次确认:
curl -XGET --header "PRIVATE-TOKEN: glpat-xxxx" "https://gitlab.com/api/v4/projects/<projectId>/variables"
结果:

[{"variable_type":"env_var","key":"NEW_VARIABLE","value":"new value","protected":false,"masked":false,"environment_scope":"*"}]

它确实有效。
OP Anirban Das在注解中确认了Postman的使用方式问题:
实际上,在Postman的正文中,选择“form”,在那里我直接提到了Key部分中的键名和Value部分中的值。
但这并不正确。
Key部分中,我们需要提到“key“,并且键名应该在Value部分中。
类似地,“value“位于key部分,其值位于Value部分。
此操作生效后,您将在右侧导航窗格中看到“</>“图标,该图标将为您提供相应的curl命令

相关问题