我正在使用.Include("RecipeItems.RecipeItemsComponents")
文件来配置jenkins作业,并且遇到了功能yaml
(请参阅here)。但是,该文档既没有描述如何在jenkins环境中使用变量,也没有描述“加密”密码的含义(如何加密?)。指向EnvInjectPlugin的链接也没有必需的信息。
在哪里可以找到有用的信息/文档?为什么本文档如此不完整?
上下文:
我想以安全的方式向詹金斯工作中注入密码。在此jenkins作业中,我想使用此密码作为登录在线服务的密码,以便测试该服务的多个方面。我需要测试脚本来获取该密码(环境变量?)才能登录服务。
在参考文档中未回答的未解决问题:
答案 0 :(得分:1)
在文档中,作者解释说,插件“将密码作为环境变量注入到构建中”,因此,正如Alexandre Cartapanis指出的那样,可以通过其名称($ password_name)作为环境变量进行访问。此信息分布在两个站点:在YAML文档中,他们说“将构建环境中的密码作为环境变量注入。需要Jenkins EnvInject插件”,EnvInject插件页面指出“ Shared Objects插件对Envinject插件有所贡献,使您能够将共享对象填充为环境变量”。在本文中,您可能会发现an example试图通过其名称访问该变量-仅在构建时可用。
存储后,詹金斯makes sure passwords are encrypted。据我了解,它将被解密只是为了在作业需要的地方作为变量传递-就像使用任何凭证一样。
有关EnvInject插件工作方式的一些其他信息在指向其他相关插件的链接上提供,例如Shared Objects plugin
只要您仅将密码用作环境变量并且不记录其值,就可以安全地使用它。在Jenkins管道中使用相同的方法或通过引用密码的ID来访问SCM凭证。
答案 1 :(得分:1)
密码注入的文档不可用。因此,我在这里提供了一个完整的示例。
首先,您需要获取加密的密码。
第二步步骤,您需要将密码放在yaml文件中,如下所示:
wrappers:
- inject-passwords:
global: true
mask-password-params: true
job-passwords:
- name: TEST_USER_PASSWORD
password: '{AQAAABAAAAAQvsFFVkOmzr5WzEhX8OWuK7mizr5xzEhX8lGo2AGMVw8=}'
- name: TEST_USER_PASSWORD2
password: '{AQAAABAAAAAQvsFFVkOmzr5xzEhX8lGo2AcPGMVw8b8SflGo2AcPGMVw8=}'
注意:密码用引号和大括号括起来。
第三步步骤:在詹金斯中,您可以使用环境变量TEST_USER_PASSWORD
和TEST_USER_PASSWORD2
。这些变量将包含 decrypted 密码,但是当您将它们打印出来时,jenkins将注意到日志中有一个密码,jenkins将对其进行混淆。
示例:
实际输出
My password is jddfdjh44y98dyghsdgdgfdg
Jenkins日志输出
My password is [********]
您可以逐步打印变量的内容以获取密码(以检查密码是否有效)。