Gitlab Package Registry 使用

一、介绍

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生成

Gitlab Package Registry 使用_第1张图片

5.Deploy-Token生成

Gitlab Package Registry 使用_第2张图片

三、使用Gitlab-CI方式构建一个Package

1.创建一个项目ci-demo

Gitlab Package Registry 使用_第3张图片

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

Gitlab Package Registry 使用_第4张图片

 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

Gitlab Package Registry 使用_第5张图片

四、使用本地配置,生成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.发布包打印结果

Gitlab Package Registry 使用_第6张图片

6.gitlab服务器上查看Package,也能成功,具体使用哪一种就看自己需求了。

Gitlab Package Registry 使用_第7张图片五、使用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包可以查看到

Gitlab Package Registry 使用_第8张图片

六、问题总结

1. No compiler is provided in this environment,遇到这个问题,需要将安装gitlab-runner的服务器上的JDK升级到11+

 Gitlab Package Registry 使用_第9张图片

 2. git fetch-pack:expected shallow list ,这是因为gitlab-runner安装的时候自带的git版本过低,需要升级git版本。

Gitlab Package Registry 使用_第10张图片

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,如果没有这个功能的可以升级一下。

你可能感兴趣的:(gitlab,java,gitlab,ci/cd)