gitlabci的条件工作

时间:2018-06-14 19:54:45

标签: gitlab-ci

我在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没有失败的时候。

知道如何实现这个目标吗?

0 个答案:

没有答案