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

本文介绍了如何在Jenkins中使用Webhook从GitLab触发构建,包括设置WebhookToken,配置GitLabWebhook,以及通过Pipeline脚本获取和使用GitLab推送的Tag信息来控制构建流程,包括Git克隆、Maven构建和Docker镜像构建。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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} ."
              } 
           }
        }
	}
}

### 配置Jenkins实现从GitLab自动拉取代码、构建Docker镜像并部署 #### 创建增强版Jenkins镜像 为了使Jenkins能够顺利执行所需的任务,创建一个带有必要工具的自定义Jenkins镜像是第一步。这包括但不限于安装`git`以及配置好`jdk`和`maven`环境。 ```dockerfile FROM jenkins/jenkins:lts-jdk17 USER root RUN apt-get update && \ apt-get install -y git libncurses5 USER jenkins ``` 此部分通过继承官方提供的LTS版本Jenkins镜像,并在其基础上增加了对Git的支持以及其他可能必需的基础包[^2]。 #### Jenkins全局工具配置 进入Jenkins管理界面,在`Global Tool Configuration`选项下完成对于开发环境中所需的各类工具如JDK, Maven等的具体路径设定工作。确保这些工具能够在后续的构建过程中被正确调用[^4]。 #### 新建自由风格项目 在Jenkins主页点击“New Item”,选择“Freestyle project”。命名该项目后继续前进至配置页面: - **源码管理**:指定仓库URL指向GitLab中的目标项目地址;认证方式可选用SSH Key或Personal Access Token来授权访问私有库。 - **构建触发器**:勾选允许远程触发(`Build when a change is pushed to GitLab`)以便每次提交新改动时都能激活流水线作业。 - **构建环境**:如果之前已经定制化了Jenkins镜像,则无需特别处理;反之则需考虑如何让当前节点具备编译能力(比如挂载宿主机上的Maven目录)。 - 添加执行Shell命令阶段用于切换到合适的工作区; - 调用Maven进行项目的打包操作; - 编写脚本以生成Dockerfile文件,该文件描述了怎样基于应用程序制作对应的容器映像; - 使用`docker build . -t your-image-name:tag`指令依据上述Dockerfile创建新的镜像; - 推送最新版本的镜像到注册表中去,例如`docker push registry.example.com/your-repo/your-image-name:latest`。 - **Post-build Actions**:可以选择性的添加一些清理动作或是通知机制告知相关人员本次构建的结果状态。 #### 测试验证 最后一步就是实际运行一次完整的CI/CD流程看是否一切正常运作。可以通过浏览器直接打开服务端口查看应用是否成功上线,也可以借助API接口或者其他监控手段确认部署情况良好[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值