如何:
无法找到如何使用Gitlab API(http://doc.gitlab.com/ce/api/)获取上述所有内容.有没有一种方法Gitlab API可以帮助直接获得这些或通过引入某种黑客.
我创建了一个触发器(使用settings/ci_cd页面).触发器下方的说明告诉我使用版本3 API调用它(当然,我将令牌变量设置为触发器部分下面的令牌):
curl -X POST \
-F token=${TOKEN} \
-F ref=master \
https://gitlab.com/api/v3/projects/2313008/trigger/builds
Run Code Online (Sandbox Code Playgroud)
哪个只返回:
{"未找到错误404"}
我还尝试遵循API v4文档:
curl --request POST \
--form token=${TOKEN} \
--form ref=master \
https://gitlab.com/api/v4/projects/2313008/trigger/pipeline
Run Code Online (Sandbox Code Playgroud)
返回相同的错误.
是否需要其他设置?
我正在尝试编写脚本从我们的 GitLab 项目下载三个特殊文件。目前,我可以下载 artifacts.zip 以及 zip 中的各个文件,但不能下载其他两个特殊文件:metadata.gz 和 job.log。
这是我做过的一些事情:
# Grab the list of job data
r = requests.get("https://gitlab.local.com/api/v4/projects/12/jobs/13", headers={'PRIVATE-TOKEN':'...'}, verify='...')
# Display artifacts available (shows artifacts.zip, metadata.gz, and job.log)
r.json()['artifacts']
# Printing the filename of the artifacts (best in a for loop)
r.json()['artifacts'][0]['filename']
r.json()['artifacts'][1]['filename']
...
# Download artifacts.zip
r = requests.get(".../jobs/13/artifacts", ...)
with open(".../artifacts.zip", 'wb') as f:
f.write(artifacts.content)
# Download metadata.gz
?
Run Code Online (Sandbox Code Playgroud) 我尝试使用 VS Code 的 Gitlab 工作流插件。不幸的是它没有找到我的项目。我调试了一下,发现它调用了
https://mydomain/gitlab/api/v4/projects/mygroup%2Fmyproject
并且 api 返回
{
error: "404 Project Not Found"
}
Run Code Online (Sandbox Code Playgroud)
根据文档,这应该有效。
如果我打电话https://mydomain/gitlab/api/v4/projects/:id,其中 id 是我得到的项目编号
path_with_namespace: "mygroup/myproject",
Run Code Online (Sandbox Code Playgroud)
浏览互联网,我发现有些人声称这对他们也不起作用,但没有解决方案。其他人则说这对他们来说非常有效。
我尝试过使用 Gitlab CE 12.xx,现在使用https://github.com/sameersbn/docker-gitlab升级到最新版本 13 (13.0.6)
我尝试过几个项目但没有成功。
我是项目的维护者。
访问令牌具有插件请求的权限 api 和 read_user 。
显然我错过了一些东西。但什么?
编辑:
我的设置是将 docker 容器置于反向代理 apache 后面。也许授权没有按预期工作。该插件发送一个标头PRIVATE-TOKEN。我将检查标头是否已传递到 api。
没有。PRIVATE-TOKEN 标头由 docker 容器接收。
编辑2:
我建立了一个公共小组和一个公共项目来消除身份验证问题。还是不行。搜索返回 404。
编辑3:
由于 Dashrath Mundkar 询问了 curl 命令:
curl -H "PRIVATE-TOKEN:XXXXXXX" https://mydomain/gitlab/api/v4/projects/mygroup%2Fmyproject
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用此端点使用 GitLab api 在文件的特定行上创建关于合并请求的讨论说明:https : //docs.gitlab.com/ee/api/discussions.html#create-new-合并请求线程
部分有效载荷要求 line_code
| 属性 | 类型 | 必需的 | 描述 |
|---|---|---|---|
| 位置[line_range][开始][line_code] | 细绳 | 是的 | 起始行的行代码 |
当我发出 POST 时,我收到以下回复:
"message": "400 (Bad request) \"Note {:line_code=>[\"can't be blank\", \"must be a valid line code\"], :position=>[\"is incomplete\"]}\" not given"
Run Code Online (Sandbox Code Playgroud)
这是什么line_code?它是某种计算值吗?这里的文档相当模糊。
当我为 merge_request 上的所有当前注释发出 GET 时,我可以看到一些注释有这个line_code(见下文)。我试图弄清楚如何为新笔记创造价值。
{
"id": 89,
"type": "DiffNote",
"body": "4",
"attachment": null,
"author": {
"id": 6,
"name": "brian c",
"username": "bc",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/f590a9cf57136732dd0cb5z9b1563390?s=80&d=identicon",
"web_url": "http://gitlab.mycompany.us/thisIsMe"
},
"created_at": "2021-01-11T21:46:23.861Z",
"updated_at": "2021-01-11T21:46:23.861Z",
"system": false,
"noteable_id": …Run Code Online (Sandbox Code Playgroud) 我尝试获取 .gitlab-ci.yaml 中某个 GitLab 项目的所有徽章,并按name找出某个徽章的id。我有以下脚本,我尝试使用 curl 调用徽章 api 并将 json 结果存储在名为BADGES的变量中:
build-backend:
stage: build
script:
- BADGES='curl --header "PRIVATE-TOKEN:$GITLAB_API_TOKEN" "https://gitlab.example.com/api/v4/projects/${CI_PROJECT_ID}/badges"'
- echo ${BADGES}
Run Code Online (Sandbox Code Playgroud)
当然,现在echo ${BADGES}将输出卷曲,因为我将其存储在变量的字符串中,但我不知道如何执行此操作。
在 JavaScript 中我会这样做:
const badges = ...CURL_RESPONSE...;
const versionBadge = badges.find(b => b.name === 'vBadge');
Run Code Online (Sandbox Code Playgroud)
这有可能吗?
从 GitLab 获取私有令牌并尝试在 Jenkins 中创建凭据后。新创建的凭据在下拉列表中不可见。
我使用的是詹金斯版本。2.73.3 和 GitLab 插件 1.5.1
假设我有一个 gitlab 访问令牌(由用户生成并提供给应用程序)。我可以通过实际尝试读取一些数据并查看该操作是否成功来发现该令牌是否可用于从存储库中读取。
如何确定该令牌是否具有特定存储库的写入权限(进行提交)?
我已经尝试学习多项目管道有一段时间了,除了 GitLab 文档之外,我还没有找到任何学习材料。如果我能看到一个例子,那真的会有帮助。我一直在项目 A 中的多项目管道中使用以下 ci 配置,但它不起作用:
trigger_job:
stage: trigger_release
trigger:
project: https://<gitlab-site>/api/v4/projects/<project-B-id>/trigger/pipeline
branch: master
strategy: depend
Run Code Online (Sandbox Code Playgroud)
这使得项目 A 中的管道永远处于挂起状态。我通过以下方式使用curl最终使配置工作:
trigger_job:
stage: trigger_release
script:
- curl --request POST --form "token=$CI_JOB_TOKEN" --form ref=master https://<gitlab-site>/api/v4/projects/<project-B-id>/trigger/pipeline
Run Code Online (Sandbox Code Playgroud)
然而,我真正需要的是在触发的作业完成后,在项目 A 管道中收集和使用项目 B 管道的工件。我怎么做?
无论我做什么,我的 gitlab-runner 服务都没有运行。我以前和以前更新时都遇到过同样的问题,它曾经开始运行,但现在根本没有启动。
我已经卸载然后重新安装它仍然是一样的。我想我没有完全卸载/删除。如何完全卸载 gitlab runner 或如何启动服务?
我也没有得到 gitlab-runner 的主目录。当我说 gitlab-runner list 时,我会得到以下配置详细信息。
ConfigFile=/home/rohith/.gitlab-runner/config.toml
Run Code Online (Sandbox Code Playgroud)
但我尝试 cd 到 gitlab-runner 用户目录我根本找不到目录。
gitlab-api ×10
gitlab ×9
gitlab-ci ×5
access-token ×1
android ×1
apache2 ×1
api ×1
git-commit ×1
gitlab-ce ×1
jenkins ×1
pipeline ×1
rest ×1
runner ×1