如何配置极狐GitLab Maven 仓库
本文作者:徐晓伟
GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。
极狐GitLab Maven 仓库
极狐GitLab Maven 私库使用方式
文档
配置(以Maven为例)
- 示例项目 my-maven-app
-
身份认证(以下顺序为官方文档的顺序,选择一个适合自己的即可)
-
在 Maven 中使用个人访问令牌进行身份验证
settings.xml
文件中的配置如下
<settings> <servers> <server> <!-- 固定值 --> <id>gitlab-maven</id> <configuration> <httpHeaders> <property> <!-- 此方式的固定值,不可改 --> <name>Private-Token</name> <!-- 个人令牌,推荐在个人电脑上执行时使用(个人令牌需要 api 权限) --> <value>REPLACE_WITH_YOUR_PERSONAL_ACCESS_TOKEN</value> </property> </httpHeaders> </configuration> </server> </servers> </settings>
-
在 Maven 中使用部署令牌进行身份验证
settings.xml
文件中的配置如下
<settings> <servers> <server> <!-- 固定值 --> <id>gitlab-maven</id> <configuration> <httpHeaders> <property> <!-- 此方式的固定值,不可改 --> <name>Deploy-Token</name> <!-- 部署令牌,推荐在不是 GitLab Runner 流水线时使用 --> <!-- 在项目的仓库设置中可创建部署令牌,需要 read_package_registry、write_package_registry 权限 --> <value>REPLACE_WITH_YOUR_DEPLOY_TOKEN</value> </property> </httpHeaders> </configuration> </server> </servers> </settings>
-
使用 Maven 中的 CI 作业令牌进行身份验证
settings.xml
文件中的配置如下- 此处使用的是 GitLab Runner 流水线发布 jar 包(其他方式发布时的命令雷同)
- 示例项目 my-maven-app 中使用自定义
settings.xml
文件名为settings.xml
,并在其中增加了国内Maven仓库代理,用于加速依赖下载,发布命令 - 仅发布二进制:
mvn clean -U package deploy -DskipTests -s settings.xml
- 发布二进制、源码:
mvn clean -U package source:jar deploy -DskipTests -s settings.xml
- 发布二进制、源码、javadoc:
mvn clean -U package source:jar javadoc:jar deploy -DskipTests -s settings.xml
<settings> <servers> <server> <!-- 固定值 --> <id>gitlab-maven</id> <configuration> <httpHeaders> <property> <!-- 此方式的固定值,不可改 --> <name>Job-Token</name> <!-- 如果你使用的是 GitLab Runner 流水线发布项目,推荐使用此方式 --> <!-- CI_JOB_TOKEN 是 GitLab Runner 流水线的环境变量 --> <value>${CI_JOB_TOKEN}</value> </property> </httpHeaders> </configuration> </server> </servers> </settings>
-
-
项目级 Maven 端点(发布,仅在 GitLab Runner 流水线发布时可以使用环境变量)
<distributionManagement> <repository> <!-- 固定值,与 settings.xml 中的 server id 相同,否则私有仓库无法匹配到秘钥发布 --> <id>gitlab-maven</id> <!-- 其中数字为项目ID,访问项目地址即可看到 --> <!--<url>https://gitlab.com/api/v4/projects/53229683/packages/maven</url>--> <!-- 使用环境变量 CI_PROJECT_ID 替换项目ID --> <!-- 使用环境变量 CI_API_V4_URL 替换 GitLab API 接口地址 --> <url>${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/maven</url> </repository> <snapshotRepository> <!-- 固定值,与 settings.xml 中的 server id 相同,否则私有仓库无法匹配到秘钥发布 --> <id>gitlab-maven</id> <!-- 其中数字为项目ID,访问项目地址即可看到 --> <!--<url>https://gitlab.com/api/v4/projects/53229683/packages/maven</url>--> <!-- 使用环境变量 CI_PROJECT_ID 替换项目ID --> <!-- 使用环境变量 CI_API_V4_URL 替换 GitLab API 接口地址 --> <url>${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/maven</url> </snapshotRepository> </distributionManagement>
-
项目级 Maven 端点(使用,不能使用环境变量) 使用已发布的 Maven jar 包
<repositories> <repository> <!-- 与 settings.xml 中的 server id 相同,否则私有仓库无法匹配到秘钥发布 --> <id>gitlab-maven</id> <!-- https://gitlab.example.com:GitLab 实例的域名(IP),不能使用环境变量 --> <!-- PROJECT_ID:项目ID,访问需要使用的 Maven jar 包 仓库地址即可查看到项目ID --> <url>https://gitlab.example.com/api/v4/projects/PROJECT_ID/packages/maven</url> </repository> </repositories>
-
发布的Jar包可以在 软件包库 中看到
更多关于极狐GitLab 的最佳实践,请搜索关注【极狐GitLab】公众号或者登录极狐GitLab 官网进行学习。