allow to opt-out from automated Environment stopping when a branch gets deleted
### Problem to solve CI/CD Environments might have a stop action defined, so a cleanup job is triggered when the Environment is stopped. While this **can** be done manually, it is triggered automatically if the [corresponding branch is deleted](https://gitlab.com/gitlab-org/gitlab-ce/blob/73c6477b/doc/ci/environments.md#L516-517). Users might want to stop Environments (deployments in this case), even productive ones **exclusively** on a **manual basis**, so the Environment lifecycle is independent from merging a branch. ### Intended users Unknown ### Further details * Even though this behavior is documented, it is imho unexpected that Environments are stopped automatically. * `on_stop` in `.gitlab_ci.yml` behaves as `on_stop_or_branch_remove` :wink: * Especially in smaller projects, common DEV/UAT environments might be prepared / defined in feature branches and should *survive* being merged after the MR got accepted by the responsible team members. ### Proposal <!-- How are we going to solve the problem? Try to include the user journey! https://about.gitlab.com/handbook/journeys/#user-journey --> ### Permissions and Security No need for changes. ### Documentation Currently, the `on_stop` action is responsible for defining a stop action and the current behavior. In order not to break the current behaviour, I would add an optional property `keep_running` to the `environment` block like ```yaml my deployment: stage: deploy script: make deploy-app environment: name: my-env on_stop: stop_app # if this is defined and set to 'true', the environment is not stopped # when its defining feature branch got removed keep_running: true ``` ### Testing The risk or drawback is to have the `.gitlab-ci.yml` syntax extended, which will require additional tests. ### What does success look like, and how can we measure that? **Success:** An environment is not stopped after its feature branch is deleted iff the `keep_running` property is defined on the environment and set to `true`. ### Links / references
issue