zl程序教程

您现在的位置是:首页 >  后端

当前栏目

(2/2)集成部署(CICD)· 使用篇

集成部署 使用 CICD
2023-06-13 09:16:38 时间

接下来我会在Q&A讲述一些常用的功能

后续可能还会陆续添加

构建一个流水线

声明式和脚本式流水线都是 DSL 语言,用来描述软件交付流水线的一部分。脚本式流水线是用一种限制形式的 Groovy 语法编写的。

文档:https://www.jenkins.io/zh/doc/book/pipeline/getting-started/

构建流水线几种方式

官方提供的流水线可以通过以下任一方式来创建:

1.通过 Blue Ocean - 在 Blue Ocean 中设置一个流水线项目后,Blue Ocean UI 会帮你编写流水线的 Jenkinsfile 文件并提交到源代码管理系统。

2.通过经典 UI - 你可以通过经典 UI 在 Jenkins 中直接输入基本的流水线。

3.在源码管理系统中定义 - 你可以手动编写一个 Jenkinsfile 文件,然后提交到项目的源代码管理仓库中。

开始构建

这里就用Jenkins里面自带的(经典 UI )流水线管理来做演示吧

首先创建项目选择流水线

编写流水线构建脚本

我们在流水线填写如下代码

pipeline {
    agent any 
    stages {
        stage('构建') {
            steps {
                echo "拉取代码"
                sh ''' 
                git clone https://gitlab.xxxx.cn/root/test.git
                cd test
                docker build -t myapp .
                '''
            }
        } 
        stage('测试') {
            steps {
                echo "这里可以执行执行集成测试"
            }
        }
        stage('发布') {
            steps {
               sh '''
                docker run --restart=always --name myapp -e TZ=Asia/Shanghai -p 8080:80 -d myapp
                '''
            }
        }
    }
}

执行任务

这里我们演示手动触发构建,点击立即构建即可

查看流水线日志

上面是可视化查看流水线构建的进度图 我们还可以通过控制台查看日志

成功判断

往下拉我们可以看到日志提示失败了

原来是我们刚才的容器已经启动,镜像构成后我需要停止原来的已经启动的服务,这时我们修改一下流水线脚本先停止原来的服务再重新启动

pipeline {
    agent any 
    stages {
      stage('测试') {
            steps {
                echo "这里可以执行执行集成测试"
                npm run test
            }
        }
        stage('构建') {
            steps {
                echo "拉取代码"
                sh ''' 
                rm -rf test
                git clone https://gitlab.xxxx.cn/root/test.git
                cd test
                docker build -t myapp .
                '''
            }
        } 
        stage('测试') {
            steps {
                echo "这里可以执行执行集成测试"
                npm run test
            }
        }
        stage('发布') {
            steps {
               sh '''
                docker stop myapp
                docker rm myapp
                docker run --restart=always --name myapp -e TZ=Asia/Shanghai -p 8080:80 -d myapp
                '''
            }
        }
    }
}

可以看到我们修改了流水线脚本后

最后的集成构建成功发布

此时我们再去访问我们web服务

访问一下swagger接口文档试试

可以看到部署成功

我们再回来看流水线

可以看到最后一次都是绿色说明全部集成部署完成