JENKINS:在标记时使用github的webhook将docker映像构建/标记到注册表
我在github项目的根目录中有这个管道,其中包含Dockerfile:JENKINS:在标记时使用github的webhook将docker映像构建/标记到注册表,docker,jenkins,tags,Docker,Jenkins,Tags,我在github项目的根目录中有这个管道,其中包含Dockerfile: pipeline { environment { def registry = 'registry/mydocker' def registryCredential = 'Docker' def dockerImage = '' } agent { kubernetes { yamlFile 'DockerPod.yaml' } } stages {
pipeline {
environment {
def registry = 'registry/mydocker'
def registryCredential = 'Docker'
def dockerImage = ''
}
agent {
kubernetes {
yamlFile 'DockerPod.yaml'
}
}
stages {
stage('Slack Notification') {
steps{
slackSend (color: '#FFFF00', message: "STARTED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})")
}
}
stage('Application Code Checkout from Git') {
steps{
node('master') {
echo 'Pulling...' + env.GIT_BRANCH
echo 'Pulling...' + env.VERSION
echo 'Pulling...' + env.TAG_NAME
checkout scm
}
}
}
stage('Building image') {
steps{
container('docker') {
script {
sh('test=${GIT_BRANCH##*/}')
withCredentials([string(credentialsId: 'github_access_token', variable: 'TOKEN')]) {
dockerImage = docker.build("${registry}:${test}","-f ./Dockerfile ./ --no-cache --build-arg VERSION=${test} --build-arg TOKEN=${TOKEN}")
}
docker.withRegistry('https://registry-1.docker.io/v2/', registryCredential) {
dockerImage.push()
}
}
}
}
}
}
post {
success {
slackSend (color: '#00FF00', message: "SUCCESSFUL: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})")
}
failure {
slackSend (color: '#FF0000', message: "FAILED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})")
}
}
}
我的管道具有以下配置:
refspecs == +refs/tags/*:refs/remotes/origin/tags/*
我不理解scm配置中“标记”的原理
我的目标是:当一个新标记提交到github时,一个webhook执行这个管道,我用相同的标记生成docker映像。这里您应该使用Jenkins的Credential插件来存储“registryCredential”变量。你不应该这样写 对于带有标记的Docker映像构建,您可以使用:
Docker build-t:“$tag\u NAME”