このセットアップで基本認証を介してログインするようにJenkisfileに教えるにはどうすればよいですか?
JenkinsビルドにカスタムDockerイメージを使用しています。ドキュメントに記載されているように here 私はそのようなドッカーエージェントを定義しました:
pipeline {
agent {
docker {
image 'registry.az1:5043/maven-proto'
registryUrl 'https://registry.az1'
args '-v /var/jenkins_home/.m2:/root/.m2'
}
}
options {
timeout(time: 1, unit: 'HOURS')
buildDiscarder(logRotator(numToKeepStr:'10'))
}
stages {
stage ('Build') {
steps{
sh ...
}
}
stage ('Test') {
steps {
sh ...
}
}
stage ('Deploy') {
steps {
sh ...
}
}
}
post {
always {
echo 'Clean up workspace'
deleteDir()
}
}
}
次のエージェントセットアップを使用する場合:
pipeline {
agent {
docker.withRegistry('https://registry.az1', 'registry_login'){
image 'registry.az1:5043/maven-proto'
registryUrl 'https://registry.az1'
args '-v /var/jenkins_home/.m2:/root/.m2'
}
}
パイプラインの実行は、次の例外で失敗します。
WorkflowScript: 3: Too many arguments for map key "withRegistry" @ line 3, column 16.
docker.withRegistry('https://registry.az1', 'registry_login'){
^
WorkflowScript: 3: Invalid agent type "withRegistry" specified. Must be one of [docker, dockerfile, label, any, none] @ line 3, column 16.
docker.withRegistry('https://registry.az1', 'registry_login'){
^
問題は、使用するレジストリに基本的な認証ログインが必要なことです。レジストリは、 this configurationを使用してnginxリバースプロキシの背後で実行されます。
カスタムレジストリの使用 で指定されているように、使用する資格情報とレジストリURLを指定できます。
docker.withRegistry('https://registry.az1', 'credentials-id') {
...
}
リポジトリの資格情報を含むJenkins資格情報オブジェクトを作成し、上記のcredentials-id
を置き換える名前を付ける必要があります。
更新:
宣言型パイプラインの場合、構文は次のとおりです。
agent {
docker {
image 'registry.az1:5043/maven-proto'
registryUrl 'https://registry.az1'
registryCredentialsId 'credentials-id'
args '-v /var/jenkins_home/.m2:/root/.m2'
}
}