在上一篇中我们的流水线构建到了maven,那么本章我们就来把它配置完毕吧。
构建image
配置流水线
pipeline {
agent any
stages {
stage('Build') {
steps {
// Get some code from a GitHub repository
git "https://gitee.com/xuexi100/yanshi.git"
sh "cd springboot; mvn clean; mvn package"
}
}
stage('build-images') {
steps {
sh "/root/script/build-image-springboot.sh"
}
}
}
}
可以看到我们上面是欲打算使用一个脚本来进行构建的,那么我们就来书写下这个脚本吧,首先我们先理一下思路。
目录确定
首先明确下我们这个脚本不是一次性的,而是一个基础模板,那么第一步就需要解决这个问题,我们的工作目录是哪儿,这样子是不是最好能定义一个环境变量呢?但是有个问题,最开始我们使用的是“gitlab+maven”,我们现在要改成“Scripted Pipeline”,这样子更加适用于我们这个过程。
其实就是新建了一个流水线,名字我们叫“deploy-springboot”吧,添加环境变量之后,内容如下:
node {
env.BUILD_DIR = "/root/script/namespace"
stage('Git') { // for display purposes
git "https://gitee.com/xuexi100/yanshi.git"
}
stage('Maven') {
sh "cd springboot; mvn clean; mvn package"
}
stage('build-image') {
sh "sh /root/script/build-springboot.sh"
}
}
书写脚本
[root@node1 ~]# mkdir -p /root/script/namespace
[root@node1 ~]# cd /root/script/
[root@node1 script]# vim build-springboot.sh
#!/bin/bash
# 判断目录是否存在
if [ "${BUILD_DIR}" == "" ];then
echo "env 'BUILD_DIR' is not ready"
exit 1
fi
# 指定docker的工作目录
Docker_Dir=${BUILD_DIR}/${JOB_NAME}
# 创建docker的工作目录
if [ ! -d ${Docker_Dir} ];then
mkdir -pv ${Docker_Dir}
fi
echo "docker workspace : ${Docker_Dir}"
[root@node1 script]#
文件拿取
接下来是不是应该把构建的文件拿过来了,同样的,我们需要定义个环境变量,于是修改流水线配置如下:
node {
env.BUILD_DIR = "/root/script/namespace"
env.MODEL = "springboot"
stage('Git') { // for display purposes
git "https://gitee.com/xuexi100/yanshi.git"
}
stage('Maven') {
sh "cd ${MODEL}; mvn clean; mvn package"
}
stage('build-image') {
sh "sh /root/script/build-springboot.sh"
}
}
然后我们接着修改脚本内容如下:
#!/bin/bash
# 判断目录是否存在
if [ "${BUILD_DIR}" == "" ];then
echo "env 'BUILD_DIR' is not ready"
exit 1
fi
# 指定docker的工作目录
Docker_Dir=${BUILD_DIR}/${JOB_NAME}
# 创建docker的工作目录
if [ ! -d ${Docker_Dir} ];then
mkdir -pv ${Docker_Dir}
fi
echo "docker workspace : ${Docker_Dir}"
Jenkins_Dir=${WORKSPACE}/${MODEL}
echo "Jenkins workspace : ${Jenkins_Dir}"
# 判断文件是否存在
if [ ! -f ${Jenkins_Dir}/target/*.jar ];then
echo "target jar file not found ${Jenkins_Dir}/target/*.jar"
exit 1
fi
# 切换到docker工作目录
cd ${Docker_Dir}
# 删除里面的内容,有可能有脏数据
rm -rf *
# 移动jar包到当前目录
mv ${Jenkins_Dir}/target/*.jar .
构建镜像
再接着是不是就该创建镜像了并上传了呢?创建镜像就需要一个Dockerfile,我们该把这个Dockerfile放置到哪里呢?我们放置到代码中是不是会比较好呢?那么下来我们就放进去,然后进行构建镜像吧。
PS:这个dockerfile和我们之前的一样哈,并无特殊配置。
整体目录如下:
然后修改脚本如下:
剩余内容请转至VX公众号 “运维家” ,回复 “136” 查看。