【devops】九、Jenkins流水线(上)

简介: 【devops】九、Jenkins流水线(上)

九、Jenkins流水线


9.1 Jenkins流水线任务介绍

之前采用Jenkins的自由风格构建的项目,每个步骤流程都要通过不同的方式设置,并且构建过程中整体流程是不可见的,无法确认每个流程花费的时间,并且问题不方便定位问题。

Jenkins的Pipeline(流水线)可以让项目的发布整体流程可视化,明确执行的阶段,可以快速的定位问题。并且整个项目的生命周期可以通过一个Jenkinsfile文件管理,而且Jenkinsfile文件是可以放在项目中维护的。

所以Pipeline相对自由风格或者其他的项目风格更容易操作。


9.2 Jenkins流水线任务


9.2.1 创建Jenkins流水线任务
  1. 创建任务
    创建Jenkins流水线任务

0de392fdbc7c4acf85d79d0f86094791.png

2、选择一个Hello World的Groovy脚本,应用保存

Hello World脚本生成

a6ddb8cd9ce147f2b653a7ad603f9a39.png

3、立即构建后查看效果图,清晰明了

构建后查看视图

0585445285fa4cd8b35728b8e3ef14ed.png

9.2.2 Groovy脚本
  • Groovy脚本基础语法并编辑脚本
// 所有脚本命令包含在pipeline{}中
pipeline {  
    // 指定任务在哪个节点执行(Jenkins支持分布式)
    agent any
    // 声明全局环境变量方便后面使用,key = 'value'形式,指定变量名=变量值信息
    environment{
        host = '192.168.2.211'
    }
    // 存放所有任务的合集
    stages {
        // 单个任务
        stage('任务1:拉取git仓库代码') {
            // 实现任务的具体流程
            steps {
                echo '拉取代码成功'
            }
        }
        // 单个任务
        stage('任务2:通过maven构建项目') {
            // 实现任务的具体流程
            steps {
                echo '通过maven构建项目-SUCCESS'
            }
        }
        stage('任务3:通过sonarqube做代码质量检测') {
            steps {
                echo '通过sonarqube做代码质量检测-SUCCESS'
            }
        }
        stage('任务4:通过docker制作自定义镜像') {
            steps {
                echo '通过docker制作自定义镜像-SUCCESS'
            }
        }
        stage('任务5:将自定义镜像推送到harbor') {
            steps {
                echo '将自定义镜像推送到harbor-SUCCESS'
            }
        }
        stage('任务6:通过publish over ssh通知目标服务器') {
            steps {
                echo '通过publish over ssh通知目标服务器-SUCCESS'
            }
        }
    }
}


  • 配置Grovvy脚本
  1. 将编辑好的脚本复制到流水线脚本中

cb5a44b9163749deb544c2c17f9044bd.png

2、立即构建查看效果

37eddb22743d43d7b6b67f01d5706f9f.png

Ps:涉及到特定脚本,Jenkins给予了充足的提示,可以自动生成命令

生成命令位置

89b85d89057c4f088d37bf60de2223a8.png

9.2.3 Jenkinsfile实现pipeline流水线脚本维护

在Jenkins上维护Groovy脚本成本过高,因此就衍生出了Jenkinsfile方式。Jenkinsfile方式需要将脚本内容编写到gitlab项目中的Jenkinsfile文件中,Jenkins每次构建都会自动从gitlab上拉取项目并且获取项目中Jenkinsfile文件对项目进行构建。

1、准备Jenkinsfile

gitlab上创建一个Jenkinsfile文件,将上面编辑好的Grovvy脚本复制进去,提交

ef2f5de91eec4301a3562a81da9fd900.png

7f626c467bab46a09396c833d6adaf6c.png

2、Jenkins上配置pipeline流水线

fcee787597f14bdab261bde10d8a976c.png

3、立即构建测试效果

cb3edaebcb2b40299dbc736df990da38.png


9.3 Jenkins流水线任务实现


9.3.1 参数化构建
  • 添加参数化构建,方便选择不的项目版本
    Git参数化构建:

