我遵循了兩段代碼,一項有效,另一段無效。我需要了解是否在agent舞臺內宣告了憑據,如果agent在頂級/全域級別上宣告了憑據,則憑據不起作用并以錯誤結束。誰能幫助理解為什么會這樣以及如何解決?
錯誤:
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'
}
}
}
}
為了不寫相同agent的塊,可以做些什么stages?
uj5u.com熱心網友回復:
如果您有一個全域代理指令,那么您不需要將 docker 值指定為環境變數,因為
- 它們不是環境變數
- 它們只使用一次
- 它們不是動態的
它看起來像:
agent {
docker {
image 'xxxxxxxxx/dotnet:latest'
registryUrl 'xxxxxxxxx'
registryCredentialsId 'dcaas-r'
reuseNode true
}
}
您將只查看階段的日志,因此不會記錄全域指令。這意味著您將無法agent在全域指令中看到 docker 的影像檢索日志。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/464485.html
上一篇:將C#6與WCF結合使用
