如何使用极狐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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Yarn与Zookeeper的介绍

Yarn--三大调度策略 FIFO(先进先出): 目前几乎已经没有人使用了. 类似于: 单行道. 好处: 每个计算任务能独享集群100%的资源. 弊端: 不能并行执行, 如果大任务过多, 会导致小任务执行时间过长. Capacity(容量调度): 我们用…

入门教程:Windows搭建C语言和EasyX开发环境

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; 如果对你…

【论文阅读】TimesNet: Temporal 2D-Variation Modeling for General Time Series Analysis

TimesNet: Temporal 2D-Variation Modeling for General Time Series Analysis 引用&#xff1a; Wu H, Hu T, Liu Y, et al. Timesnet: Temporal 2d-variation modeling for general time series analysis[C]//The eleventh international conference on learning representa…

学习 MongoDB:打开强大的数据库技术大门

一、基本概念 MongoDB 是一个基于分布式文件存储的文档数据库&#xff0c;由 C 语言编写。它旨在为 Web 应用提供可扩展的高性能数据存储解决方案。 相信MySQL我们非常的熟悉&#xff0c;那么MySQL的表结构与MongoDB的文档结构进行类比的话可能更好理解MongoDB。 MySQL的数据…

联通iccid 19转20 使用luhn 算法的计算公式

联通iccid 19转20 使用luhn 算法的计算公式 第一次对接iccid 才知道 使用的是luhn 算法 19转20位 文章来源于 文章来源 当时也是一脸懵逼 的状态&#xff0c;然后各种chatgpt 寻找&#xff0c;怎么找都发现不对&#xff0c;最后看到这片java的文章实验是正确的&#xff0c;因…

ubuntu生成core文件的设置方法

core文件可以很方便的帮助我们查找程序挂的问题&#xff0c;因此在程序挂后生成core文件的很有必要的。 1、查看ulimit参数 ulimit -a 如果core file size是0 需要设置其最大容量。按下面步骤操作 2、设置core文件大小&#xff0c;两种方法 临时生效&#xff0c;重启设备失…

WPF学习笔记-FlowDocument流文档基础知识和基本操作

文章目录 概述一、块元素和内联元素1.1 块元素&#xff08;Block类&#xff09;1.2 内联元素&#xff08;Inline类&#xff09;二、Paragraph元素2.1 基本属性设置2.2 将内联元素Inline添加到Inlines中2.3 设置中西文字体不一样 三、Table元素3.1 添加新的Table3.2 添加列3.3 添…

采用C#.net6.0+Vue,Ant-Design技术开发的一套大型医院手术麻醉信息系统源码,系统成熟,运行稳定

手术麻醉信息系统源码&#xff0c;C#手麻系统源码&#xff0c;自主版权应用案例&#xff08;适合上项目&#xff09; 手术麻醉信息系统可以实现手术室监护仪、麻醉机、呼吸机、输液泵等设备输出数据的自动采集&#xff0c;采集的数据能据如实准确地反映患者生命体征参数的变化&…

前端、后端上传文件到OSS,简明记录

前端、后端上传文件到OSS&#xff0c;简明记录 上传文件到oss的方式&#xff1a; **后端上传&#xff1a;**文件先要从页面上传到后端存起来&#xff0c;再通过后端发送到oss&#xff0c;然后后端将存起来的文件删除&#xff08;当然可以不删&#xff09;。 **前端上传&…

Unix 网络编程, Socket 以及bind(), listen(), accept(), connect(), read()write()五大函数简介

Unix网络编程是针对类Unix操作系统&#xff08;包括Linux、BSD以及其他遵循POSIX标准的操作系统&#xff09;进行网络通信开发的技术领域。网络编程涉及创建和管理网络连接、交换数据以及处理不同层次网络协议栈上的各种网络事件。在Unix环境中&#xff0c;网络编程通常涉及到以…

华为ensp中ospf多区域管理 原理及配置命令(详解)

