如何使用极狐GitLab Maven 仓库?

本文作者:徐晓伟

GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。

本文主要讲述了如何使用极狐GitLab 提供的Maven仓库功能。

文档

  1. 软件包库中的 Maven 包

Maven 仓库类型

项目级 Maven 端点


<project><repositories><repository><id>gitlab-maven</id><!-- PROJECT_ID:填写项目ID,查看方式见下方 --><!-- PROJECT_ID:如果仅在 GitLab Runner 中运行时,可使用环境变量 ${CI_PROJECT_ID} 代替 --><!-- https://gitlab.example.com/api/v4:如果仅在 GitLab Runner 中运行时,可使用环境变量 ${CI_API_V4_URL} 代替 --><url>https://gitlab.example.com/api/v4/projects/PROJECT_ID/packages/maven</url></repository></repositories><distributionManagement><repository><id>gitlab-maven</id><!-- PROJECT_ID:填写项目ID,查看方式见下方 --><!-- PROJECT_ID:如果仅在 GitLab Runner 中运行时,可使用环境变量 ${CI_PROJECT_ID} 代替 --><!-- https://gitlab.example.com/api/v4:如果仅在 GitLab Runner 中运行时,可使用环境变量 ${CI_API_V4_URL} 代替 --><url>https://gitlab.example.com/api/v4/projects/PROJECT_ID/packages/maven</url></repository><snapshotRepository><id>gitlab-maven</id><!-- PROJECT_ID:填写项目ID,查看方式见下方 --><!-- PROJECT_ID:如果仅在 GitLab Runner 中运行时,可使用环境变量 ${CI_PROJECT_ID} 代替 --><!-- https://gitlab.example.com/api/v4:如果仅在 GitLab Runner 中运行时,可使用环境变量 ${CI_API_V4_URL} 代替 --><url>https://gitlab.example.com/api/v4/projects/PROJECT_ID/packages/maven</url></snapshotRepository></distributionManagement>
</project>

群组级 Maven 端点


<project><repositories><repository><id>gitlab-maven</id><!-- GROUP_ID:填写群组ID,查看方式见下方 --><!-- https://gitlab.example.com/api/v4:如果仅在 GitLab Runner 中运行时,可使用环境变量 ${CI_API_V4_URL} 代替 --><url>https://gitlab.example.com/api/v4/groups/GROUP_ID/-/packages/maven</url></repository></repositories><distributionManagement><repository><id>gitlab-maven</id><!-- PROJECT_ID:填写项目ID,查看方式见下方 --><!-- PROJECT_ID:如果仅在 GitLab Runner 中运行时,可使用环境变量 ${CI_PROJECT_ID} 代替 --><!-- https://gitlab.example.com/api/v4:如果仅在 GitLab Runner 中运行时,可使用环境变量 ${CI_API_V4_URL} 代替 --><url>https://gitlab.example.com/api/v4/projects/PROJECT_ID/packages/maven</url></repository><snapshotRepository><id>gitlab-maven</id><!-- PROJECT_ID:填写项目ID,查看方式见下方 --><!-- PROJECT_ID:如果仅在 GitLab Runner 中运行时,可使用环境变量 ${CI_PROJECT_ID} 代替 --><!-- https://gitlab.example.com/api/v4:如果仅在 GitLab Runner 中运行时,可使用环境变量 ${CI_API_V4_URL} 代替 --><url>https://gitlab.example.com/api/v4/projects/PROJECT_ID/packages/maven</url></snapshotRepository></distributionManagement>
</project>

实例级 Maven 端点


<project><repositories><repository><id>gitlab-maven</id><!-- https://gitlab.example.com/api/v4:如果仅在 GitLab Runner 中运行时,可使用环境变量 ${CI_API_V4_URL} 代替 --><url>https://gitlab.example.com/api/v4/packages/maven</url></repository></repositories><distributionManagement><repository><id>gitlab-maven</id><!-- PROJECT_ID:填写项目ID,查看方式见下方 --><!-- PROJECT_ID:如果仅在 GitLab Runner 中运行时,可使用环境变量 ${CI_PROJECT_ID} 代替 --><!-- https://gitlab.example.com/api/v4:如果仅在 GitLab Runner 中运行时,可使用环境变量 ${CI_API_V4_URL} 代替 --><url>https://gitlab.example.com/api/v4/projects/PROJECT_ID/packages/maven</url></repository><snapshotRepository><id>gitlab-maven</id><!-- PROJECT_ID:填写项目ID,查看方式见下方 --><!-- PROJECT_ID:如果仅在 GitLab Runner 中运行时,可使用环境变量 ${CI_PROJECT_ID} 代替 --><!-- https://gitlab.example.com/api/v4:如果仅在 GitLab Runner 中运行时,可使用环境变量 ${CI_API_V4_URL} 代替 --><url>https://gitlab.example.com/api/v4/projects/PROJECT_ID/packages/maven</url></snapshotRepository></distributionManagement>
</project>

