使用Jenkins自动给多个仓库创建分支

原文链接:https://mp.weixin.qq.com/s/Bq78Hk3NTRV8nzvid5kvXg

  1. 自动化前:分别去每个仓库,填写相关参数,点击按钮。
  2. 自动化后:分别去每个仓库,填写相关参数,点击按钮。

背景

不知道你们有没有遇到这样的情况,每次产品到了一个新的阶段,需要给代码创建新的分支,比如用于测试。

如果是给一个仓库创建一个分支也还好,但我们组相关的仓库多达五六个,所以我们需要给每一个仓库做这样一个简单又枯燥的重复操作(创建分支),作为程序员,我不允许有这样的情况发生。


于是,我借助持续集成工具Jenkins(方便他人使用)和Shell脚本语言,实现了上述过程的自动化。

使用指南

现在我只需要2步就可以轻松完成上面的过程:

1)进入Jenkins项目,填写2个构建参数:当前版本、上一版本

⚠️:

  1. 我们的分支名是基于版本名的;
  2. 我们会基于上个版本的release分支创建当前版本的test分支。

2)点击Build按钮,等待结果

这里我用自己的两个Github仓库做了试验,相关日志如下:

在这里插入图片描述

✌️:日志清晰展示了操作的过程和结果。

⚠️:我们要操作的仓库是在Configure > Source Code Management > Git > Repositories里配置的。如果需要新增仓库,只需在配置里添加,无需修改脚本。

脚本参考

V1.0的Shell脚本如下(里面有具体的说明):

# 主流程
main() {
  #1
    set +ex  # e:异常不退出;x:不显示执行的命令
    declare -a success_list  # 记录成功的仓库
    declare -a failure_list  # 记录失败的仓库
    echo "========================⚙️已完成准备工作⚙️========================\n"
    
    #2
    echo "========================🆒正式开始🆒========================"
    remote_hosts=`git remote`
    echo "🌿要操作的仓库有:\n${remote_hosts}\n"
    
    # ️遍历管理的远端仓库们,仓库在Source Code Management > Git > Repositories里添加
    # ⚠️可以通过Advanced > Name配置仓库别名,方便检查日志
    for remote_host in ${remote_hosts}; do
        CreateAndPushTestBranch ${remote_host}
    done
    
    #3
    echo "========================🌲输出结果🌲========================"
    echo "✅成功的有:${success_list[*]}"
    echo "❌失败的有:${failure_list[*]}"
    echo "\n\n"
}

# 创建并推送test分支
# 入参1:远端仓库别名
CreateAndPushTestBranch() {
    echo "========================💼开始操作仓库:$1💼========================"
    target_host=$1  # 记录仓库别名
    
    echo "1. 创建分支 git checkout -b"
    # current_version、last_version是构建参数,在General中定义
    git checkout -b test/${current_version} ${target_host}/release/${last_version}
  
    echo "2. 推送分支 git push"
    git push ${target_host} HEAD
    if [ $? -eq 0 ]; then
        success_list+="${target_host} "
        result="成功✅"
    else
        failure_list+="${target_host} "
        result="失败❌"
    fi

    echo "3. 清理分支 git branch -D"
    git -c advice.detachedHead=false checkout ${target_host}/release/${last_version} # -c advice.detachedHead=false,临时屏蔽detachedHead警告
    git branch -D test/${current_version}
    
    echo "\n👉${target_host}仓库创建并推送test/${current_version}分支:${result}\n"
}

main; exit

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

土Bo鼠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值