11-DevOps-Jenkins Pipeline流水线作业

前面已经完成了,通过在Jenkins中创建自由风格的工程,在界面上的配置,完成了发布、构建的过程。

这种方式的缺点就是如果要在另一台机器上进行同样的配置,需要一项一项去填写,不方便迁移,操作比较麻烦。

解决这个问题,就要用到纯脚本方式的操作,即pipline流水线。

新建pipline工程

如果没有找到这个选项,则需要在Jenkins中安装pipline的插件。

配置pipline作业

配置参数化构建过程

勾选上添加参数,为了动态获取到GitLab中的tag版本。

生成模板脚本

在pipline脚本的地方,选择hello world,生成一个简单的脚本模板。

每一个stage代码块,就是一个操作步骤。

下面就是配置不同的操作步骤,当前,Jenkins提供了脚本生成工具,可以通过先在页面填写好配置参数(与自由风格相同的操作方式),然后点击生成脚本,就可以获取到当前步骤执行的脚本。

利用工具生成每个步骤脚本

具体操作方式如下:

在配置界面,找到流水线语法。

1.从GitLab中拉取代码

点击生成流水线脚本,下面就是生成的脚本。

拷贝脚本放到pipline脚本文本框中。

下面的每一步都是这样操作,获取到每一步要执行的脚本。

2.程序打包
3.上传文件到Harbor所在服务器并完成镜像构建
4.目标服务器完成容器生成

通过上面一步步操作,最终生成的完整脚本如下:

bash 复制代码
pipeline {
    agent any

    stages {
        stage('Pull SourceCode') {
            steps {
                checkout scmGit(branches: [[name: '$tag']], extensions: [], userRemoteConfigs: [[url: 'http://192.168.1.10:83/root/myproject-ci']])
            }
        }
        stage('Maven Build') {
            steps {
                sh 'sh /usr/local/maven/bin/mvn package'
            }
        }
        stage('Publish Harbor Image') {
            steps {
                sshPublisher(publishers: [sshPublisherDesc(configName: 'Harbor-192.168.1.12', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: 'target', sourceFiles: 'target/*.jar'), sshTransfer(cleanRemote: false, excludes: '', execCommand: '''docker build -t 192.168.1.12:85/public/myproject:$tag /usr/local/
docker login -u admin -p Harbor12345 192.168.1.12:85
docker push 192.168.1.12:85/public/myproject:$tag''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: 'docker', sourceFiles: 'docker/*')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
            }
        }
         stage('Run Container') {
            steps {
                sshPublisher(publishers: [sshPublisherDesc(configName: 'Target-192.168.1.11', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '''docker rm -f myproject
docker run -d -p 81:81 --name=myproject 192.168.1.12:85/public/myproject:$tag''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
            }
        }
    }
}

构建

选择一个需要的tag版本,点击构建。(注意:如果这里没有出现tag的版本号,也点击构建,构建成功后,第二次再构建就能看到版本号)

在状态栏,可以看到每个执行阶段的耗时情况。(需要安装插件:pipeline Stage View)

鼠标放上去,可以直接看日志。

访问应用程序

http://192.168.1.11:81/

到此,完成了使用pipline流水线作业的方式完成Jenkins的构建。

相关推荐
林开落L43 分钟前
Linux深度探索:进程管理与系统架构
linux·运维·系统架构
XINO1 小时前
防火墙双机热备实践
运维·安全
神洛华1 小时前
Docker概念详解
运维·docker·容器
四川合睿达自动化控制工程有限公司1 小时前
管道位移自动化监测方案
运维·自动化
007php0071 小时前
Docker Compose 安装Elasticsearch8和kibana和mysql8和redis5 并重置密码的经验与总结
大数据·运维·elasticsearch·搜索引擎·docker·容器·jenkins
XINO1 小时前
企业常见安全事故排查思路
运维·安全
自由如风7092 小时前
Apache Atlas构建安装(Linux)
linux·运维·apache
烦躁的大鼻嘎2 小时前
【Linux】进程替换与自定义 Shell:原理与实战
linux·运维·服务器·ubuntu
merge不墨迹3 小时前
Kubernetes 创建 Jenkins 实现 CICD 配置指南
kubernetes·jenkins
Run1.3 小时前
深入解析 Linux 文件系统中的软硬链接:从原理到实践
linux·运维·服务器