k8s部署-29-k8s与cicd持续集成、交付、部署的总流程(四)

图片

在上一篇中我们的流水线构建到了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” 查看。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

运维家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值