当前位置: 首页 > 面试题库 >

用ansible创建詹金斯工作

阳俊德
2023-03-14
问题内容

我正在使用ansible在centos7上部署jenkins CI服务器的项目,并且在使用ansible从xml模板创建jenkins作业时遇到了问题。

到目前为止,一切工作正常,但现在我希望能够创建作业,并使用ansible从xml文件为它们提供一些基本配置。我的解决方案是jenkins-cli的以下命令:

sudo java -jar jenkins-cli.jar -s http://localhost:8080 create-job Job_test1 < Job_test1.xml

在centos7框中手动输入时,此方法非常有效,但是当我将其放入ansible并运行它时:

- name: create jenkins jobs with xml files
  sudo: yes
  command: "java -jar {{ jenkins.cli_dest }} -s http://localhost:8080 create-job {{ item.name }} < {{ jenkins_dest }}/{{ item.xml_name }}"
  with_items: jenkins_jobs

它给出以下错误信息:

stderr: Too many arguments: <
java -jar jenkins-cli.jar create-job NAME
Creates a new job by reading stdin as a configuration XML file.

有人知道解决方案吗?据我所知,我做得很好(因为当ansible输入该命令时该命令有效)


问题答案:

的命令模块不支持输入和输出重定向,因为它不命令字符串传递给一个壳。这就是它的文档说的:

它不会通过外壳进行处理,因此$ HOME之类的变量以及“ <”,““>”,“
|”和“&”之类的操作将不起作用(如果需要这些功能,请使用shell模块)。

所以:

- name: create jenkins jobs with xml files
  sudo: yes
  shell: "java -jar {{ jenkins.cli_dest }} -s http://localhost:8080 create-job {{ item.name }} < {{ jenkins_dest }}/{{ item.xml_name }}"
  with_items: jenkins_jobs


 类似资料:
  • 问题内容: 我正在使用ansible集成开发人员机器。在那台机器上,我正在安装詹金斯。 我用ansible为詹金斯创建了工作: 并通过cli等安装了插件。 但是现在我缺少工作的ssh凭证;我只想要一个带有用户“ jenkins”的ssh凭证,并且使用“来自Jenkins主〜/ .ssh”。 我正在谈论的是这种凭证: 也许是一个普通的脚本,但是我没有找到很多有关它的信息。谢谢您的帮助。 问题答案:

  • 问题内容: 我想在不同的机器上使用相同的作业。但是我不想每次都更改作业的配置。我可以通过机器名称标签作为参数并在另一台机器上运行作业吗?(不同时)。 我想在将作业运行到我在配置中编写的脚本(批处理脚本)时传递参数。我们能做到吗? 我可以从工作中获得返回值并在下一个工作中使用它吗? 问题答案: 是的,您可以使用NodeLabel Parameter Plugin传递节点标签参数。 是的,您可以按照描

  • 问题内容: 我想要一个可以通过作业名称卷曲的jenkins build / CI作业的API。jenkins是否有可用的此类API? 问题答案: 2小时前,我在这里发布了使用Jenkins REST API和Curl的解决方案:使用批处理脚本开始Jenkins构建 这是curl命令的示例(对于带有参数的作业): 和没有参数的工作: 如果您不想使用用户名/密码,则可以为您的Jenkins用户生成一个

  • 问题内容: 我有一个.Jar文件,它将在运行时将数据加载到数据库中。我已经计划通过詹金斯来担任这项工作。当我在詹金斯执行作业时,它将成功运行.JAR。但是,请说作业中是否存在空指针异常,并且该异常未成功完成。即便如此,詹金斯仍然说工作已经“通过”。如果作业执行过程中出现问题,如何使作业失败? 问题答案: @Corey的解决方案很好。而且,如果您不想编写JUnit测试并在Jenkins中提供支持,则

  • 有没有可能让詹金斯使用真正的浏览器而不是无头浏览器?我正在运行一些用TestNG编写的测试(使用Selenium webdriver)。当我运行testng时。在Eclipse中,浏览器启动并运行测试。但当我使用Jenkins并用maven运行测试时,它不会启动任何浏览器。

  • 问题内容: 我已经全局安装了gulp(npm install gulp -g)。但是我认为这是行不通的。当我在本地程序上进行gulp测试时,它工作正常。但是,当我在github(在Jenkins上)的同一个程序上进行gulp测试时,会出现以下错误。它不会识别gulp命令。有人能帮我吗?感谢詹金斯的错误: 但是在命令行中它运行良好。 问题答案: 为了知道您的gulp在哪里,您应该全局(对所有用户)将