是否可以在Jenkins的代码中注入变量,然后像往常一样运行作业?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了是否可以在Jenkins的代码中注入变量,然后像往常一样运行作业?相关的知识,希望对你有一定的参考价值。

我想使用Jenkins在多个平台浏览器配置上运行多个自动化作业。用python编写的自动化框架已经设置为使用Saucelabs实现此目的。 编写代码的人将其拆分为每个浏览器的单独文件夹,每个文件夹都有自己不同的硬编码“大写”设置。已为每个文件夹运行Jenkins作业。

在开发或修复测试用例时,此设置需要大量复制粘贴,这是一个维护噩梦。 我想改进这样的过程:

a)继续在不同的浏览器上运行多个作业

b)将自动化代码减少到单个文件夹

c)让Jenkins在运行作业之前将'caps'dict注入该文件夹中的文件中

d)在另一个浏览器上运行下一个作业时,用新值覆盖'caps'

我想知道这种流程是否可行:

  1. 为詹金斯添加多个'大写'字母
  2. 从下拉列表或单选按钮等中选择一个
  3. 然后jenkins将选择的'caps'注入selenium框架中的某个(config.py)文件中
  4. 然后像往常一样,用我指定的'帽子'在酱油上运行
  5. 能够创造更多具有不同“帽子”的工作

工作1:

caps = {'platform':'windows','browserName':'chrome','version':'63'}

+通常的自动化代码

工作2:

caps = {'platform':'macOS','browserName':'safari','version':'11'}

+通常的自动化代码

是否可以配置Jenkins来做到这一点?如何?它是适合这种情况的合适工具吗?

答案

我在自己的机器上安装了Jenkins并找到了我希望的解决方案,所以如果任何初学者都有相同的技术需求,我会回答我自己的问题:

首先,我在配置文件中使用了sys.argv [1],sys.argv [2],sys.argv [3]:

caps = {'platform':sys.argv [1],'browserName':sys.argv [2],'version':sys.argv [3]}

所以我可以从命令行动态传递一些参数:

python test.py windows chrome 63

然后,我可以通过转到config-> advanced选项卡并选择以下内容,在Jenkins中创建多个共享同一目录的自由式作业:

使用自定义工作区

在每个作业的Build选项卡中,我添加了使用我选择的选项执行shell(或windows命令行)的选项,例如:

工作1:

python test.py windows chrome 63

作业2:

python test.py macOS firefox 58

所以现在我有多个工作在酱实验室的各种平台浏览器组合上运行,但共享相同的源代码

以上是关于是否可以在Jenkins的代码中注入变量,然后像往常一样运行作业?的主要内容,如果未能解决你的问题,请参考以下文章

Jmeter + ant + jenkins轻量级接口自动化测试

PHP 代码审计代码执行注入

Jenkins 源代码编译

是否有任何 Maven 命令可以在 Jenkins shell 上运行来分析 SonarQube 中的打字稿代码?

如何让jenkins控制台输出显示时间

使用jenkins和编译服务器