作者主页&#xff1a;点击&#xff01; ENSP专栏&#xff1a;点击&#xff01; ————前言———— OSPF 多区域的主要作用是缩小链路状态数据库和路由表的规模&#xff0c;减少路由更新的频率&#xff0c;提高网络的可扩展性&#xff0c;实现路由过滤和路由汇总&#xff0…

交通标志识别项目 | 基于Tensorflow+SSD实现道路交通标志识别

项目应用场景 面向智能驾驶或自动驾驶场景道路道路交通标志的识别&#xff0c;在交通标志识别的基础上为下一步的智能决策提供前提 项目效果&#xff1a; 项目细节 > 具体参见项目 README.md (1) 安装依赖 Python3.5、TensorFlow v0.12.0、Pickle、OpenCV-Python、Matplotl…

如何利用CSS实现文字滚动效果

1. 使用CSS3的animation属性 CSS3的animation属性可以让元素在一段时间内不停地播放某个动画效果。我们可以利用这个特性来实现文字滚动效果。 我们需要定义一个包含所有需要滚动的文本的容器元素。比如&#xff1a; <div class"scroll-container"><p>…

手机一键换ip地址,解锁网络自由

在数字化时代&#xff0c;手机已经成为我们生活中不可或缺的一部分。随着移动互联网的快速发展&#xff0c;手机用户对于网络安全和隐私保护的需求也日益增强。其中&#xff0c;IP地址作为手机在网络中的标识&#xff0c;扮演着重要的角色。有时&#xff0c;出于隐私保护或网络…

仿真黑科技EasyGo DeskSim 2022

DeskSim2022的FPGA支持多种solver的混合应用&#xff0c;对于每一种solver可以采用不同的仿真步长&#xff0c;以下图模型为例&#xff0c;模型运行在FPGA上&#xff0c;FPGA解算方式采用的是Power Electronic & FPGA Coder解算&#xff0c;其中电力电子电路部分采用了两种…

【opencv】教程代码 —features2D(6)透视矫正:读取两个棋盘格图片并进行图像对齐...

perspective_correction.cpp 透视校正 hconcat(img2, img1_warp, img_draw_warp); hconcat(img1, img2, img_draw_matches); #include <iostream> // 引入iostream库&#xff0c;用于进行标准输入和输出操作 #include <opencv2/core.hpp> // 引入opencv的core库&am…

Redis 主从复制集群搭建及其原理

目录 前言 配置文件 启动服务 配置主从关系 两种配置方式 slaveof 配置文件 补充 缺点 认证 复制原理 全量同步 增量同步 前言 单机的 redis 的性能虽然已经很强大了&#xff0c;但是随着业务的扩展&#xff0c;总有一天会遇到性能瓶颈&#xff0c;针对高并发带来…

cJSON(API的详细使用教程)

我们今天来学习一般嵌入式的必备库&#xff0c;JSON库 1&#xff0c;json和cJSON 那什么是JSON什么是cJSON&#xff0c;他们之间有什么样的关联呢&#xff0c;让我们一起来探究一下吧。 JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&…

注意力机制篇 | YOLOv8改进之添加DAT注意力机制

前言:Hello大家好,我是小哥谈。DAT(Vision Transformer with Deformable Attention)是一种引入了可变形注意力机制的视觉Transformer。在训练算法模型的时候,通过引入可变形注意力机制,改进了视觉Transformer的效率和性能,使其在处理复杂的视觉任务时更加高效和准确。�…

扫地机器人(蓝桥杯)

文章目录 扫地机器人题目描述解题思路二分贪心 扫地机器人 题目描述 小明公司的办公区有一条长长的走廊&#xff0c;由 N 个方格区域组成&#xff0c;如下图所 示。 走廊内部署了 K 台扫地机器人&#xff0c;其中第 i 台在第 Ai 个方格区域中。已知扫地机器人每分钟可以移动…