Gitlab打Tag触发Jenkins构建打包镜像

Jenkins配置

项目使用Webhook触发,

需要勾选上Push Events

设置Webhook Token

Gitlab配置Webhook

填写上Jenkins上配置的Webhook url和Token

选择标签推送事件,这样打完标签后,就可以触发Jenkins打包构建过程。

Jenkins上获取触发的代码Tag信息

Pipeline模式下。可以方便获取Tag信息。

如何获取Git,GitLab等项目触发到Jenkins的信息呢。如果不想查阅对应的插件文档和源码。

可以使用打印环境变量的方式获取。

如下,打印了所有环境变量。很清楚知道我们想要的是gitlabBranch这个环境变量

Pipeline 脚本

  • 先打印所有环境变量
  • 获取想要的环境变量,提取想要的环境变量
  • 代码 检出
  • 打包
  • 打镜像
pipeline {
    agent any

	environment {	
		GIT_URL = "https://xx.x.xx.demo.git"
		GIT_CREDENTIALS_ID = "xx-xx-xxx-xxxxx-xxxxx"

		// 触发构建的gitlab tag 获取到的值样例: refs/tags/v0.0.1-test 
		GITLAB_TAG_NAME=""
		// docker镜像标签
		DOCKER_IMAGE_TAG=""
	}

    stages {
	    // 打印所有环境变量,便于查看触发的Tag是哪个环境变量
	    stage('Print All Environment') {
		    steps {
			   script {
			      sh 'printenv'
			   }
			}
		}
		
        stage('Prepare Gitlab Tag Name') {
            steps {
                script {
                    // 获取触发构建的tag
                    GITLAB_TAG_NAME=env.gitlabBranch
                    def tagName = GITLAB_TAG_NAME.replace("refs/tags/", "")
                    DOCKER_IMAGE_TAG=tagName
                    echo "Triggered by GitLab tag: ${GITLAB_TAG_NAME}"
                    echo "Setting DOCKER IMAGE TAG to ${DOCKER_IMAGE_TAG}"
                }
            }
            
        }
		stage('git checkout') {
            steps {          
                checkout([$class: 'GitSCM', branches: [[name: "${GITLAB_TAG_NAME}"]],
                userRemoteConfigs: [[credentialsId: "${GIT_CREDENTIALS_ID}", url: "${GIT_URL}"]]
                ])
               
            }
        }
	    stage('maven build') {
            steps {
                script{
	                sh "mvn clean package"
                }
            }
        }

	    stage('docker build') {
            steps {
              script{
	            sh "docker build --no-cache -t harbor.registry.com/demo/xxx:${DOCKER_IMAGE_TAG} ."
              } 
           }
        }
	}
}

  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值