欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Jenkins + Docker + dockerfile-maven-plugin + Harbor CI/CD spring-boot项目的最轻量级配置

程序员文章站 2022-06-11 16:48:18
说明 本文只为方便日后查阅,记录一些关键性的步骤和踩坑的情况. dockerfile-maven-plugin构建镜像配置 1 2 8 3 yourprefix

说明

本文只为方便日后查阅,记录一些关键性的步骤和踩坑的情况.

dockerfile-maven-plugin构建镜像配置

 <plugin>
                <groupid>com.spotify</groupid>
                <artifactid>dockerfile-maven-plugin</artifactid>
                <version>1.4.10</version>
                <executions>
                    <execution>
                        <id>default</id>
                        <goals>
                            <goal>build</goal>
                            <goal>push</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <!--<username>***</username>
                    <password>*******</password>-->
                    <repository>${docker.repository}/${docker.image.prefix}/${project.artifactid}</repository>
                    <tag>latest</tag>
                    <buildargs>
                        <jar_file>target/${project.build.finalname}.jar</jar_file>
                    </buildargs>
                    <usemavensettingsforauth>true</usemavensettingsforauth>
                </configuration>
            </plugin>
参数说明
${docker.repository} 镜像仓库地址
${docker.image.prefix} 镜像库前缀/区分项目分类
${project.artifactid} 包id/唯一镜像名
1  <properties>
2         <java.version>8</java.version>
3         <docker.image.prefix>yourprefix</docker.image.prefix>
4         <docker.repository>yourrepositoryurl</docker.repository>
5     </properties>

 

 jenkins中的maven配置setting.xml-设置登录harbor的地址和账户密码

上一步中push镜像的时候需要

文件位置:/var/jenkins_home/tools/hudson.tasks.maven_maveninstallation/mvn3.6.3/conf

 新增server节点

<server>
    <id>yourrepositoryurl</id>
    <username>admin</username>
    <password>*******</password>
</server> 
 

dockerfile配置

from openjdk:8u181-jdk-alpine
arg workdir=/app
volume ${workdir}
workdir ${workdir}
arg jar_file
copy ${jar_file} app.jar
expose 8080
entrypoint ["java","-djava.security.egd=file:/dev/./urandom","-jar","app.jar"]

系统设置-全局工具配置 jdk maven

Jenkins + Docker + dockerfile-maven-plugin + Harbor  CI/CD spring-boot项目的最轻量级配置

 

 

 

Jenkins + Docker + dockerfile-maven-plugin + Harbor  CI/CD spring-boot项目的最轻量级配置

 

 

 jenkins新建一个job 使用maven构建

连接git

Jenkins + Docker + dockerfile-maven-plugin + Harbor  CI/CD spring-boot项目的最轻量级配置

 

 

插件version number生成构建版本号

${build_date_formatted,"yyyymmdd"}.${builds_today}

 

Jenkins + Docker + dockerfile-maven-plugin + Harbor  CI/CD spring-boot项目的最轻量级配置

 

 执行maven构建命令

clean package -dmaven.test.skip=true -p dev
Jenkins + Docker + dockerfile-maven-plugin + Harbor  CI/CD spring-boot项目的最轻量级配置

 

 使用版本号tag新的镜像并push到harbor上

Jenkins + Docker + dockerfile-maven-plugin + Harbor  CI/CD spring-boot项目的最轻量级配置

 执行脚本push镜像到私有registry报没有权限的错

 Jenkins + Docker + dockerfile-maven-plugin + Harbor  CI/CD spring-boot项目的最轻量级配置

 

 

 

解决方法:需要login私有registry(在jenkins容器内执行login命令)

执行成功后会在root/.docker文件夹下生成config.json文件(含有login私有registry的凭证)

 

 ssh指定服务器pull镜像并run - 插件publish over ssh

Jenkins + Docker + dockerfile-maven-plugin + Harbor  CI/CD spring-boot项目的最轻量级配置