Skip to content
Snippets Groups Projects
gitlab-ci-helm.yml 42.5 KiB
Newer Older
Pierre Smeyers's avatar
Pierre Smeyers committed
  environment:
    name: review/$CI_COMMIT_REF_NAME
    on_stop: helm-cleanup-review
  resource_group: review/$CI_COMMIT_REF_NAME
  rules:
Pierre Smeyers's avatar
Pierre Smeyers committed
    # exclude tags and on $HELM_REVIEW_DISABLED set
    - if: '$HELM_REVIEW_DISABLED == "true" || $CI_COMMIT_TAG'
Pierre Smeyers's avatar
Pierre Smeyers committed
      when: never
    # only on non-production, non-integration branches
    - if: '$CI_COMMIT_REF_NAME !~ $PROD_REF && $CI_COMMIT_REF_NAME !~ $INTEG_REF'

# stop review env (automatically triggered once branches are deleted)
helm-cleanup-review:
  extends: .helm-cleanup
  variables:
    ENV_TYPE: review
    ENV_APP_NAME: "$HELM_REVIEW_APP_NAME"
    ENV_KUBE_CONFIG: "$HELM_REVIEW_KUBE_CONFIG"
    ENV_NAMESPACE: "$HELM_REVIEW_NAMESPACE"
  environment:
    name: review/$CI_COMMIT_REF_NAME
    action: stop
  resource_group: review/$CI_COMMIT_REF_NAME
  rules:
Pierre Smeyers's avatar
Pierre Smeyers committed
    # exclude tags and on $HELM_REVIEW_DISABLED set
    - if: '$HELM_REVIEW_DISABLED == "true" || $CI_COMMIT_TAG'
Pierre Smeyers's avatar
Pierre Smeyers committed
      when: never
    # only on non-production, non-integration branches
    - if: '$CI_COMMIT_REF_NAME !~ $PROD_REF && $CI_COMMIT_REF_NAME !~ $INTEG_REF'
      when: manual
      allow_failure: true

# test to review env (only for feature branches)
# enabled by default, disable this job by setting $HELM_REVIEW_DISABLED
helm-test-review:
  extends: .helm-test
  variables:
    ENV_TYPE: review
    ENV_KUBE_CONFIG: "$HELM_REVIEW_KUBE_CONFIG"
    ENV_NAMESPACE: "$HELM_REVIEW_NAMESPACE"
  rules:
Pierre Smeyers's avatar
Pierre Smeyers committed
    - if: $CI_COMMIT_TAG
Pierre Smeyers's avatar
Pierre Smeyers committed
      when: never
Pierre Smeyers's avatar
Pierre Smeyers committed
    - if: '$HELM_TEST_ENABLED != "true"'
      when: never
    - if: '$HELM_REVIEW_DISABLED == "true"'
      when: never
    # exclude on production or integration branch(es)
    - if: '$CI_COMMIT_REF_NAME =~ $PROD_REF || $CI_COMMIT_REF_NAME =~ $INTEG_REF'
      when: never
    # then use common test jobs policy
    - !reference [.test-policy, rules]
Pierre Smeyers's avatar
Pierre Smeyers committed

# ==================================================
# Stage: integration
# ==================================================
# deploy to integration env (only for integration branches)
# enabled by default, disable this job by setting $HELM_INTEG_DISABLED
helm-integration:
  extends: .helm-deploy
  variables:
    ENV_TYPE: integration
    ENV_APP_NAME: "$HELM_INTEG_APP_NAME"
    ENV_URL: "${HELM_INTEG_ENVIRONMENT_URL}"
Pierre Smeyers's avatar
Pierre Smeyers committed
    ENV_KUBE_CONFIG: "$HELM_INTEG_KUBE_CONFIG"
    ENV_NAMESPACE: "$HELM_INTEG_NAMESPACE"
    ENV_VALUES: "$HELM_INTEG_VALUES"
  environment:
    name: integration
    on_stop: helm-cleanup-integration
  resource_group: integration
  rules:
    # exclude merge requests and on $HELM_INTEG_DISABLED set
    - if: '$HELM_INTEG_DISABLED == "true"'
Pierre Smeyers's avatar
Pierre Smeyers committed
      when: never
    # only on integration branch(es)
    - if: '$CI_COMMIT_REF_NAME =~ $INTEG_REF'

# stop integration env (automatically triggered once branches are deleted)
helm-cleanup-integration:
  extends: .helm-cleanup
  variables:
    ENV_TYPE: integration
    ENV_APP_NAME: "$HELM_INTEG_APP_NAME"
    ENV_KUBE_CONFIG: "$HELM_INTEG_KUBE_CONFIG"
    ENV_NAMESPACE: "$HELM_INTEG_NAMESPACE"
  environment:
    name: integration
    action: stop
  resource_group: integration
  rules:
    # exclude merge requests and on $HELM_INTEG_DISABLED set
    - if: '$HELM_INTEG_DISABLED == "true"'
Pierre Smeyers's avatar
Pierre Smeyers committed
      when: never
    # only on integration branch(es)
    - if: '$CI_COMMIT_REF_NAME =~ $INTEG_REF'
      when: manual
      allow_failure: true

