Jenkins 凭据如何工作或应用于管道中的代理
How does Jenkins credentials work or apply to agent in a pipeline
我遵循了两段代码,一段有效,另一段无效。我需要了解 agent
是否在舞台内声明,凭据被识别,如果 agent
声明在 top/global 级别,则凭据不起作用并以错误结束.谁能帮助理解为什么会这样以及如何解决这个问题?
错误:
pipeline
{
environment {
DOCKER_REGISTRY='xxxxxxxxx'
DOCKER_CREDENTIAL='dcaas-r'
}
agent
{
docker {
image "xxxxxxxxx/dotnet:latest"
registryUrl env.DOCKER_REGISTRY
registryCredentialsId env.DOCKER_CREDENTIAL
reuseNode true
}
}
stages
{
stage('Test')
{
steps
{
sh 'dotnet --version'
}
}
}
}
Error response from daemon: Head "xxxxx/dotnet/manifests/latest": unknown: Authentication is required
成功:
pipeline
{
agent any
environment {
DOCKER_REGISTRY='xxxxxxxxx'
DOCKER_CREDENTIAL='dcaas-r'
}
stages
{
stage('Test')
{
agent
{
docker {
image "xxxxxxxxx/dotnet:latest"
registryUrl env.DOCKER_REGISTRY
registryCredentialsId env.DOCKER_CREDENTIAL
reuseNode true
}
}
steps
{
sh 'dotnet --version'
}
}
}
}
为了不在所有 stages
中写入相同的 agent
块,可以做什么?
如果您有全局代理指令,则不需要将 docker 值指定为环境变量,因为
- 它们不是环境变量
- 它们只使用一次
- 它们不是动态的
它看起来像:
agent {
docker {
image 'xxxxxxxxx/dotnet:latest'
registryUrl 'xxxxxxxxx'
registryCredentialsId 'dcaas-r'
reuseNode true
}
}
您只会查看阶段的日志,因此不会记录全局指令。这意味着您将无法在全局指令中看到 docker agent
的图像检索日志。
我遵循了两段代码,一段有效,另一段无效。我需要了解 agent
是否在舞台内声明,凭据被识别,如果 agent
声明在 top/global 级别,则凭据不起作用并以错误结束.谁能帮助理解为什么会这样以及如何解决这个问题?
错误:
pipeline
{
environment {
DOCKER_REGISTRY='xxxxxxxxx'
DOCKER_CREDENTIAL='dcaas-r'
}
agent
{
docker {
image "xxxxxxxxx/dotnet:latest"
registryUrl env.DOCKER_REGISTRY
registryCredentialsId env.DOCKER_CREDENTIAL
reuseNode true
}
}
stages
{
stage('Test')
{
steps
{
sh 'dotnet --version'
}
}
}
}
Error response from daemon: Head "xxxxx/dotnet/manifests/latest": unknown: Authentication is required
成功:
pipeline
{
agent any
environment {
DOCKER_REGISTRY='xxxxxxxxx'
DOCKER_CREDENTIAL='dcaas-r'
}
stages
{
stage('Test')
{
agent
{
docker {
image "xxxxxxxxx/dotnet:latest"
registryUrl env.DOCKER_REGISTRY
registryCredentialsId env.DOCKER_CREDENTIAL
reuseNode true
}
}
steps
{
sh 'dotnet --version'
}
}
}
}
为了不在所有 stages
中写入相同的 agent
块,可以做什么?
如果您有全局代理指令,则不需要将 docker 值指定为环境变量,因为
- 它们不是环境变量
- 它们只使用一次
- 它们不是动态的
它看起来像:
agent {
docker {
image 'xxxxxxxxx/dotnet:latest'
registryUrl 'xxxxxxxxx'
registryCredentialsId 'dcaas-r'
reuseNode true
}
}
您只会查看阶段的日志,因此不会记录全局指令。这意味着您将无法在全局指令中看到 docker agent
的图像检索日志。