当前位置:   article > 正文

Gitlab打Tag触发Jenkins构建打包镜像_gitlab 比对tag 发送到jenkins打包

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 脚本

  • 先打印所有环境变量
  • 获取想要的环境变量,提取想要的环境变量
  • 代码 检出
  • 打包
  • 打镜像
  1. pipeline {
  2. agent any
  3. environment {
  4. GIT_URL = "https://xx.x.xx.demo.git"
  5. GIT_CREDENTIALS_ID = "xx-xx-xxx-xxxxx-xxxxx"
  6. // 触发构建的gitlab tag 获取到的值样例: refs/tags/v0.0.1-test
  7. GITLAB_TAG_NAME=""
  8. // docker镜像标签
  9. DOCKER_IMAGE_TAG=""
  10. }
  11. stages {
  12. // 打印所有环境变量,便于查看触发的Tag是哪个环境变量
  13. stage('Print All Environment') {
  14. steps {
  15. script {
  16. sh 'printenv'
  17. }
  18. }
  19. }
  20. stage('Prepare Gitlab Tag Name') {
  21. steps {
  22. script {
  23. // 获取触发构建的tag
  24. GITLAB_TAG_NAME=env.gitlabBranch
  25. def tagName = GITLAB_TAG_NAME.replace("refs/tags/", "")
  26. DOCKER_IMAGE_TAG=tagName
  27. echo "Triggered by GitLab tag: ${GITLAB_TAG_NAME}"
  28. echo "Setting DOCKER IMAGE TAG to ${DOCKER_IMAGE_TAG}"
  29. }
  30. }
  31. }
  32. stage('git checkout') {
  33. steps {
  34. checkout([$class: 'GitSCM', branches: [[name: "${GITLAB_TAG_NAME}"]],
  35. userRemoteConfigs: [[credentialsId: "${GIT_CREDENTIALS_ID}", url: "${GIT_URL}"]]
  36. ])
  37. }
  38. }
  39. stage('maven build') {
  40. steps {
  41. script{
  42. sh "mvn clean package"
  43. }
  44. }
  45. }
  46. stage('docker build') {
  47. steps {
  48. script{
  49. sh "docker build --no-cache -t harbor.registry.com/demo/xxx:${DOCKER_IMAGE_TAG} ."
  50. }
  51. }
  52. }
  53. }
  54. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/694827
推荐阅读
相关标签
  

闽ICP备14008679号