编写完Jenkinsfile如何对流水线


编写完Jenkinsfile如何对流水线/共享库测试?


编写完Jenkinsfile如何对流水线/共享库测试?


如果您确实想从CLI运行Pipeline而不启动完整的Jenkins实例,则可以查看Jenkinsfile-runner项目。在某些情况下可能出于开发/测试目的而适用。


Jenkinsfile Runner

Jenkinsfile Runner是将Jenkins Pipeline执行打包为命令行工具的实验。预期的用例包括:在功能即服务的上下文中使用Jenkins;协助Jenkinsfile本地编辑;集成测试共享库。Jenkinsfile Runner可以通过命令行运行也可以通过Docker方式运行。


在命令行中使用

准备工作:需要下载Jenkins的war包,并解压。

<code>wget jenkins/war-stable/2.204.2/jenkins.war
unzip jenkins.war -d /test/jenkins/<code>

下载Jenkinsfile-runner项目,进行编译打包并生成可执行程序。

<code>git clone https://github.com/jenkinsci/jenkinsfile-runner.git
cd jenkinsfile-runner/
mvn clean package -Dmaven.test.failure.ignore=true/<code>

Jenkinsfile-runner 的使用方法:

<code>jenkinsfile-runner -w <path>  \\
-p <path> \\

-f <path> \\
-a "param1=Hello¶m2=value2"/<path>/<path>/<path>/<code>
  • -w 指定我们刚才解压的war目录
  • -p 指定Jenkins的插件目录
  • -f 指定我们要运行的Jenkinsfile
  • -a 指定对Jenkinsfile传递的参数
  • 编写一个用于测试的Jenkinsfile

    <code>pipeline {    
    agent any
    parameters {
    string(name: 'param1', defaultValue: '', description: 'Greeting message')
    string(name: 'param2', defaultValue: '', description: '2nd parameter')

    }
    stages {
    stage('Build') {
    steps {
    echo 'Hello world!'
    echo "message: ${params.param1}"
    echo "param2: ${params.param2}"
    sh 'ls -la'
    }
    }
    }
    }/<code>


    让我们使用Jenkinsfile-runner运行测试。

    <code>jenkinsfile-runner -w test/jenkins \\
    -p $JENKINS_HOME/plugins \\
    -f Jenkinsfile \\
    -a "param1=Hello¶m2=value2"


    Started
    Running in Durability level: PERFORMANCE_OPTIMIZED

    Running on Jenkins in /tmp/jenkinsTests.tmp/jenkins8090792616816810094test/workspace/job
    [Pipeline] node
    [Pipeline] {
    [Pipeline] // stage
    [Pipeline] stage
    [Pipeline] { (Build)
    [Pipeline] echo
    Hello world!
    [Pipeline] echo
    message: Hello
    [Pipeline] echo
    param2: value2
    [Pipeline] sh
    [job] Running shell/>+ ls -la
    total 12
    drwxrwxr-x 2 kohsuke kohsuke 4096 Feb 24 15:36 .
    drwxrwxr-x 4 kohsuke kohsuke 4096 Feb 24 15:36 ..
    -rw-rw-r-- 1 kohsuke kohsuke 0 Feb 24 15:36 abc
    -rw-rw-r-- 1 kohsuke kohsuke 179 Feb 24 15:36 Jenkinsfile
    [Pipeline] }
    [Pipeline] // stage
    [Pipeline] }
    [Pipeline] // node
    [Pipeline] End of Pipeline
    Finished: SUCCESS
    /<code>

    使用Docker方式

    使用docker方式相对简单许多,我们只需要下载镜像,将要测试的jenkinsfile

    以volume的当时挂载到容器中即可。

    <code>docker run --rm \\
    -v $(pwd)/Jenkinsfile:/workspace/Jenkinsfile \\
    jenkins4eval/jenkinsfile-runner/<code>
  • -v 挂载本地的Jenkinsfile
  • 镜像名称
  • jenkins4eval/jenkinsfile-runner
  • 总结

    在使用jenkinsfile-runner进行测试Jenkinsfile的过程中需要安装所需的插件,第一种方式是使用当前JenkinsHome目录中的插件,另一种方式是重新安装插件。 我觉得每次测试都安装插件会影响测试的效率,直接使用JenkinsHome中的插件也有可能在远端不便于使用。总之Jenkinsfile插件还是个问题!。




    编写完Jenkinsfile如何对流水线/共享库测试?


    分享到:


    相關文章: