我在gitlab-ci中遇到了问题。主要问题是尝试检查远程存储库中是否存在分支。我会尝试在特定分支上克隆项目,如果它失败,我只需从默认分支克隆并创建新分支。
不幸的是,它不起作用,因为这样的事情:
if [ ! -d folder ]
then
fi
要么总是输入if,要么永远不要输入if(我唯一记得的就是忽略if中的条件。
出于这个原因,我试图用这样的可选作业拆分作业:
stages:
- test
- clone
- clone_fail
- deploy
cache:
untracked: true
key: "$CI_BUILD_REF_NAME"
paths:
- repo/
github_clone:
stage: clone
tags:
- odoo
script:
- git clone --recurse-submodules --branch $CI_COMMIT_REF_NAME `cat .github-parent.txt` repo
when: on_success
github_clone_failed:
stage: clone_fail
tags:
- odoo
script:
- |
git clone --recurse-submodules `cat .github-parent.txt` repo
cd repo
git checkout -b $CI_COMMIT_REF_NAME
cd ..
when: on_failure
github:
stage: deploy
tags:
- odoo
script:
- |
echo $CI_COMMIT_REF_NAME
cd repo
cd $CI_PROJECT_NAME
git fetch --all
git reset --hard $CI_COMMIT_SHA
cd ..
git add $CI_PROJECT_NAME
git commit -m "New branch $CI_COMMIT_REF_NAME"
git push
cd ..
rm -rf repo
echo "Done!"
when: on_success
问题是如果github_clone失败,github_clone_failed将被执行,但github作业将被跳过。
我想要的是,当前一个作业中只有一个成功时,应该执行github作业。现在它只适用于github_clone没有失败的时候。
知道如何实现这个目标吗?