我在 Jenkins 有一份参数化的工作。它采用名为“Delete”的 Choice 参数,并以“Yes”和“No”作为选项。 "is"是默认值。作业在提交时触发,当构建处于安静期时,开发人员必须快速将“否”设置为默认值,或者有时他们需要在作业开始之前快速将"is"设置为默认值。这听起来很疯狂!
开发人员的另一个选择是拥有一个属性文件,其中只有"is"或“否”;当作业被触发时,Jenkins 会读取属性文件并继续删除或不删除。这也不是很有帮助,因为开发人员每次提交某些内容之前都需要更改此文件。
有什么办法可以保留他们的选择,直到有人改变它吗?例如,如果开发人员选择“否”作为选项,则作业应继续使用“否”作为删除值,直到有人将其更改为"is"。有什么 Jenkins 插件可以帮助保存输入吗?
谢谢
最佳答案
我不知道有哪个插件可以保留参数选择。不过,我可以想到以下手工解决方案:
- 添加首字母为
Delete=Yes|No
的属性文件到 Jenkins 的工作区根目录。
(工作区根目录取决于管理 Jenkins → 配置系统 → 高级... → >工作区根目录。我使用${JENKINS_HOME}/workspace/${ITEM_FULLNAME}
。) 添加您选择的脚本(Groovy、NodeJS、Windows 批处理、Shell)作为第一个构建步骤,该步骤使用:
curl ${JENKINS_URL}job/${JOB_NAME}/${BUILD_NUMBER}/api/xml?xpath=*/action/cause
(检查现有构建的 URL,手动构建和提交触发构建时返回的内容。)
如果原因是手动构建,请写入
Delete=<current value>
到工作区根目录中的属性文件,否则结束脚本。添加构建步骤注入(inject)环境变量 → 属性文件路径:
../<properties file>
在上面的旁边。
除非有人更改,否则将使用相同的值:
- 在工作区根目录的属性文件中
- 手动触发构建并选择其他值时
如果您想避免其中的每一个,请创建一个具有相同选择参数的项目,该项目只需执行以下操作:
echo Delete=<current value> > ../<properties file>
关于jenkins - 如何保留对 Jenkins 的输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37998428/