在前面文章已经将代码从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"
}
}
}
}