下面的插件通过与管道兼容的步骤提供可用的功能。有关如何将步骤集成到管道中的更多信息,请参见步骤部分的管道的语法页面。
有关其他此类插件的列表,请参阅管道步骤参考页面。
withCredentials
:将凭据绑定到变量允许以特殊的方式使用各种凭据(秘密)。(有些步骤明确要求特定类型的凭据,通常作为credentialsId
参数,在这种情况下,此步骤是不必要的。)每个绑定都将在步骤的范围内定义一个活动的环境变量。然后,您可以在任何其他希望设置环境变量的步骤中直接使用它们:
node {withCredentials([usernameColonPassword(credentialsId: 'mylogin', variable: 'USERPASS')]) {sh " ' set +x curl -u " https://private.server/ > output " '}}
另一个例子(使用代码生成器查看所有选项):
node {withCredentials([string(credentialsId: 'mytoken', variable: 'TOKEN')]) {sh " ' set +x curl -H " TOKEN: $TOKEN" https://some.api/ " '}}
注意单引用来定义脚本
(隐式参数上海
)。您希望shell将secret作为环境变量展开。下面的习惯用法可能不太安全,因为这个秘密是由Groovy插入的,所以(例如)典型的操作系统进程列表会意外地泄露它:
node {withCredentials([string(credentialsId: 'mytoken', variable: 'TOKEN')]) {sh /* WRONG!* /”““旋度+ x - h标记:$牌https://some.api/”"}}
至少在Linux上,在同一帐户上运行的其他进程可以获取环境变量,因此不应该在同一节点上运行使用秘密的作业,而将其作为不受信任方控制的作业。在任何情况下,您都应该将扩展作为环境变量而不是包含在命令中,因为像Blue Ocean这样的Jenkins可视化会这样做必威国际有限公司尝试检测包含秘密的步骤参数并拒绝显示它们。
秘密将被掩盖。****
),以防它们被打印到构建日志中。这将阻止你不小心通过日志披露密码等。(Bourne shell组+ x
,或Windows批处理@echo掉
,阻止在回显命令中显示秘密;但是在调试模式下的构建工具可能会将所有环境变量转储到标准输出/错误中,或者设计糟糕的网络客户端可能会显示身份验证,等等)当然可以简单地绕过屏蔽;任何被允许配置作业或定义Pipeline步骤的人都被认为是受信任的,可以使用范围内的任何凭据。
要注意,某些工具在显示秘密时会破坏它们。举个例子,Bash(相对于Ubuntu的简单的Dash)是通过包含文本来实现的'
在回波模式:
$ export PASS=foo"'"bar $ env|fgrep PASS PASS=foo'bar $ sh -xc 'echo $PASS' + echo foo'bar $ bash -xc 'echo $PASS' + echo 'foo'\ "bar 'foo' bar
只有在尽最大努力的基础上才能发现被破坏的秘密。默认情况下,Jenkin必威国际有限公司s将试图掩盖被篡改的秘密,因为它们将出现在Bourne shell、Bash、Almquist shell和Windows批处理的输出中。如果没有这些策略,混乱的秘密将以纯文本形式出现在日志文件中。在上面的例子中,这将导致:
+ echo 'foo'\ " bar' ****
这个特殊的问题可以通过关闭echo来更安全地防止组+ x
或者在secrets中避免使用shell元字符。
对于存储秘密文件的绑定,要小心
node {dir('subdir') {withCredentials([file(credentialsId: 'secret', variable: ' file ')]) {sh 'use $ file '}}}
是不安全的吗美元的文件
可能在工作区内(在subdir@tmp secretFiles /
),从而对任何能够浏览作业工作区的人可见。如果您需要在与通常工作区不同的目录中运行步骤,则应该使用
node {withCredentials([file(credentialsId: 'secret', variable: ' file ')]) {dir('subdir') {sh 'use $ file '}}}
确保秘密在工作空间之外;或者选择一个完全不同的工作空间:
node {ws {withCredentials([file(credentialsId: 'secret', variable: ' file ')]) {sh 'use $ file '}}}
也看到了证书屏蔽的限制更多背景信息请访问博客。
绑定
aws
accessKeyVariable
AWS_ACCESS_KEY_ID
就会被使用。字符串
secretKeyVariable
AWS_SECRET_ACCESS_KEY
就会被使用。字符串
credentialsId
字符串
roleArn
(可选)字符串
roleSessionDurationSeconds
(可选)int
roleSessionName
(可选)字符串
令牌
变量
字符串
credentialsId
字符串
美元类:“AwsBucketCredentialsBinding”
usernameVariable
字符串
passwordVariable
字符串
credentialsId
字符串
证书
ps e
.keystoreVariable
字符串
credentialsId
字符串
aliasVariable
(可选)字符串
passwordVariable
(可选)字符串
ConjurSecretApplianceCredentials
credentialsId
字符串
sPath
(可选)字符串
变量
(可选)字符串
conjurSecretCredential
credentialsId
字符串
变量
(可选)字符串
conjurSecretUsername
credentialsId
字符串
passwordVariable
(可选)字符串
usernameVariable
(可选)字符串
conjurSecretUsernameSSHKey
credentialsId
字符串
secretVariable
(可选)字符串
usernameVariable
(可选)字符串
dockerCert
变量
{ca证书,关键}.pem
文件将被创建。DOCKER_CERT_PATH
,它将被docker客户端二进制文件理解。字符串
credentialsId
字符串
文件
变量
字符串
credentialsId
字符串
gitUsernamePassword
gitToolName
指定Git工具安装名称
字符串
credentialsId
壳牌的例子
使用[gitUsernamePassword(credentialsId: 'my-credentials-id', gitToolName: 'git-tool')]) {sh 'git fetch——all'}
批处理的例子
[gitUsernamePassword(credentialsId: 'my-credentials-id', gitToolName: 'git-tool')]) {bat 'git submodule update——init——recursive'}
Powershell的例子
[gitUsernamePassword(credentialsId: 'my-credentials-id', gitToolName: 'git-tool')]) {powershell 'git push'}
字符串
美元类:“KeychainPasswordAndPathBinding”
keychainPathVariable
字符串
passwordVariable
字符串
inSearchPathVariable
字符串
credentialsId
字符串
kubeconfigContent
变量
字符串
credentialsId
字符串
kubeconfigFile
变量
字符串
credentialsId
字符串
OSFBuilderSuiteOpenCommerceAPICredentials
clientIdVariable
字符串
clientPasswordVariable
字符串
credentialsId
字符串
sshUserPrivateKey
keyFileVariable
字符串
credentialsId
字符串
passphraseVariable
(可选)字符串
usernameVariable
(可选)字符串
字符串
ps e
.变量
字符串
credentialsId
字符串
OSFBuilderSuiteTwoFactorAuthCredentials
serverCertificateVariable
字符串
clientCertificateVariable
字符串
clientPrivateKeyVariable
字符串
credentialsId
字符串
usernameColonPassword
:
).ps e
.变量
字符串
credentialsId
字符串
usernamePassword
ps e
.usernameVariable
字符串
passwordVariable
字符串
credentialsId
字符串
美元类:“VaultSSHUserPrivateKeyBinding”
usernameVariable
字符串
privateKeyVariable
字符串
passphraseVariable
字符串
credentialsId
字符串
vaultString
变量
字符串
credentialsId
字符串
美元类:“VaultTokenCredentialBinding”
addrVariable
字符串
tokenVariable
字符串
credentialsId
字符串
vaultAddr
字符串
namespaceVariable
(可选)字符串
vaultNamespace
(可选)字符串
美元类:“VaultUsernamePasswordCredentialBinding”
usernameVariable
字符串
passwordVariable
字符串
credentialsId
字符串
邮政编码
变量
字符串
credentialsId
字符串
azureServicePrincipal
credentialsId
字符串
clientIdVariable
(可选)字符串
clientSecretVariable
(可选)字符串
subscriptionIdVariable
(可选)字符串
tenantIdVariable
(可选)字符串
azureStorage
credentialsId
字符串
blobEndpointUrlVariable
(可选)字符串
storageAccountKeyVariable
(可选)字符串
storageAccountNameVariable
(可选)字符串