在前面文章已经将代码从git拉取到本地了,现在需要将本地代码打包制作成镜像,然后上传到harbor仓库
配置maven
在全局工具设置里面配置maven地址


在pipeline使用tools使用
tools { # 这里的maven名称也就是全局工具配置的名称 maven 'maven' }
|
拉取git上代码
stage('pull git code') { steps { git credentialsId:"${credentialsId}",url:"${git_url}",branch: "${git_branch}" } }
|
打包
stage('mvn clean package') { steps { sh "mvn clean package -DskipTests" } }
|
制作镜像
因为使用了 docker 的 maven 插件 com.spotify.docker-maven-plugin 进行 docker 镜像的构建,dockerfile都是提前编写好的,然后使用 mvn docker:build 进行制作镜像
Dockerfile文件
FROM openjdk:8-jdk-alpine VOLUME /tmp ADD eureka-server.jar app.jar RUN sh -c 'touch /app.jar' ENV JAVA_OPTS="" ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
|
使用 com.spotify.docker-maven-plugin 插件后,在pom.xml配置docker仓库地址
<properties> <!-- harbor地址,默认80端口 --> <docker.repostory>192.168.1.112</docker.repostory> <!-- harbor项目地址 --> <docker.registry.name>ocp</docker.registry.name> <!-- 制作镜像的前缀 --> <docker.image.prefix>ocp</docker.image.prefix> </properties>
|
stage('mvn docker build') { steps { sh "cd register-center/eureka-server && mvn docker:build" } }
|
上传镜像到harbor
stage('docker login') { steps { sh "docker login 192.168.1.112 -u admin -p harbor123" } } stage('docker tag') { steps { sh "docker tag ocp/eureka-server 192.168.1.112/ocp/eureka-server" } } stage('docker rmi') { steps { sh "docker rmi ocp/eureka-server" } } stage('docker push harbor') { steps { sh "docker push 192.168.1.112/ocp/eureka-server" } }
|

pipeline脚本
pipeline { agent any tools { maven 'maven' } environment { git_url = 'http://192.168.1.112/root/open-capacity-platform.git' credentialsId = 'gitlab' git_branch = 'master' } stages { stage('pull git code') { steps { git credentialsId:"${credentialsId}",url:"${git_url}",branch: "${git_branch}" } } stage('mvn clean package') { steps { sh "mvn clean package -DskipTests" } } stage('mvn docker build') { steps { sh "cd register-center/eureka-server && mvn docker:build" } } stage('docker login') { steps { sh "docker login 192.168.1.112 -u admin -p harbor123" } } stage('docker tag') { steps { sh "docker tag ocp/eureka-server 192.168.1.112/ocp/eureka-server" } } stage('docker rmi') { steps { sh "docker rmi ocp/eureka-server" } } stage('docker push harbor') { steps { sh "docker push 192.168.1.112/ocp/eureka-server" } } } }
|