I am learning GitLab CI/CD and trying to set up dynamic environments for new branches.
I want to have a new environment when branch is created, and to destroy it when branch is deleted.
My pipeline deploys the build and I get a new environment, but the stop job is manual(as it should be I assume from the docs) and whole pipeline is in Pending state until I stop the environment and stop job finishes.
I assume this is intended behavior, but then I don’t understand the purpose of environments and why pipeline is pending until environment is destroyed.
deploy_dev:
stage: deploy
script:
- gitlab-terraform apply
environment:
name: $CI_PROJECT_NAME-$CI_COMMIT_BRANCH
on_stop: stop_env_dev
rules:
- if: $CI_PIPELINE_SOURCE != "merge_request_event" && $CI_COMMIT_BRANCH != "master"
stop_dev_env:
stage: deploy
script:
- gitlab-terraform destroy -auto-approve
environment:
name: $CI_PROJECT_NAME-$CI_COMMIT_BRANCH
action: stop
rules:
- if: $CI_PIPELINE_SOURCE != "merge_request_event" && $CI_COMMIT_BRANCH != "master"
when: manual