• 需求背景
    项目源码在Gitlab代码仓库中有多个gitlab子项目的代码,项目上线完成后,一般会对上线分支的代码进行分支合并到受保护的分支上,一般为Master分支,然后打TAG。这里结合Jenkins+Gitlab进行自动分支合并打TAG。
  • Jenkins配置
    进入Jenkins,新建Job,进入Job的Configure配置,配置参数化构建。
    Jenkins+Gitlab自动打TAG_第1张图片
    Build选择添加Execute Shell。
    Jenkins+Gitlab自动打TAG_第2张图片
  • 打TAG
    分支合并,打Tag这里由shell脚本实现,如下脚本内容:
    #!/bin/bash
    pro=`ls -l /data/git-release/web | awk '{print $9}' | sed '/^$/d'`
    dir=/data/git-release/web
    tag=$1
    for i in $pro
    do
    cd $dir/$i
    echo "更新索引..."
    git pull
    echo "删除本地release分支..."
    git branch -D release
    echo "检出远程release分支..."
    git checkout --track origin/release
    echo "删除本地master分支..."
    git branch -D master
    echo "从release检出最新的master分支代码..."
    git checkout -b master --track origin/release
    echo "重置master分支代码..."
    git push origin master
    echo "重置完成,主干代码已更新.开始标注tag.."
    git tag -a $tag -m "$tag"
    echo -e "tag标注结束,开始推送tag $tag..."
    git push origin $tag
    echo -e "$tag 推送成功,本次发版结束."
    done