一、介绍
Package Registry 是一个包管理工具,相当于私有的maven仓库,是Gitlab的新功能,这样你就不用额外的搭建maven仓库了。
二、环境配置
1.Java 11.0.5+
2.Maven 3.6+
3.配置maven的setings.xml
1> 配置一下personal access token
gitlab-maven
Private-Token
REPLACE_WITH_YOUR_PERSONAL_ACCESS_TOKEN
2> 配置deploy token
gitlab-maven
Deploy-Token
REPLACE_WITH_YOUR_DEPLOY_TOKEN
3> 配置Job-Token,这真是个巨坑,根本找不到这个CI_JOB_TOKEN,这个配置可以忽略,上面的两个配一个就行了,都配也行。
gitlab-maven
Job-Token
${env.CI_JOB_TOKEN}
4.Private-Token生成
5.Deploy-Token生成
三、使用Gitlab-CI方式构建一个Package
1.创建一个项目ci-demo
2.编写ci_settings.xml文件,这是固定写法,唯一可以改的是id
gitlab-maven
Job-Token
${env.CI_JOB_TOKEN}
3.编写pom文件
4.0.0
com.example
demo
0.0.1.RELEASE
jar
demo
Demo project for Spring Boot
org.springframework.boot
spring-boot-starter-parent
2.1.3.RELEASE
gitlab-maven
http://192.168.xx.xx/api/v4/projects/11/packages/maven
gitlab-maven
http://192.168.xx.xx/api/v4/projects/11/packages/maven
gitlab-maven
http://192.168.xx.xx/api/v4/projects/11/packages/maven
UTF-8
UTF-8
11
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-maven-plugin
官方文档是这样的,其中CI_API_V4_URL为自己的gitlab服务器的地址+/api/v4,CI_PROJECT_ID为gitlab上Project ID,还需要注意的是,这里repository id 为ci_settings.xml中的id
gitlab-maven
$env{CI_API_V4_URL}/projects/${env.CI_PROJECT_ID}/packages/maven
gitlab-maven
${CI_API_V4_URL}/projects/${env.CI_PROJECT_ID}/packages/maven
gitlab-maven
${CI_API_V4_URL}/projects/${env.CI_PROJECT_ID}/packages/maven
我的项目为11
4.编写.gitlab-ci.yml文件
deploy:
image: maven:3.6-jdk-11
script:
- echo "deploy"
- 'mvn deploy -s ci_settings.xml'
only:
- master
tags:
- demo
5.提交代码就会自动构建,生成一个package。
6.查看Package
四、使用本地配置,生成Package
1.创建一个项目
2.编写本地配置文件setting-local.xml
gitlab-maven
Deploy-Token
rzusktVxxx-UvxrFDywj
3.编写pom 文件,同上,添加
gitlab-maven
$env{CI_API_V4_URL}/projects/${env.CI_PROJECT_ID}/packages/maven
gitlab-maven
${CI_API_V4_URL}/projects/${env.CI_PROJECT_ID}/packages/maven
gitlab-maven
${CI_API_V4_URL}/projects/${env.CI_PROJECT_ID}/packages/maven
4.使用maven 发布命令发布Package
mvn deploy -s setting-loacl.xml
5.发布包打印结果
6.gitlab服务器上查看Package,也能成功,具体使用哪一种就看自己需求了。
五、使用gitlab Package Registry中的Package
只需要在pom.xml文件中添加
1.dependence
com.example
demo
0.0.1-SNAPSHOT
2.仓库地址
gitlab-maven
http://192.168.xx.xx/api/v4/projects/11/packages/maven
3.下载的jar包可以查看到
六、问题总结
1. No compiler is provided in this environment,遇到这个问题,需要将安装gitlab-runner的服务器上的JDK升级到11+
2. git fetch-pack:expected shallow list ,这是因为gitlab-runner安装的时候自带的git版本过低,需要升级git版本。
git版本升级命令
#移除当前的git
yum remove git
#安装源
yum install http://opensource.wandisco.com/centos/7/git/x86_64/wandisco-git-release-7-2.noarch.rpm
#安装git
yum install git
#更新git
yum update git
3. 报401都是没有授权,要在maven中配置server,填写token
4.还有一个问题忘记了,但是是因为maven设置settings.xml文件中配置了阿里maven仓库,我们服务器请求后会转发,导致需要的pom文件变成html,解决方法就是去掉阿里maven仓库的配置。
好了,顺便说一下,我的版本是gitlab14.0.3,如果没有这个功能的可以升级一下。