项目ID

  1. 截图来源于不同的 gitlab(gitlab 版本) 中的项目,所以项目ID不同
  2. 同一个 gitlab 在不同位置查看到的项目ID是相同的

gitlab-46.png gitlab-47.png gitlab-48.png

群组ID

  1. 截图来源于不同的 gitlab(gitlab 版本) 版本中的项目,所以群组ID不同
  2. 同一个 gitlab 在不同位置查看到的群组ID是相同的

gitlab-49.png gitlab-50.png gitlab-51png

认证方式

在 Maven 中使用个人访问令牌进行身份验证​


<settings><servers><server><id>gitlab-maven</id><configuration><httpHeaders><property><name>Private-Token</name><!-- 创建 gitlab 个人令牌,替换下方的值 --><value>REPLACE_WITH_YOUR_PERSONAL_ACCESS_TOKEN</value></property></httpHeaders></configuration></server></servers>
</settings>

在 Maven 中使用部署令牌进行身份验证​


<settings><servers><server><id>gitlab-maven</id><configuration><httpHeaders><property><name>Deploy-Token</name><!-- 在仓库中创建部署令牌,替换下方的值 --><value>REPLACE_WITH_YOUR_DEPLOY_TOKEN</value></property></httpHeaders></configuration></server></servers>
</settings>

使用 Maven 中的 CI 作业令牌进行身份验证​


<settings><servers><server><id>gitlab-maven</id><configuration><httpHeaders><property><name>Job-Token</name><!-- 此用法仅限于在使用 GitLab Runner 中执行使用 --><!-- 此处取 GitLab Runner 执行时的环境变量,用户无需干预此处的配置 --><value>${CI_JOB_TOKEN}</value></property></httpHeaders></configuration></server></servers>
</settings>

发布 Maven 依赖

  1. 项目:https://gitlab.com/xuxiaowei-com-cn/my-maven-app/-/packages/

  2. 已发布的依赖:https://gitlab.com/xuxiaowei-com-cn/my-maven-app/-/packages/

  3. GitLab Runner 发布日志:https://gitlab.com/xuxiaowei-com-cn/my-maven-app/-/pipelines

  4. 认证方式: 使用 Maven 中的 CI 作业令牌进行身份验证

  5. 使用的配置

    1. setting.xml 配置

      1. setting.xml 配置
      2. setting.xml 配置 永久链
    2. pom.xml 配置

      1. pom.xml 配置
      2. pom.xml 配置 永久链

使用 Maven 依赖

  1. 项目:https://gitlab.com/xuxiaowei-com-cn/use-my-maven-app

  2. GitLab Runner 打包日志:https://gitlab.com/xuxiaowei-com-cn/use-my-maven-app/-/pipelines

  3. 打包失败:

    1. 失败日志 gitlab-52.png

    2. 失败原因:

      1. 没有设置凭证,无法访问非公开的软件包库
      2. 设置了凭证,但该凭证没有权限访问软件包库
  4. 成功示例:

    1. main 分支:

      1. 代码:https://gitlab.com/xuxiaowei-com-cn/use-my-maven-app/-/tree/6a71d280226ebb4aa16b479bc2b2d7a254f23513
      2. 流水线:https://gitlab.com/xuxiaowei-com-cn/use-my-maven-app/-/pipelines/1118517218
      3. 作业:https://gitlab.com/xuxiaowei-com-cn/use-my-maven-app/-/jobs/5818086715
    2. delete-server 分支:

      1. 代码:https://gitlab.com/xuxiaowei-com-cn/use-my-maven-app/-/tree/f493df00dd840f6cc39d89f2adb8e5c44a9ab75e
      2. 流水线:https://gitlab.com/xuxiaowei-com-cn/use-my-maven-app/-/pipelines/1118518272
      3. 作业:https://gitlab.com/xuxiaowei-com-cn/use-my-maven-app/-/jobs/5818091141

解决方案1:【允许来自以下项目的 CI 作业令牌访问此项目】

  1. 文档依据(注意:中文版可能会比英文版的文档版本低,参见文档右上角)

    1. 限制您项目的作业令牌访问 - 中文 gitlab-54.png
    2. limit-your-projects-job-token-access - 英文 gitlab-55.png
  2. 如果你的依赖项目不是公开的, 软件包库不是公开的,需要使用 setting.xml 配置 server 标签填写访问凭证

  3. 如果使用的方式是 使用 Maven 中的 CI 作业令牌进行身份验证, 则需要在 被引用的项目(my-maven-app)中设置【允许来自以下项目的 CI 作业令牌访问此项目】,填写 引用项目 (use-my-maven-app) 的路径(不用填写域名),否则将会提示无权限

  4. 设置 【允许来自以下项目的 CI 作业令牌访问此项目】 gitlab-53.png

