是否可以在特定运行器上运行管道?(不使用标签)
使用可行environments,甚至可行gitlab runner exec?
场景:
已有一个已有多个运行器的项目(用于注册运行器的特定项目令牌),并且具有自己的关联标签(因此也不能更改它们)。
我要添加一个新的运行器,但是需要首先对其进行测试以确保其正常工作,但是我需要强制在该机器上构建管道,而无需更改任何标签或运行器的特定项目。
如何从 GitLab 检查个人访问令牌的范围(权限)?给定个人访问令牌,获取该令牌允许的所有范围。
是否可以获取或跟踪特定运行程序当前正在运行的作业?
例如。我有很多项目,我想跟踪一个runner_id=123. gitlab_api 有 api[url]/api/v4/runners/[runner_id]来获取 runner=123 的详细信息。但结果并没有显示出我所期望的 job_id 目前正在工作的内容。那么是否有可能像这样获取或跟踪。
在 Gitlab 网页上,您可以检查分支落后于或领先于主分支的提交数量。我的问题是是否可以通过“gitlab API”获取有关此内容的信息?我检查了文档,但不幸的是找不到任何东西。
我有一个本地 GitLab 安装,它带有一个本地 PyPI 服务器来存储公司内部的 Python 包。
如何配置我的 PyPI 以在两个索引服务器中搜索包?
我阅读了.pypirc/pip/pip.ini并找到了各种设置,但到目前为止还没有解决方案。
[global]或 中配置索引服务器会产生混淆[install]。我假设后一个是pip install. (此处的文档不清楚。)-r gitlab引用一个[gitlab]部分一样引用配置文件中的存储库条目,但pip 不能使用这种命名引用...所以我想要达到的目标:
pip 应该能够从 pypi.org 安装和更新常规包,如 coloramapip 应该能够从 gitlab.company.com 安装和更新软件包
__token__) 和密码 ( 7a3b62342c784d87) 进行身份验证到目前为止的实验:
[global]
[install]
find-links =
https://pypi.org
https://gitlab.company.de/api/v4/projects/2142423/packages/pypi
trusted-host =
https://pypi.org
https://gitlab.company.de/api/v4/projects/2142423/packages/pypi
[distutils]
index-servers =
gitlab
[gitlab] …Run Code Online (Sandbox Code Playgroud) 现在我正在尝试这个API(只是从项目中随机选择一个id)
https://gitlab.com/api/v4/projects/3199253/repository/contributors
Run Code Online (Sandbox Code Playgroud)
我发现提交数始终为 1,而贡献者页面上的提交数则大于 1。同时,名单尚未完成,很多人不在返回结果中。
我检查了文档,似乎我不需要对其进行分页,或者我可以选择这样做。
https://docs.gitlab.com/ee/api/repositories.html#contributors
如果有更好的方法来统计用户在 GitLab 上的所有提交,请告诉我。提前致谢!
更新:刚刚在 Gitlab 上发现了一个相关问题:
https://gitlab.com/gitlab-org/gitlab/-/issues/233119
看起来由于目前的错误,提交计数将始终为 1?
更新:现在我正在扫描提交列表,并使用 for 循环将它们与当前用户进行匹配(他们说它比 map() 具有更好的性能)。猜测这会消耗不必要的 API 调用使用量。
如何:
无法找到如何使用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) 我尝试获取 .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)
这有可能吗?