前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用Jenkinsfile-Runner对流水线/共享库测试

使用Jenkinsfile-Runner对流水线/共享库测试

作者头像
DevOps云学堂
发布2020-03-02 11:24:13
1K0
发布2020-03-02 11:24:13
举报
文章被收录于专栏:DevOps持续集成DevOps持续集成

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

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

在命令行中使用


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

代码语言:javascript
复制
wget jenkins/war-stable/2.204.2/jenkins.war
unzip jenkins.war -d /test/jenkins

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

代码语言:javascript
复制
git clone https://github.com/jenkinsci/jenkinsfile-runner.git
cd jenkinsfile-runner/
mvn clean package  -Dmaven.test.failure.ignore=true

Jenkinsfile-runner 的使用方法:

代码语言:javascript
复制
jenkinsfile-runner -w <path to war>  \
                   -p <path to plugins> \
                   -f <path to Jenkinsfile> \
                   -a "param1=Hello&param2=value2"
  • -w 指定我们刚才解压的war目录
  • -p 指定Jenkins的插件目录
  • -f 指定我们要运行的Jenkinsfile
  • -a 指定对Jenkinsfile传递的参数

编写一个用于测试的Jenkinsfile。

代码语言:javascript
复制
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'            
           }        
        }    
    }
}

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

代码语言:javascript
复制
jenkinsfile-runner -w test/jenkins \
                   -p $JENKINS_HOME/plugins \
                   -f Jenkinsfile \
                   -a "param1=Hello&param2=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 script
+ 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

使用Docker方式

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

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

代码语言:javascript
复制
docker run --rm \
           -v $(pwd)/Jenkinsfile:/workspace/Jenkinsfile \
           jenkins4eval/jenkinsfile-runner
  • -v 挂载本地的Jenkinsfile
  • 镜像名称
  • jenkins4eval/jenkinsfile-runner

总结:

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DevOps持续集成 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档