我正在翻阅gitlab上的文档,找不到通过标签过滤出项目的方法。我确实注意到,如果您转到仪表板,则在“标签”侧出现“浏览项目”,然后是“全部”,这是一个由数据库中所有标签填充的下拉菜单,当选择一个菜单时,您可以过滤列表。
由于显然可以通过gitlab获得,有没有一种方法可以通过API进行请求?无需请求所有项目,然后手动遍历所有项目以查看标签是否匹配?
我正在尝试使用GitLab合并请求API和python和python请求包创建合并请求。这是我的代码的一部分
import requests, json
MR = 'http://www.gitlab.com/api/v4/projects/317/merge_requests'
id = '317'
gitlabAccessToken = 'MySecretAccessToken'
sourceBranch = 'issue110'
targetBranch = 'master'
title = 'title'
description = 'description'
header = { 'PRIVATE-TOKEN' : gitlabAccessToken,
'id' : id,
'title' : title,
'source_branch' : sourceBranch,
'target_branch' : targetBranch
}
reply = requests.post(MR, headers = header)
status = json.loads(reply.text)
Run Code Online (Sandbox Code Playgroud)
但我在回复中不断收到以下消息
{'error': 'title is missing, source_branch is missing, target_branch is missing'}
Run Code Online (Sandbox Code Playgroud)
我应该更改其要求以使其正常工作吗?
我只想使用命令行(bash)在 Gitlab 上添加一个新项目。有没有办法或者我必须转到 Gitlab 页面并通过 GUI 添加项目?
我明确地不是要向远程添加本地存储库 - 我知道如何做到这一点。我只是在寻找一种方法来从终端执行项目创建步骤,而无需转到 Gitlab 页面。
Gitlab-CE v8.14.3
我正在阅读GitLAB API 文档,并试图获取活动用户列表。我是管理员并创建了个人令牌。我这样做
$ curl -XGET "Private-Token: kfjakjfkjkd" https://company.domain.com/api/v3/users?active=true
Run Code Online (Sandbox Code Playgroud)
并不断收到 401(未经授权)错误。就像我说的,我是管理员。是什么赋予了?
我有一个 GitLab 项目,其设置如下:
myserver.com/SuperGroup/SubGroup/SubGroupProject以下项目的树是一个顶级txt文件和一个目录内的txt文件。我从 GitLab API 获取树:
myserver.com/api/v4/projects/1/repository/tree?recursive=true[{"id":"aba61143388f605d3fe9de9033ecb4575e4d9b69","name":"myDirectory","type":"tree","path":"myDirectory","mode":"040000"},{"id":"0e3a2b246ab92abac101d0eb2e96b57e2d24 915d ","name":"1stLevelFile.txt","type":"blob","path":"myDirectory/1stLevelFile.txt","mode":"100644"},{"id":"3501682ba833c3e50addab55e42488e98200b323", “名称”:“top_level.txt”,“类型”:“blob”,“路径”:“top_level.txt”,“模式”:“100644”}]
如果我请求内容,top_level.txt它们将通过以下方式毫无问题地返回:
myserver.com/api/v4/projects/1/repository/files/top_level.txt?ref=master但是我无法myDirectory/1stLevelFile.txt通过我尝试的任何 API 调用进行访问。例如:
myserver.com/api/v4/projects/1/repository/files/"myDirectory%2F1stLevelFile.txt"?ref=master
和,myserver.com/api/v4/projects/1/repository/files/"myDirectory%2F1stLevelFile%2Etxt"?ref=master结果是:
未找到 在此服务器上未找到请求的 URL /api/v4/projects/1/repository/files/myDirectory/1stLevelFile.txt。Apache/2.4.25 (Debian) 服务器位于 myserver.com 端口 443
myserver.com/api/v4/projects/1/repository/files/"myDirectory/1stLevelFile.txt"?ref=master和,myserver.com/api/v4/projects/1/repository/files?ref=master&path=myDirectory%2F1stLevelFile.txt结果是:
未找到错误404”
组件的版本是:
GitLab 10.6.3-ee
GitLab Shell 6.0.4
GitLab Workhorse v4.0.0
GitLab API v4
Ruby 2.3.6p384
Rails 4.2.10
postgresql 9.6.8
Run Code Online (Sandbox Code Playgroud)
根据我的研究,有一个类似的错误,已在 10.0.0 更新中修复。
我还添加了我的 ssh-key,尽管我怀疑它有任何效果,遵循此建议在 php 中解决相同的问题。
解决方案: 我最终通过调整服务器上安装的apache解决了。只需按照以下说明操作:https://gitlab.com/gitlab-org/gitlab-ce/issues/35079#note_76374269
我正在尝试从 GitLab 加载用户信息,以便我可以将用户名与问题相关联。查询问题时,受让人用户名不是直接可用的。相反,用户 ID 可用。
如果我使用/-/graphql-explorerGitLab 部署上的端点执行此 GraphQL 查询:
query {
users {
nodes {
id
name
username
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后返回 91 个用户。不过,这显然不是部署中的所有用户。我知道有些用户存在,但未包含在结果中。我可以使用这个 GraphQL 查询单独查询它们:
query {
user(username: "someusername") {
id
}
}
Run Code Online (Sandbox Code Playgroud)
并收到似乎正确描述用户的结果。
为什么此查询的结果中省略了某些用户?我知道大型结果集需要处理分页,但默认页面大小应该是 100,我收到的结果比这少。此外,如果我pageinfo在结果之后请求并询问用户,endCursor我将不会收到任何物品。
如何提交查询以获取所有用户?如果做不到这一点,我如何提交一个查询来获取所有可能是 aa 组的受让人(或者,如果失败,则是项目列表)的所有用户?
我想在没有工具的情况下在 GitHub 存储库上创建(推送)新文件git(因为该git工具在我的主机上不可用PHP)。所以我做了一些研究,发现了GitHub REST API。
我尝试使用curl个人访问令牌来上传或修改我的存储库上的文件。这是我找到的 shell 代码,并进行了curl如下更改:
curl -i https://api.github.com/repos/username/repo/newFile.txt -X PUT
\ -H 'Authorization: token xxxxxxxxxxxxxxxxxxxx' -d "{\"path\": \"newFile.txt\",
\ \"message\": \"update\", \"content\": \"$(openssl base64 -A -in newFile.txt)\", \"branch\":
\"master\",
\ \"sha\": $(curl -X GET https://api.github.com/repos/username/repo/newFile.txt | jq .sha)}"
Run Code Online (Sandbox Code Playgroud)
但我收到此错误:
HTTP/1.1 404 未找到
服务器:GitHub.com
我该如何解决这个问题?
PS 即使push file by emailGitHub 或 (GitLab) 上有服务,这也可以帮助通过电子邮件在我的存储库上创建文件。
我试图将变量传递给并行/矩阵,但没有看到变量被扩展并且作业失败。这是通过环境变量在作业中设置的。我试图回显脚本中的变量并查看它显示正确的值,但不会在并行/矩阵中被替换。我错过了什么吗?
.common_deploy:
script:
- |
echo "showing the regions from environment"
echo $qa_regions
echo "showing the regions from job variable"
echo $REGIONS
parallel:
matrix:
- REGION: "${REGIONS}"
DeployToQA:
variables:
ENVIRONMENT: qa
REGIONS: $qa_regions
extends:
- .common_deploy
stage: deploy
rules:
- if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "master"'
allow_failure: true
Run Code Online (Sandbox Code Playgroud)
这里变量$qa_regions的值为“us-west-2,us-east-1”,我希望看到这些地区的 2 个工作,但我看到的工作是DeployToQA: [${REGIONS}]
我在GitLab中创建了几个存储库.现在我想一次删除或删除所有存储库.我怎样才能做到这一点?有没有可用的API?
尝试使用 GitLab API 获取项目下的所有分支,但我可以看到只返回了 20 个分支。如何获得所有分支机构的完整列表?我正在使用以下 API。
curl --header "PRIVATE-TOKEN: <token>" "https://gitlab.com/api/v4/projects/1521/repository/branches"
Run Code Online (Sandbox Code Playgroud) gitlab-api ×10
gitlab ×8
git ×2
github-api ×2
bash ×1
curl ×1
github-pages ×1
gitlab-ci ×1
graphql ×1
http-post ×1
python ×1