[英](Continuous Integration & GIT) - how to simply with bash script
在我的公司中,我遵循以下工作流程(我认为它可以定义为一种“持续集成”)
工作流程:
staging
/ master
/ production
)staging
或production
自动部署到暂存/生产服务器。 我们以如下方式使用 git:
(假设我正在研究新功能“A”)
我发现git checkout ...
非常无聊/耗时git checkout ...
git pull ..
bla bla 每次我必须实时部署/分阶段我的工作。
所以我制作了以下 bash 脚本,目的是将分支 A 部署到单个命令deploy.sh live A
的过程简单化
#!/bin/bash
function merge() {
SOURCE=$1
DEST=$2
echo ''
echo "--- Merging $SOURCE with $DEST ---"
echo "--> Checkout $DEST ..."
git checkout $DEST
echo "--> Pull $DEST ..."
git pull --ff-only origin $DEST
if [ $? -ne 0 ]
then
echo "ERROR: Could not PULL"
return 1
fi
echo "--> Merging $SOURCE with $DEST ..."
# --ff-only trigger errors if merge/pull is not possible
git merge --ff-only $SOURCE --no-edit
if [ $? -ne 0 ]
then
echo "ERROR: Could not MERGE"
return 1
fi
echo "--> Push $DEST ..."
git push origin $DEST
return 0
}
function deploy() {
MODE=$1
SOURCE_BRANCH=$2
echo ''
echo "### START ###"
echo ''
echo "--- Pull changes from Master ---"
git checkout $SOURCE_BRANCH
git pull --progress --no-edit --no-stat -v --progress origin master
merge $SOURCE_BRANCH 'staging'
status=$?
if [ $status -ne 0 ]
then
echo "ERROR: STEP 1" >&2
exit 1
fi
if [ $MODE = "live" ]
then
merge $SOURCE_BRANCH 'master'
status=$?
if [ $status -ne 0 ]
then
echo "ERROR: STEP 2"
return 1
fi
merge 'master' 'production'
status=$?
if [ $status -ne 0 ]
then
echo "ERROR: STEP 3"
return 1
fi
fi
echo ''
echo "### END ###"
echo ''
}
MODE=$1;
SOURCE_BRANCH=$2;
if [ -z "$MODE" -o -z "$SOURCE_BRANCH" ]
then
echo "Usage:"
echo ""
echo "MODE BRANCH_NAME (MODE: live|staging)"
else
if git show-ref --verify --quiet "refs/heads/$SOURCE_BRANCH";
then
deploy $MODE $SOURCE_BRANCH
else
echo ''
echo "Error: Branch $SOURCE_BRANCH not found"
fi
fi
问题:
我对 GIT 和 BASH 脚本都很陌生。 所以我想知道上面的工作流程/脚本是否可以? 欢迎任何推荐
(同时我很高兴将此作为资源分享)
如果脚本可以满足您的需求,那就很好了,您的 bash 技能也会变得更好。
恕我直言,整件事可以写成 10 行,会更好,但这是一个品味问题。
除了 ifs,您在之前的评论中得到了建议,不需要三行来回显状态、echo -e "\\n..." 或 printf,这减少了大约 10% 的行。
可以使用 ${v:?message} 完成检查和失败并出现错误
不需要这些函数,也不用返回来填充您的代码。
这是从 pytonish/任何编码风格到更紧凑的 bash 风格的一步。 不是每个人都喜欢它,也不是觉得它很好,所以你必须自己尝试。
例如,我用 5 行 bash 重写了 250 行(过于清晰)python; windows/python 同事认为这还不够清楚(但后来他不能写 bash)另外 5 条额外的注释行对他来说更好; 另一位同事发现它好多了(不滚动很长时间是一个原因)。
在花时间欣赏每一种风格之前,您必须亲自尝试并且不要忽视一种风格或另一种风格。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.