获取gitlab上项目列表过程及脚本

这篇具有很好参考价值的文章主要介绍了获取gitlab上项目列表过程及脚本。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、使用Gitlab API查询项目列表

1、首先获取访问令牌:在Gitlab上生成一个访问令牌,以便能够使用API进行身份验证。可以在GitLab的用户设置中创建一个访问令牌。

获取gitlab上项目列表过程及脚本,gitlab

2、使用curl发送GET请求的命令:

curl --header "PRIVATE-TOKEN: <your-access-token>" "https://gitlab.example.com/api/v4/projects"

将<your-access-token>替换为生成的实际访问令牌,https://gitlab.example.com替换为GitLab实例的URL。

输入命令:

 curl --header "PRIVATE-TOKEN:glpat--MKao_8dXyrghuymmg4k" "http://172.16.67.163:8083/api/v4/projects" 

这时候获取到的项目信息是包括了各种内容:ID,name,所属群组,git地址,最近一次提交等等。

3、但是,GitLab API 默认通过分页方式返回数据。每次请求只返回一页的结果,默认每页显示 20 条记录。为了获取更多结果,可以使用相应的参数进行分页操作,例如 page 和 per_page。

page 参数表示要获取的页数,而 per_page 参数表示每页返回的项目数量。

例如:将 per_page 设置为较大的值(例如 100)以便一次性获取更多的项目:

curl --header "PRIVATE-TOKEN: <your-access-token>" "https://gitlab.example.com/api/v4/projects?per_page=100"

输入命令:

curl --header "PRIVATE-TOKEN:glpat--MKao_8dXyrghuymmg4k" "http://172.16.67.163:8083/api/v4/projects?per_page=100" 

4、要获取第二页的项目(即101到200),可以将命令修改为:

curl --header "PRIVATE-TOKEN: <your-access-token>" "https://gitlab.example.com/api/v4/projects?per_page=100&page=2"

输入命令:就可以获取101到200个项目情况。

curl --header "PRIVATE-TOKEN:glpat--MKao_8dXyrghuymmg4k" "http://172.16.67.163:8083/api/v4/projects?per_page=100&page=2" 

二、提取项目名称列表。

获取到以上内容后需要用jq 提取出项目名称列表,运行一下程序,就可以将项目列表打印到屏幕上。

# -*- coding: UTF-8 -*-
import json

# 读取 JSON 文件,data5.json是前面获取的项目信息。
with open('data5.json') as file:
   data = json.load(file)

# 提取包含 "name" 字段的内容,并显示全部
names = [item['name'] for item in data if 'name' in item]
for name in names:
   print(name)

三、完整处理脚本

先分别生成data.json文件,然后合并为一个data.json文件,再用Python处理,获取列表:

1、data1.json-data4.json 是分别获取的项目信息

2、hebingjson.py 是合并data1.json-data4.json为data.json的程序

3、data.py是提取项目列表的程序

4、liebiao.txt是获取到的项目列表,包括个人创建的项目,所以会比root账号看到的要多。

1、huoquliebiao.sh 内容:获取到data1.json-data4.json

#!/bin/bash

gitlab_url="http://172.16.67.163:8083"
access_token="glpat--MKao_8dXyrghuymmg4k"

cd /home/test2

curl -H "PRIVATE-TOKEN:$access_token" "$gitlab_url/api/v4/projects?per_page=100" > data1.json

curl -H "PRIVATE-TOKEN:$access_token" "$gitlab_url/api/v4/projects?per_page=100&page=2" > data2.json

curl -H "PRIVATE-TOKEN:$access_token" "$gitlab_url/api/v4/projects?per_page=100&page=3" > data3.json

curl -H "PRIVATE-TOKEN:$access_token" "$gitlab_url/api/v4/projects?per_page=100&page=4" > data4.json

2、hebingjson.py 将data1.json-data4.json合并为data.json

# -*- coding: utf-8 -*-
import json

# 需要合并的 JSON 文件路径列表
json_files = ['data1.json', 'data2.json', 'data3.json', 'data4.json']

# 存储合并后的数据
merged_data = []

# 合并 JSON 文件的数据
for file in json_files:
    with open(file, 'r') as f:
        data = json.load(f)
        merged_data.extend(data)

# 将合并后的数据写入新的 JSON 文件
output_file = 'data.json'  # 新的 JSON 文件名
with open(output_file, 'w') as f:
    json.dump(merged_data, f)

print('合并完成,并写入新的 JSON 文件:', output_file)

3、data.py:提取项目列表的程序

# -*- coding: UTF-8 -*-

import json

# 读取 JSON 文件
with open('data.json') as file:
   data = json.load(file)

# 提取包含 "name" 字段的内容,并显示全部
names = [item['name'] for item in data if 'name' in item]
for name in names:
#   print(name)
   print(name.encode('utf-8'))

4、运行步骤

cd /home/test2
chmod +x huoquliebiao.sh
./huoquliebiao.sh

python hebingjson.py 
python data.py > liebiao.txt
liebiao.txt里的内容就是项目列表
获取gitlab上项目列表过程及脚本,gitlab

获取gitlab上项目列表过程及脚本,gitlab

5、合并以上内容到huoquliebiao.sh中。

#!/bin/bash

gitlab_url="http://172.16.67.163:8083"
access_token="glpat--MKao_8dXyrghuymmg4k"

