Commit 7d93ae70 authored by Pierre Smeyers's avatar Pierre Smeyers
Browse files

feat: add $kube_namespace ctx variable

parent 2432a4de
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -75,6 +75,7 @@ The environment variables are available in the helmfile template with the
| `$environment_type`  | `{{ env "environment_type" }}` | the current deployment environment type (`review`, `integration`, `staging` or `production`) |
| `$environment_url` | `{{ env "environment_url" }}` | the environment URL (see also [environment url management](#environments-url-management)) |
| `$environment_hostname` | `{{ env "environment_hostname" }}` | the environment hostname, extracted from the environment URL |
| `$kube_namespace`    | `{{ .Namespace }}` | the Kubernetes namespace currently used for deployment/cleanup |

The `$environment_type` is also passed as `--environment` parameter to `helmfile` which allows you
to inject a set of values specific to the environment type
+17 −17
Original line number Diff line number Diff line
@@ -359,7 +359,7 @@ stages:
  function helmfile_deploy() {
    export environment_type=$ENV_TYPE
    export environment_name=${ENV_APP_NAME:-${HELMFILE_BASE_APP_NAME}${ENV_APP_SUFFIX}}
    namespace=${ENV_NAMESPACE:-${KUBE_NAMESPACE}}
    export kube_namespace=${ENV_NAMESPACE:-${KUBE_NAMESPACE}}
    environment_url=${ENV_URL:-${HELMFILE_ENVIRONMENT_URL:-$ENV_URL_LEGACY}}

    # variables expansion in $environment_url
@@ -370,12 +370,12 @@ stages:
    export environment_hostname

    log_info "--- \\e[32mdeploy\\e[0m"
    log_info "--- \$namespace: \\e[33;1m${namespace}\\e[0m"
    log_info "--- \$kube_namespace: \\e[33;1m${kube_namespace}\\e[0m"
    log_info "--- \$environment_type: \\e[33;1m${environment_type}\\e[0m (passed as helmfile environment)"
    log_info "--- \$environment_name: \\e[33;1m${environment_name}\\e[0m"
    log_info "--- \$environment_hostname: \\e[33;1m${environment_hostname}\\e[0m"

    kubectl config set-context --current --namespace="$namespace"
    kubectl config set-context --current --namespace="$kube_namespace"

    # Auto-create docker-registry secret for Gitlab deploy token
    if [[ -n "$CI_DEPLOY_USER" ]]; then
@@ -384,7 +384,7 @@ stages:
      kubectl create secret docker-registry "$pull_secret"\
        --docker-server="${CI_REGISTRY}" --docker-username="${CI_DEPLOY_USER}"\
        --docker-password="${CI_DEPLOY_PASSWORD}" --docker-email="${GITLAB_USER_EMAIL}"\
        -o yaml --dry-run=client | kubectl apply -f - --namespace="$namespace"
        -o yaml --dry-run=client | kubectl apply -f - --namespace="$kube_namespace"
    fi

    # unset any upstream deployment env & artifacts
@@ -403,9 +403,9 @@ stages:
    helmfile_opts=${TRACE+--debug}
    helmfile_opts="$helmfile_opts --file ${HELMFILE_PATH}"
    
    if [ -n "$namespace" ]; then
      log_info "--- using \\e[32mnamespace\\e[0m: \\e[33;1m${namespace}\\e[0m"
      helmfile_opts="$helmfile_opts --namespace $namespace"
    if [ -n "$kube_namespace" ]; then
      log_info "--- using \\e[32mnamespace\\e[0m: \\e[33;1m${kube_namespace}\\e[0m"
      helmfile_opts="$helmfile_opts --namespace $kube_namespace"
    fi

    if [ -n "$environment_type" ]; then
@@ -441,10 +441,10 @@ stages:
  function helmfile_delete() {
    export environment_type=$ENV_TYPE
    export environment_name=${ENV_APP_NAME:-${HELMFILE_BASE_APP_NAME}${ENV_APP_SUFFIX}}
    namespace=${ENV_NAMESPACE:-${KUBE_NAMESPACE}}
    export kube_namespace=${ENV_NAMESPACE:-${KUBE_NAMESPACE}}

    log_info "--- \\e[32mdelete"
    log_info "--- \$namespace: \\e[33;1m${namespace}\\e[0m"
    log_info "--- \$kube_namespace: \\e[33;1m${kube_namespace}\\e[0m"
    log_info "--- \$environment_type: \\e[33;1m${environment_type}\\e[0m"
    log_info "--- \$environment_name: \\e[33;1m${environment_name}\\e[0m"

@@ -460,9 +460,9 @@ stages:
    helmfile_opts=${TRACE+--debug}    
    helmfile_opts="$helmfile_opts --file ${HELMFILE_PATH}"

    if [ -n "$namespace" ]; then
      log_info "--- using \\e[32mnamespace\\e[0m: \\e[33;1m${namespace}\\e[0m"
      helmfile_opts="$helmfile_opts --namespace $namespace"
    if [ -n "$kube_namespace" ]; then
      log_info "--- using \\e[32mnamespace\\e[0m: \\e[33;1m${kube_namespace}\\e[0m"
      helmfile_opts="$helmfile_opts --namespace $kube_namespace"
    fi

    if [ -n "$environment_type" ]; then
@@ -486,19 +486,19 @@ stages:
  # test application (and dependencies)
  # $environment_type and $environment_name are propagated by dotenv artifact
  function helmfile_test() {
    namespace=${ENV_NAMESPACE:-${KUBE_NAMESPACE}}
    export kube_namespace=${ENV_NAMESPACE:-${KUBE_NAMESPACE}}

    log_info "--- \\e[32mtest\\e[0m (env: ${environment_type})"
    log_info "--- \$namespace: \\e[33;1m${namespace}\\e[0m"
    log_info "--- \$kube_namespace: \\e[33;1m${kube_namespace}\\e[0m"
    log_info "--- \$environment_name: \\e[33;1m${environment_name}\\e[0m"
    log_info "--- \$environment_type: \\e[33;1m${environment_type}\\e[0m"

    helmfile_opts=""
    helmfile_opts="$helmfile_opts --file ${HELMFILE_PATH}"

    if [ -n "$namespace" ]; then
      log_info "--- using \\e[32mnamespace\\e[0m: \\e[33;1m${namespace}\\e[0m"
      helmfile_opts="$helmfile_opts --namespace $namespace"
    if [ -n "$kube_namespace" ]; then
      log_info "--- using \\e[32mnamespace\\e[0m: \\e[33;1m${kube_namespace}\\e[0m"
      helmfile_opts="$helmfile_opts --namespace $kube_namespace"
    fi

    if [ -n "$environment_type" ]; then