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

说明

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

dockerfile-maven-plugin构建镜像配置

 <plugin>
                <groupId>com.spotifygroupId>
                <artifactId>dockerfile-maven-pluginartifactId>
                <version>1.4.10version>
                <executions>
                    <execution>
                        <id>defaultid>
                        <goals>
                            <goal>buildgoal>
                            <goal>pushgoal>
                        goals>
                    execution>
                executions>
                <configuration>
                    
                    <repository>${docker.repository}/${docker.image.prefix}/${project.artifactId}repository>
                    <tag>latesttag>
                    <buildArgs>
                        <JAR_FILE>target/${project.build.finalName}.jarJAR_FILE>
                    buildArgs>
                    <useMavenSettingsForAuth>trueuseMavenSettingsForAuth>
                configuration>
            plugin>
参数说明
${docker.repository} 镜像仓库地址
${docker.image.prefix} 镜像库前缀/区分项目分类
${project.artifactId} 包Id/唯一镜像名
1  <properties>
2         <java.version>8java.version>
3         <docker.image.prefix>yourprefixdocker.image.prefix>
4         <docker.repository>yourrepositoryurldocker.repository>
5     properties>
镜像仓库配置

 

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

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

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

 新增Server节点

<server>
    <id>yourrepositoryurlid>
    <username>adminusername>
    <password>*******password>
server> 
View Code
 

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项目的最轻量级配置_第1张图片

 

 

 

Jenkins + Docker + dockerfile-maven-plugin + Harbor CI/CD spring-boot项目的最轻量级配置_第2张图片

 

 

 jenkins新建一个job 使用maven构建

连接git

Jenkins + Docker + dockerfile-maven-plugin + Harbor CI/CD spring-boot项目的最轻量级配置_第3张图片

 

 

插件version number生成构建版本号

${BUILD_DATE_FORMATTED,"yyyyMMdd"}.${BUILDS_TODAY}
View Code

 

Jenkins + Docker + dockerfile-maven-plugin + Harbor CI/CD spring-boot项目的最轻量级配置_第4张图片

 

 执行maven构建命令

clean package -Dmaven.test.skip=true -P dev
View Code
Jenkins + Docker + dockerfile-maven-plugin + Harbor CI/CD spring-boot项目的最轻量级配置_第5张图片

 

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

Jenkins + Docker + dockerfile-maven-plugin + Harbor CI/CD spring-boot项目的最轻量级配置_第6张图片

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

 

 

 

 

解决方法:需要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项目的最轻量级配置_第7张图片

 




你可能感兴趣的:(Jenkins + Docker + dockerfile-maven-plugin + Harbor CI/CD spring-boot项目的最轻量级配置)