# test to integration env (only for integration branches)
# enabled by default, disable this job by setting $HELM_INTEG_DISABLED
helm-test-integration:
  extends: .helm-test
  variables:
    ENV_TYPE: integration
    ENV_KUBE_CONFIG: "$HELM_INTEG_KUBE_CONFIG"
    ENV_NAMESPACE: "$HELM_INTEG_NAMESPACE"
    ENV_VALUES: "$HELM_INTEG_VALUES"
  rules:
Pierre Smeyers's avatar
Pierre Smeyers committed
    - if: $CI_COMMIT_TAG
      when: never
    - if: '$HELM_TEST_ENABLED != "true"'
      when: never
    - if: '$HELM_INTEG_DISABLED == "true"'
Pierre Smeyers's avatar
Pierre Smeyers committed
      when: never
Pierre Smeyers's avatar
Pierre Smeyers committed
    # exclude on non-integration branch
    - if: '$CI_COMMIT_REF_NAME !~ $INTEG_REF'
      when: never
    # then use common test jobs policy
    - !reference [.test-policy, rules]
Pierre Smeyers's avatar
Pierre Smeyers committed

# ==================================================
# Stage: staging
# ==================================================
helm-staging:
  extends: .helm-deploy
  variables:
    ENV_TYPE: staging
    ENV_APP_NAME: "$HELM_STAGING_APP_NAME"
    ENV_URL: "${HELM_STAGING_ENVIRONMENT_URL}"
Pierre Smeyers's avatar
Pierre Smeyers committed
    ENV_KUBE_CONFIG: "$HELM_STAGING_KUBE_CONFIG"
    ENV_NAMESPACE: "$HELM_STAGING_NAMESPACE"
    ENV_VALUES: "$HELM_STAGING_VALUES"
  environment:
    name: staging
    on_stop: helm-cleanup-staging
  resource_group: staging
  rules:
    # exclude merge requests and on $HELM_STAGING_DISABLED set
    - if: '$HELM_STAGING_DISABLED == "true"'
Pierre Smeyers's avatar
Pierre Smeyers committed
      when: never
    # only on production branch(es)
    - if: '$CI_COMMIT_REF_NAME =~ $PROD_REF'

# stop staging env (automatically triggered once branches are deleted)
helm-cleanup-staging:
  extends: .helm-cleanup
  variables:
    ENV_TYPE: staging
    ENV_APP_NAME: "$HELM_STAGING_APP_NAME"
    ENV_KUBE_CONFIG: "$HELM_STAGING_KUBE_CONFIG"
    ENV_NAMESPACE: "$HELM_STAGING_NAMESPACE"
  environment:
    name: staging
    action: stop
  resource_group: staging
  rules:
    # exclude merge requests and on $HELM_STAGING_DISABLED set
    - if: '$HELM_STAGING_DISABLED == "true"'
Pierre Smeyers's avatar
Pierre Smeyers committed
      when: never
    # only on production branch(es)
    - if: '$CI_COMMIT_REF_NAME =~ $PROD_REF'
      when: manual
      allow_failure: true

helm-test-staging:
  extends: .helm-test
  variables:
    ENV_TYPE: staging
    ENV_KUBE_CONFIG: "$HELM_STAGING_KUBE_CONFIG"
    ENV_NAMESPACE: "$HELM_STAGING_NAMESPACE"
    ENV_VALUES: "$HELM_STAGING_VALUES"
  rules:
Pierre Smeyers's avatar
Pierre Smeyers committed
    - if: $CI_COMMIT_TAG
      when: never
    - if: '$HELM_TEST_ENABLED != "true"'
      when: never
    - if: '$HELM_STAGING_DISABLED == "true"'
Pierre Smeyers's avatar
Pierre Smeyers committed
      when: never
Pierre Smeyers's avatar
Pierre Smeyers committed
    # exclude on non-production branch
    - if: '$CI_COMMIT_REF_NAME !~ $PROD_REF'
      when: never
    # then use common test jobs policy
    - !reference [.test-policy, rules]

Pierre Smeyers's avatar
Pierre Smeyers committed
# ==================================================
# Stage: production
# ==================================================
helm-production:
  extends: .helm-deploy
  stage: production
  variables:
    ENV_TYPE: production
    ENV_APP_NAME: "$HELM_PROD_APP_NAME"
    ENV_APP_SUFFIX: ""
    ENV_URL: "${HELM_PROD_ENVIRONMENT_URL}"
Pierre Smeyers's avatar
Pierre Smeyers committed
    ENV_KUBE_CONFIG: "$HELM_PROD_KUBE_CONFIG"
    ENV_NAMESPACE: "$HELM_PROD_NAMESPACE"
    ENV_VALUES: "$HELM_PROD_VALUES"
  environment:
    name: production
  resource_group: production
  rules:
    # exclude non-production branches
    - if: '$CI_COMMIT_REF_NAME !~ $PROD_REF'
      when: never
    # exclude if $HELM_PROD_DISABLED set
    - if: '$HELM_PROD_DISABLED == "true"'
Pierre Smeyers's avatar
Pierre Smeyers committed
      when: never
    # if $AUTODEPLOY_TO_PROD: auto
    - if: '$AUTODEPLOY_TO_PROD == "true"'
Pierre Smeyers's avatar
Pierre Smeyers committed
    # else if PUBLISH_ON_PROD enabled: auto (because the publish job was blocking)
Pierre Smeyers's avatar
Pierre Smeyers committed
    # else: manual, blocking
    - if: $CI_COMMIT_REF_NAME # useless test, just to prevent GitLab warning