解决方案2:不设置 setting.xml 的 server

  1. 如果你的依赖项目公开的, 软件包库公开的,可以不使用 setting.xml 配置 server,即可访问
  2. 如果你配置了 setting.xml 配置 server,使用方式为 使用 Maven 中的 CI 作业令牌进行身份验证, 参考上一个解决方案

解决方案3:在 Maven 中使用个人访问令牌进行身份验证

解决方案4:在 Maven 中使用部署令牌进行身份验证

gitlab 17.0 会删除上述【允许来自以下项目的 CI 作业令牌访问此项目】的,待 gitlab 17.0 发布后,将会提供新方案

问题

maven 证书验证失败链接")

  1. 常见于自建 gitlab 中
  2. 失败示例 gitlab-45.png
  3. 打包时增加参数
参数解释0说明
-Dmaven.wagon.http.ssl.insecure=true不要验证SSL证书的有效性

号外号外!
极狐GitLab 正在推出DevSecOps 成熟度测评!链接:https://gitlab.cn/devsecops-assessment/ 测评非常全面并提供了可靠建议,即使不付费买产品,对自己想要落地 DevSecOps 的用户具有很高的参考意义!快来动手试试吧!

DevSecOps 成熟度评估.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/786334.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VSCode - 离线安装扩展python插件教程

1&#xff0c;下载插件 &#xff08;1&#xff09;首先使用浏览器打开 VSCode 插件市场link &#xff08;2&#xff09;进入插件主页&#xff0c;点击右侧的 Download Extension 链接&#xff0c;将离线安装包下载下来&#xff08;文件后缀为 .vsix&#xff09; 2&#xff0c;…

学透Spring Boot 003 —— Spring 和 Spring Boot 常用注解(附面试题和思维导图)

这是 学透 Spring Boot 专栏 的第三篇&#xff0c;欢迎关注我&#xff0c;与我一起学习和探讨 Spring Boot 相关知识&#xff0c;学透 Spring Boot。 从面试题说起 今天我们通过一道和Spring Boot有关的常见面试题入手。 面试题&#xff1a;说说 Spring Boot 中有哪些常用注解…

13.Python图形用户界面

我们之前的程序运行结果都被输出到命令提示符&#xff08;终端&#xff09;窗口&#xff0c;界 面比较简陋。本章讲解如何将其输出到图形界面。 1 Python中的图形用户界面开发库 注Qt是一个跨平台的C应用程序开发框架&#xff0c;被广泛用于开发GUI 程序&#xff0c;也可用于开…

OSPF协议详解

静态缺点 1、中大型复杂网络----配置量大 2、不能实时收敛 动态-----可以实时收敛 IGP----内部网关路由协议 RIP OSPF EIGRP ISIS EGP----外部网关路由协议 BGP IGP &#xff08;选路佳 占用资源 收敛快&#xff09;----一个协议好需满足这三个 距离矢量 DV RIP…

node.js的模块化 与 CommonJS规范

一、node.js的模块化 (1)什么是模块化&#xff1f; 将一个复杂的程序文件依据一定的规则拆分成为多个文件的过程就是模块化 在node.js中&#xff0c;模块化是指把一个大文件拆分成独立并且相互依赖的多个小模块&#xff0c;将每个js文件被认为单独的一个模块&#xff1b;模块…

HDLbits 刷题 -- Alwaysblock2

学习&#xff1a; For hardware synthesis, there are two types of always blocks that are relevant: Combinational: always (*)Clocked: always (posedge clk) Clocked always blocks create a blob of combinational logic just like combinational always blocks, but…

基于ArgoCD和Testkube打造GitOps驱动的Kubernetes测试环境

本文介绍了一项新工具&#xff0c;可以基于Gitops手动或者自动实现Kubernetes集群应用测试&#xff0c;确保集群的健康状态与Git仓库定义的一致。原文: GitOps-Powered Kubernetes Testing Machine: ArgoCD Testkube 简介&#xff1a;GitOps 云原生测试面临的挑战 现代云原生应…

[蓝桥杯 2014 省 A] 波动数列

容我菜菲说一句&#xff0c;全网前排题解都是rubbish&#xff0c;当然洛谷某些也是litter 不好意思&#xff0c;最近背单词背了很多垃圾的英文&#xff0c;正题开始 [蓝桥杯 2014 省 A] 波动数列 题目描述 输入格式 输入的第一行包含四个整数 n , s , a , b n,s,a,b n,s,a…

iPhone设备中定位应用程序崩溃问题的日志分析技巧

