在GitLab-CI中删除分支之前执行脚本

时间:2017-07-03 09:46:17

标签: gitlab gitlab-ci

GitLab-CI在分支被删除后在动态环境中执行stop-environment脚本。这有效地迫使您将所有拆解逻辑放入.gitlab-ci.yml而不是.gitlab-ci.yml只调用的脚本。

有没有人知道这方面的解决方法?我有一个删除部署的shell脚本。此脚本是存储库的一部分,也可以在本地调用(即在CI环境中不是onli)。我希望GitLab-CI在删除dynamic environment时调用此脚本,但是当分支被删除时,它显然不再存在。我也不能将这个脚本放到工件中,因为它是在configure脚本构建之前生成的并且包含秘密。如果可以在删除分支之前执行拆解脚本,那就太棒了。

以下是.gitlab-ci.yml

的相关摘录
deploy_dynamic_staging:
    stage: deploy
    variables:
        SERVICE_NAME: foo-service-$CI_BUILD_REF_SLUG
    script:
        - ./configure
        - make deploy.staging
    environment:
        name: staging/$CI_BUILD_REF_SLUG
        on_stop: stop_dynamic_staging
    except:
        - master

stop_dynamic_staging:
    stage: deploy
    variables:
        GIT_STRATEGY: none
    script:
        - make teardown # <- this fails
    when: manual
    environment:
        name: staging/$CI_BUILD_REF_SLUG
        action: stop

1 个答案:

答案 0 :(得分:0)

可能不太理想,但是您可以在运行脚本之前使用gitlab API对该脚本进行卷曲:

curl  \
    -X GET https://gitlab.example. com/raw/master/script.sh\
    -H 'PRIVATE-TOKEN: ${GITLAB_TOKEN}' > script.sh