JENKINS。BuildTag docker Image to registry with webhook from github when tags(标签)

问题描述 投票:0回答:1

我在我的github项目的根目录下有这个管道,有Docker文件。

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/*

我不明白 "tag "与scm配置的原理。

我的目标是:当一个新的标签来到github时,一个webhook执行这个管道,然后我用同一个标签生成docker镜像。

docker jenkins tags
1个回答
0
投票

这里你应该使用Jenkins的Credential Plugin来存储你的 "registryCredential "变量。你不应该这样写。

对于使用标签构建的Docker镜像,你可以使用。docker build -t <service-name>:"$TAG_NAME".

© www.soinside.com 2019 - 2024. All rights reserved.