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

 





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM