Commit c0e94d78 authored by Pierre Smeyers's avatar Pierre Smeyers
Browse files

feat!: support environment auto-stop

BREAKING CHANGE: now review environments will auto stop after 4 hours
by default. Configurable (see doc).
parent 7d93ae70
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -277,6 +277,7 @@ Here are variables supported to configure review environments:
| `HELMFILE_REVIEW_ENVIRONMENT_URL`| The review environments url _(only define for static environment URLs declaration and if different from default)_ | `$HELMFILE_ENVIRONMENT_URL` |
| `HELMFILE_REVIEW_NAMESPACE`  | The Kubernetes namespace to use for `review` env _(only define to override default)_ | `$KUBE_NAMESPACE` |
| :lock: `HELMFILE_REVIEW_KUBE_CONFIG` | Specific kubeconfig for `review` env _(only define to override default)_ | `$HELMFILE_DEFAULT_KUBE_CONFIG` |
| `HELMFILE_REVIEW_AUTOSTOP_DURATION`| The amount of time before GitLab will automatically stop `review` environments | `4 hours` |

### Integration environment configuration

@@ -293,6 +294,7 @@ Here are variables supported to configure the integration environment:
| `HELMFILE_INTEG_ENVIRONMENT_URL`| The integration environment url _(only define for static environment URLs declaration and if different from default)_ | `$HELMFILE_ENVIRONMENT_URL` |
| `HELMFILE_INTEG_NAMESPACE`   | The Kubernetes namespace to use for `integration` env _(only define to override default)_ | `$KUBE_NAMESPACE` |
| :lock: `HELMFILE_INTEG_KUBE_CONFIG` | Specific kubeconfig for `integration` env _(only define to override default)_ | `$HELMFILE_DEFAULT_KUBE_CONFIG` |
| `HELMFILE_INTEG_AUTOSTOP_DURATION`| The amount of time before GitLab will automatically stop the `integration` env | `never` |

### Staging environment configuration

@@ -309,6 +311,7 @@ Here are variables supported to configure the staging environment:
| `HELMFILE_STAGING_ENVIRONMENT_URL`| The staging environment url _(only define for static environment URLs declaration and if different from default)_ | `$HELMFILE_ENVIRONMENT_URL` |
| `HELMFILE_STAGING_NAMESPACE` | The Kubernetes namespace to use for `staging` env _(only define to override default)_ | `$KUBE_NAMESPACE` |
| :lock: `HELMFILE_STAGING_KUBE_CONFIG` | Specific kubeconfig for `staging` env _(only define to override default)_ | `$HELMFILE_DEFAULT_KUBE_CONFIG` |
| `HELMFILE_STAGING_AUTOSTOP_DURATION`| The amount of time before GitLab will automatically stop the `staging` env | `never` |

### Production environment configuration

+15 −0
Original line number Diff line number Diff line
@@ -110,6 +110,11 @@
          "default": "${HELMFILE_BASE_APP_NAME}-${CI_ENVIRONMENT_SLUG}",
          "advanced": true
        },
        {
          "name": "HELMFILE_REVIEW_AUTOSTOP_DURATION",
          "description": "The amount of time before GitLab will automatically stop `review` environments",
          "default": "4 hours"
        },
        {
          "name": "HELMFILE_REVIEW_ENVIRONMENT_URL",
          "type": "url",
@@ -143,6 +148,11 @@
          "default": "${HELMFILE_BASE_APP_NAME}-integration",
          "advanced": true
        },
        {
          "name": "HELMFILE_INTEG_AUTOSTOP_DURATION",
          "description": "The amount of time before GitLab will automatically stop the `integration` env",
          "default": "never"
        },
        {
          "name": "HELMFILE_INTEG_ENVIRONMENT_URL",
          "type": "url",
@@ -176,6 +186,11 @@
          "default": "${HELMFILE_BASE_APP_NAME}-staging",
          "advanced": true
        },
        {
          "name": "HELMFILE_STAGING_AUTOSTOP_DURATION",
          "description": "The amount of time before GitLab will automatically stop the `staging` env",
          "default": "never"
        },
        {
          "name": "HELMFILE_STAGING_ENVIRONMENT_URL",
          "type": "url",
+7 −0
Original line number Diff line number Diff line
@@ -87,6 +87,10 @@ variables:
#  HELMFILE_LINT_ENABLED: "true"
#  HELMFILE_TEST_ENABLED: "true"

  HELMFILE_REVIEW_AUTOSTOP_DURATION: "4 hours"
  HELMFILE_INTEG_AUTOSTOP_DURATION: "never"
  HELMFILE_STAGING_AUTOSTOP_DURATION: "never"

  # default: one-click deploy
  HELMFILE_PROD_DEPLOY_STRATEGY: manual

@@ -671,6 +675,7 @@ helmfile-review:
  environment:
    name: review/$CI_COMMIT_REF_NAME
    on_stop: helmfile-cleanup-review
    auto_stop_in: "$HELMFILE_REVIEW_AUTOSTOP_DURATION"
  resource_group: review/$CI_COMMIT_REF_NAME
  rules:
    # exclude tags and on $HELMFILE_REVIEW_ENABLED not set
@@ -742,6 +747,7 @@ helmfile-integration:
  environment:
    name: integration
    on_stop: helmfile-cleanup-integration
    auto_stop_in: "$HELMFILE_INTEG_AUTOSTOP_DURATION"
  resource_group: integration
  rules:
    # exclude on $HELMFILE_INTEG_ENABLED not set
@@ -810,6 +816,7 @@ helmfile-staging:
  environment:
    name: staging
    on_stop: helmfile-cleanup-staging
    auto_stop_in: "$HELMFILE_STAGING_AUTOSTOP_DURATION"
  resource_group: staging
  rules:
    # exclude on $HELMFILE_STAGING_ENABLED not set