Jenkins-Pipeline

Posted shark_西瓜甜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jenkins-Pipeline相关的知识,希望对你有一定的参考价值。

一、Free Style Job 和 Pipeline Job 的区别

Freestyle

在这里插入图片描述

Freestyle 学习成本底,容易掌握,方便配置,但是不利于项目以后的 维护

Pipeline

在这里插入图片描述

Pipline Job 有一定的学习成本,有利于项目以后都维护,比较匹配持续集成(CI)和持续部署、持续交付的原则(CD)。

Pipeline Job

基本语法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

注释

Groovy的注释和java相同,如下是注释单行和多行的风格

/*
 * 这是多行注释.
 */
// 这是单行注释 

官方文档

构建一个 Pipeline Job

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

#!groovy

pipeline {
    // 指定运行构建的主机名和工作空间
    agent {node {label '172.16.153.172'}}
    
    environment {
        // 定义全局环境变量
        PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin"
    }

    parameters {
        // 定义一个 选项参数
        choice(
            // 选项的两个值 dev 和 prod
            choices: 'dev\\nprod',
            description: 'choose deploy environment',
            name: 'deploy_env'
            )
        // 定义一个文本参数
        string (name: 'version', defaultValue: '1.0', description: 'build version')
    }

    // 任务段,所有的任务都在这里声明
    stages {
        // 第一个任务段
        stage("Checkout test repo") { // 给这个任务段起个名字
            steps{  // 在这里声明具体要执行的任务步骤
                // 利用 sh  模块 执行 shell 命令
                sh 'git config --global http.sslVerify false'
                dir ("${env.WORKSPACE}") { // 切换当前的工作目录到 jenkins 的工作目录
                    /* 用 git 模块切换分支 主 分支
                    * credentialsId 是访问 gitlab/github 的凭据唯一标识
                    */
                    git branch: 'master', 
                        credentialsId:"07b8e67f-31f6-4c48-ae0b-ab557cc0cea0	",
                        url: 'git@gitlab.com:xiguatain/test_jenkis_freestyle.git'
                }
            }
        }

        // 第二个任务段
        stage("Print env variable") {
            steps {
                dir ("${env.WORKSPACE}") {
                    sh """
                    echo "[INFO] Print env variable"
                    echo "Current deployment environment is $deploy_env" >> test.properties
                    echo "The build is $version" >> test.properties
                    echo "[INFO] Done..."
                    """
                }
            }
        }

        // 第三个任务段
        stage("Check test properties") {
            steps{
                dir ("${env.WORKSPACE}") {
                    sh """
                    echo "[INFO] Check test properties"
                    if [ -s test.properties ]
                    then 
                        cat test.properties
                        echo "[INFO] Done..."
                    else
                        echo "test.properties is empty"
                    fi
                    """

                    echo "[INFO] Build finished..."
                }
            }
        }
    }
}

以上是关于Jenkins-Pipeline的主要内容,如果未能解决你的问题,请参考以下文章

15-Jenkins-Pipeline-声明式流水线语法-agent

Jenkins-pipeline:没有这样的 DSL 方法

Jenkins-Pipeline

Jenkins-pipeline的实现步骤

Jenkins-Pipeline使用示例

20-Jenkins-Pipeline-顺序执行和并行