标签: gitlab-api

从Gitlab API获取MR相关数据

如何:

  1. 获取特定合并请求中的所有提交.
  2. 获取在特定合并请求中提交的所有用户.
  3. 合并请求中特定 用户添加/删除/更新的行数.

无法找到如何使用Gitlab API(http://doc.gitlab.com/ce/api/)获取上述所有内容.有没有一种方法Gitlab API可以帮助直接获得这些或通过引入某种黑客.

api git-commit gitlab gitlab-api

6
推荐指数
1
解决办法
369
查看次数

Gitlab Trigger API返回404

我创建了一个触发器(使用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 gitlab-ci gitlab-api

6
推荐指数
2
解决办法
1567
查看次数

如何从 GitLab API 下载metadata.gz 和 job.log

我正在尝试编写脚本从我们的 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)

gitlab gitlab-api

6
推荐指数
1
解决办法
1080
查看次数

使用命名空间/项目名称而不是 id 时,Gitlab api v4 在项目搜索时返回 404

我尝试使用 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)

apache2 gitlab gitlab-api gitlab-ce

6
推荐指数
1
解决办法
8280
查看次数

创建新的合并请求线程时引用的 GitLab line_code 是什么

我正在尝试使用此端点使用 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 gitlab-api

6
推荐指数
1
解决办法
227
查看次数

在 GitLab CI 脚本中使用 CURL 响应

我尝试获取 .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 gitlab-ci gitlab-api

6
推荐指数
1
解决办法
8836
查看次数

GitLab API 令牌在 Jenkins 凭证中不可见

从 GitLab 获取私有令牌并尝试在 Jenkins 中创建凭据后。新创建的凭据在下拉列表中不可见。

创建凭证 在此输入图像描述

打开下拉菜单时看不到任何凭据 在此输入图像描述

我使用的是詹金斯版本。2.73.3 和 GitLab 插件 1.5.1

android jenkins gitlab-ci gitlab-api

5
推荐指数
0
解决办法
759
查看次数

查询gitlab访问令牌的访问权限

假设我有一个 gitlab 访问令牌(由用户生成并提供给应用程序)。我可以通过实际尝试读取一些数据并查看该操作是否成功来发现该令牌是否可用于从存储库中读取。

如何确定该令牌是否具有特定存储库的写入权限(进行提交)?

rest access-token gitlab gitlab-api

5
推荐指数
1
解决办法
639
查看次数

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 管道的工件。我怎么做?

pipeline gitlab gitlab-ci gitlab-api

5
推荐指数
1
解决办法
5275
查看次数

如何从centos完全删除/卸载gitlab-runner

无论我做什么,我的 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 用户目录我根本找不到目录。

runner gitlab gitlab-ci gitlab-ci-runner gitlab-api

5
推荐指数
2
解决办法
8601
查看次数