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

说明

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

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> 
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新建一个job 使用maven构建

连接git

插件version number生成构建版本号

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

 执行maven构建命令

clean package -Dmaven.test.skip=true -P dev
View Code

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

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

 

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

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

 ssh指定服务器pull镜像并run - 插件Publish Over SSH




猜你喜欢

转载自www.cnblogs.com/GreedyL/p/12073888.html