fb294845573b46b6a94864ec91d7b740.png

9.3.2 拉取Git代码

从这里开始就是把Jenkins的每一步流程转换成代码去执行。流程就是在Jenkins流水线语法中生成对应的代码,然后用代码把gitlab上Jenkinsfile文件中对应的内容替换掉,然后再在Jenkins上构建。

1、通过流水线语法生成Checkout代码的脚本

65ffcb16238b4e21981ff57379b938b4.png

bf72fd1bf42944f39d66bfda6bfa883f.png

fd9a017cabea4d56b8a0ae0945db29c1.png

1ce7de4e7d034056985759d11949065a.png

2、修改gitlab中Jenkinsfile文件的内容

05fcafaed70743d3a51cee8fbef635b2.png

将*/main更改为标签${tag},表示引用配置中的Git参数tag,这里只是列出了修改拉取Git代码的部分,其余部分不修改,直接保存

pipeline {  
    agent any
    environment{
      host = '192.168.2.211'
    }
    stages {
        stage('任务1:拉取git仓库代码') {
            steps {
                checkout([$class: 'GitSCM', branches: [[name: '${tag}']], extensions: [], userRemoteConfigs: [[url: 'http://192.168.2.210/root/test.git']]])
            }
        }
}


3、立即构建查看效果

53706db673604488ab094ef74081198d.png

9.3.3 maven构建代码
  1. 自动生成maven构建代码

17c9f9ee1e5440a8ac92afb3f88f88bb.png

2、替换gitlab上的代码

fd46c12c29334226921875068d8c2e3f.png

通过脚本执行mvn的构建命令 :

pipeline {  
    agent any
    environment{
      host = '192.168.2.211'
    }
    stages {
        stage('任务1:拉取git仓库代码') {
            steps {
                checkout([$class: 'GitSCM', branches: [[name: '${tag}']], extensions: [], userRemoteConfigs: [[url: 'http://192.168.2.210/root/test.git']]])
            }
        }
        stage('任务2:通过maven构建项目') {
            steps {
                sh '/var/jenkins_home/maven/bin/mvn clean package -DskipTest'
            }
        }
    }
}


3、立即构建查看效果

ee109531c3d94723b53394ba24929434.png

相关文章
|
25天前
|
监控 Kubernetes 测试技术
阿里云云效产品使用问题之一个模块分别有三个环境,如何通过一条流水线完成
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
4天前
|
运维 Kubernetes Java
阿里云云效操作报错合集之npm包已经发布到了制品仓库,但流水线中拉取依赖时出现404错误,该如何排查
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
阿里云云效操作报错合集之npm包已经发布到了制品仓库,但流水线中拉取依赖时出现404错误,该如何排查
|
4天前
|
存储 缓存 运维
阿里云云效操作报错合集之流水线在部署到函数计算时,出现报错:"ConcurrentUpdateError",该如何处理
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
4天前
|
域名解析 运维 Java
阿里云云效操作报错合集之流水线构建过程中出现了实时查询异常,该怎么解决
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
24天前
|
监控 测试技术 持续交付
阿里云云效产品使用问题之如何将一个流水线复制到另一个账户下
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
25天前
|
敏捷开发 缓存 安全
阿里云云效产品使用问题之手动触发流水线的YAML语法该怎么写
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
25天前
|
敏捷开发 测试技术 持续交付
阿里云云效产品使用问题之如何在新版本的云效上迁移老版本的流水线
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
阿里云云效产品使用问题之如何在新版本的云效上迁移老版本的流水线
|
4天前
|
运维 Ubuntu Shell
阿里云云效操作报错合集之流水线构建Docker镜像时,遇到报错:“error: failed to solve: rpc error: code”,该怎么办
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
4天前
|
网络协议 前端开发 测试技术
阿里云云效操作报错合集之Dockerfile流水线构建中,参数未获取到,是什么导致的
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
4天前
|
API 开发工具 数据安全/隐私保护
阿里云云效操作报错合集之流水线镜像已经生成,但容器没有出现,是什么导致的
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。

热门文章

最新文章