cd /home/test3

curl -H "PRIVATE-TOKEN:$access_token" "$gitlab_url/api/v4/projects?per_page=100" > data1.json

curl -H "PRIVATE-TOKEN:$access_token" "$gitlab_url/api/v4/projects?per_page=100&page=2" > data2.json

curl -H "PRIVATE-TOKEN:$access_token" "$gitlab_url/api/v4/projects?per_page=100&page=3" > data3.json

curl -H "PRIVATE-TOKEN:$access_token" "$gitlab_url/api/v4/projects?per_page=100&page=4" > data4.json

python hebingjson.py

python data.py >liebiao.txt


vim liebiao.txt
获取gitlab上项目列表过程及脚本,gitlab

 文章来源地址https://www.toymoban.com/news/detail-582192.html

到了这里,关于获取gitlab上项目列表过程及脚本的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 记录误删除docker中极狐gitlab容器恢复过程

    如题一次误操作导致删除了docker中极狐gitlab容器恢复过程 情况说明 创建容器时,我是用的是极狐官网推荐安装的步骤,具体按照官网步骤走就行 详见:https://docs.gitlab.cn/jh/install/docker.html 2.误删除后同样使用上述的命令启动容器会报错 docker启动报错:Error response from daemon: s

    2024年02月02日
    浏览(50)
  • 10.Python从入门到精通—Python 列表,列表脚本操作符,列表截取,列表函数&方法

    在 Python 中,列表 (List) 是一种序列类型,用于存储一组有序的元素。列表中的元素可以是任何类型,例如数字、字符串、布尔值、函数等。 列表是可变的,可以根据需要添加、删除和修改元素。以下是一些示例代码,演示了 Python 中列表的使用: 创建列表: 访问列表元素:

    2024年03月20日
    浏览(58)
  • Jenkins获取gitlab代码

    登录gitlab--选择项目进入--User Settings--Access Tokens 系统管理--插件管理--搜索GitLab Plugin插件安装(在available plugins里搜索安装,我是已经安装过了所以在installed plugins中) Jenkins--系统管理--系统配置--Gitlab编辑 填写连接名称、gitlab地址、gitlab凭证  gitlab凭证添加: 类型选择:Gi

    2024年02月09日
    浏览(39)
  • 记GitLab服务器迁移后SSH访问无法生效的问题解决过程

    公司IT心血来潮对GitLab服务器进行安全升级,升级后无法启动。。。只得启用备用服务器,具体的备份机制不祥,只知道原数据都在,但文件系统是否完全一样不清楚。切换为备用服务器后使用SSH下载代码死活不成功,反复提示需要输入git@[hostname]的密码。最后问题解决了,十

    2024年01月19日
    浏览(46)
  • GitHub&Gitee&Gitlab&极狐(JihuLab)同时生成并配置SSH公私钥详细过程

    GitHub-微软-github.com Gitee-开源中国- gitee.com Gitlab-乌克兰GitLab 公司-gitlab.com 极狐(JihuLab)-中国代理商运营的Gitlab -gitlab.cn或者jihulab.com 使用 SSH公钥 可以让你在你的电脑和 GitHub 等平台通讯的时候使用 更安全的连接 ( Git的Remote 要使用 SSH地址 ,例如 git@gitee.com:king/example.git ),但

    2024年02月09日
    浏览(52)
  • 【gitlab】旧的gitlab项目迁移新的gitlab

    公司由于某些原因需要迁移项目到新的git 您可以按照以下步骤将旧GitLab项目迁移到新GitLab: 在新GitLab上创建一个与旧项目名称相同的项目,并确保新项目的所有者或管理员具有足够的权限来执行后续操作。 在旧GitLab上找到要迁移的项目,并确保您具有足够的权限来访问该项

    2024年02月16日
    浏览(39)
  • 杂记 | 记录一次使用Docker安装gitlab-ce的过程(含配置交换内存)

    最近想自建一个gitlab服务来保存自己的项目,于是找到gitlab-ce的方式。 开工前先梳理一下状况: 具备一台云服务器(我用的腾讯云) CentOS7的系统,已安装好了docekr和docker-compose(如果没装先自行装一下) 服务器内存为4G(这个内存有点吃紧,先凑合用) 服务不直接对外暴露

    2024年02月13日
    浏览(49)
  • uniapp评论列表插件获取

    从评论列表,回复,点赞,删除,留言板 - DCloud 插件市场里导入,并使用。 代码样式优化及接入如下: 页面接入:

    2024年02月12日
    浏览(43)
  • Python列表索引获取

      只适用于字符串,并且只能输出最近位置的索引,不能输出全部  适用于字符串和列表,并且只能输出最近位置的索引,不能输出全部 可以返回字符串中多个重复字符的索引

    2024年02月15日
    浏览(51)
  • 帝国CMS在自定义列表中获取当前列表ID的方法

    本文实例讲述了帝国CMS在自定义列表中获取当前列表ID的方法。分享给大家供大家参考,具体如下: 今天用帝国CMS做一个项目时,发现帝国自定义列表中无法获取当前自定义列表的ID。分析帝国源码后以现,帝国默认传出的值为0。下面简单记录一下如何通过修改源码实现“帝

    2023年04月20日
    浏览(90)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包