​ 目录 如何在iPhone设备中查看崩溃日志 摘要 引言 导致iPhone设备崩溃的主要原因是什么&#xff1f; 使用克魔助手查看iPhone设备中的崩溃日志 奔溃日志分析 总结 摘要 本文介绍了如何在iPhone设备中查看崩溃日志&#xff0c;以便调查崩溃的原因。我们将展示三种不同的…

蓝桥杯刷题day13——玩游戏【算法赛】

一、问题描述 小 A 和小 B 两个人在海边找到了 n 个石子&#xff0c;准备开始进行一些游戏&#xff0c;具体规则如下&#xff1a;小 B 首先将 n 个石子分成若干堆&#xff0c;接下来从小 A 开始小 A 和小 B 轮流取石子&#xff0c;每次可以任选一堆石子取走任意个&#xff0c;…

Linux中JMeter的使用

Linux中JMeter的使用 Linux版本JMeter安装 # 1、下载、安装JMeter 如果有安装包直接上传即可 wget -c https://archive.apache.org/dist/jmeter/binaries/apache-jmeter-5.4.1.tgz # 解压 tar -zxvf apache-jmeter-5.4.1.tgz -C /usr/local/sjdwz_test cd /usr/local/sjdwz_t…

数据分析之Tebleau可视化:折线图、饼图、环形图

1.折线图的绘制 方法一&#xff1a; 拖入订单日期和销售金额&#xff0c;自动生成一个折线图 方法二&#xff1a; 选中订单日期和销售金额&#xff08;摁住ctrl可以选择多个纬度&#xff09; 点击右边的智能推荐&#xff0c;选择折线图 2.双线图的绘制、双轴的设置 方法一&…

【Jmeter+Influxdb+Grafana性能监控平台安装与部署】

JmeterInfluxdbGrafana性能监控平台安装与部署 前言Influxdb安装与连接Jmeternfluxdb下载&#xff08;winodws&#xff09;Grafana安装与配置 前言 我们在性能测试过程中&#xff0c;在需要较大并发时&#xff0c;为了尽量避免使用GUI界面来节省资源&#xff0c;通常使用命令行…

python+vue访客预约登记系统-数据可视化echart大屏

为了系统的完整&#xff0c;必须要有可行性分析的&#xff0c;系统的可行性关系到生存问题&#xff0c;分析其意义可否利用本系统来弥补线下管理模式中的不足之处等&#xff0c;通过本系统来减少工作量&#xff0c;使管理者与用户的工作和管理效率更高。对此体现出更多的意义和…

基于深度学习的端到端自动驾驶的最新进展:调研综述

基于深度学习的端到端自动驾驶的最新进展&#xff1a;调研综述 附赠自动驾驶学习资料和量产经验&#xff1a;链接 论文链接&#xff1a;https://arxiv.org/pdf/2307.04370.pdf 调研链接&#xff1a;https://github.com/Pranav-chib/ 摘要 本文介绍了基于深度学习的端到端自…

一次生产docker MTU=1500问题排查解决

和业务方进行联调&#xff0c;业务方调用我方服务&#xff0c; 我方服务部署在虚拟机的docker容器中 提供grpc服务&#xff0c; 通过公网vip lvs到宿主机端口 联调发现 ping 和 telnet我方端口都正常&#xff0c; 但是通过grpc协议调用不通&#xff0c;一直超时 在容器上和lv…

构建安全高效的用户登录系统:登录流程设计与Token验证详解

在当今数字化时代&#xff0c;用户登录系统是几乎所有在线服务的基础。然而&#xff0c;随着网络安全威胁的不断增加&#xff0c;设计一个安全可靠的登录系统变得至关重要。本文将深入探讨用户登录流程的设计原则以及Token验证的实现方式&#xff0c;带您了解如何构建安全高效的…

基于DCT和扩频的音频水印嵌入提取算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ......................................................................... N 10; %嵌入一…

RTOS中临界区嵌套保护的实现原理(基于RT-Thread)

0 前言 什么是临界区&#xff08;临界段&#xff09;&#xff1f; 裸机编程中由于不涉及线程和线程切换&#xff0c;因此没有临界区这一个概念。在RTOS中由于存在线程切换等场景&#xff0c;便有了临界区这个概念。简单来说&#xff0c;临界区就是不允许被中断的代码区域。什么…

在 Three.js 中,`USDZExporter` 类用于将场景导出为 USDZ 格式,这是一种用于在 iOS 平台上显示增强现实(AR)内容的格式。

demo 案例 在 Three.js 中&#xff0c;USDZExporter 类用于将场景导出为 USDZ 格式&#xff0c;这是一种用于在 iOS 平台上显示增强现实&#xff08;AR&#xff09;内容的格式。下面是关于 USDZExporter 的入参、出参、方法和属性的讲解&#xff1a; 入参 (Parameters): sc…