Commit 75f47306 authored by Pierre Smeyers's avatar Pierre Smeyers
Browse files

refactor(script): retrieve function params directly from env

parent d8e5d42b
Loading
Loading
Loading
Loading
+36 −51
Original line number Diff line number Diff line
@@ -279,11 +279,17 @@ stages:
    return 1
  }

  function login() {
    endpoint_host=$1
    host_bucket=$2
    access_key=$3
    secret_key=$4
  function s3_login() {
    endpoint_host=${ENV_ENDPOINT_HOST:-$S3_ENDPOINT_HOST}
    host_bucket=${S3_HOST_BUCKET}
    access_key=${ENV_ACCESS_KEY:-$S3_ACCESS_KEY}
    secret_key=${ENV_SECRET_KEY:-$S3_SECRET_KEY}

    assert_defined "$endpoint_host" 'Missing required S3 endpoint host'
    # shellcheck disable=SC2016
    assert_defined "$host_bucket" 'Missing required env $S3_HOST_BUCKET'
    assert_defined "$access_key" 'Missing required S3 access key'
    assert_defined "$secret_key" 'Missing required S3 secret key'

    echo -e "[default]\\nhost_base = $endpoint_host\\nhost_bucket = $host_bucket\\nwebsite_endpoint = $S3_WEBSITE_ENDPOINT\\naccess_key = $access_key\\nsecret_key = $secret_key" > ~/.s3cfg

@@ -305,18 +311,18 @@ stages:
  }

  # upload/sync files to bucket
  function deploy() {
    export environment_type=$1
    # backward compatibility
    export env=$environment_type
    bucket=$2
    prefix=$3
  function s3_deploy() {
    export environment_type=$ENV_TYPE
    bucket=${ENV_BUCKET_NAME:-${S3_BASE_BUCKET_NAME}${ENV_APP_SUFFIX}}
    prefix=${ENV_PREFIX:-${S3_PREFIX}}
    region=${ENV_REGION:-${S3_REGION}}
    # normalize prefix with leading slash
    if [[ "$prefix" ]] && [[ "${prefix:0:1}" != "/" ]]
    then
      prefix="/$prefix"
    fi
    region=$4
    # backward compatibility
    export env=$environment_type

    log_info "--- \\e[32mdeploy\\e[0m"
    log_info "--- \$environment_type: \\e[33;1m${environment_type}\\e[0m"
@@ -378,10 +384,10 @@ stages:
  }

  # delete application
  function delete() {
    export environment_type=$1
    bucket=$2
    prefix=$3
  function s3_delete() {
    export environment_type=$ENV_TYPE
    bucket=${ENV_BUCKET_NAME:-${S3_BASE_BUCKET_NAME}${ENV_APP_SUFFIX}}
    prefix=${ENV_PREFIX:-${S3_PREFIX}}
    # normalize prefix with leading slash
    if [[ "$prefix" ]] && [[ "${prefix:0:1}" != "/" ]]
    then
@@ -416,7 +422,7 @@ stages:
    fi
  }

  function delete_all() {
  function s3_delete_all() {
    export environment_type=$1
    envnameproto=$2
    prefix=$3
@@ -452,6 +458,10 @@ stages:

# job prototype
# defines default Docker image, tracking probe, cache policy and tags
#
# @arg ENV_ENDPOINT_HOST: env-specific S3 endpoint host
# @arg ENV_ACCESS_KEY   : env-specific S3 access key
# @arg ENV_SECRET_KEY   : env-specific S3 secret key
.s3-base:
  image:
    name: $S3_CMD_IMAGE
@@ -462,6 +472,7 @@ stages:
  before_script:
    - *s3-scripts
    - install_ca_certs "${CUSTOM_CA_CERTS:-$DEFAULT_CA_CERTS}"
    - s3_login

# Deploy job prototype
# Can be extended to define a concrete environment
@@ -471,24 +482,13 @@ stages:
# @arg ENV_REGION       : env-specific region
# @arg ENV_PREFIX       : env-specific S3 prefix
# @arg ENV_APP_SUFFIX   : env-specific application suffix
# @arg ENV_ENDPOINT_HOST: env-specific S3 endpoint host
# @arg ENV_ACCESS_KEY   : env-specific S3 access key
# @arg ENV_SECRET_KEY   : env-specific S3 secret key
.s3-deploy:
  extends: .s3-base
  stage: deploy
  variables:
    ENV_APP_SUFFIX: "-$CI_ENVIRONMENT_SLUG"
  before_script:
    - *s3-scripts
    - install_ca_certs "${CUSTOM_CA_CERTS:-$DEFAULT_CA_CERTS}"
    - assert_defined "${ENV_ENDPOINT_HOST:-$S3_ENDPOINT_HOST}" 'Missing required S3 endpoint host'
    - assert_defined "${S3_HOST_BUCKET}" 'Missing required env $S3_HOST_BUCKET'
    - assert_defined "${ENV_ACCESS_KEY:-$S3_ACCESS_KEY}" 'Missing required S3 access key'
    - assert_defined "${ENV_SECRET_KEY:-$S3_SECRET_KEY}" 'Missing required S3 secret key'
    - login "${ENV_ENDPOINT_HOST:-$S3_ENDPOINT_HOST}" "${S3_HOST_BUCKET}" "${ENV_ACCESS_KEY:-$S3_ACCESS_KEY}" "${ENV_SECRET_KEY:-$S3_SECRET_KEY}"
  script:
    - deploy "$ENV_TYPE" "${ENV_BUCKET_NAME:-${S3_BASE_BUCKET_NAME}${ENV_APP_SUFFIX}}" "${ENV_PREFIX:-${S3_PREFIX}}" "${ENV_REGION:-${S3_REGION}}"
    - s3_deploy
  artifacts:
    name: "$ENV_TYPE env url for $CI_PROJECT_NAME on $CI_COMMIT_REF_SLUG"
    paths:
@@ -505,9 +505,6 @@ stages:
# @arg ENV_BUCKET_NAME  : env-specific S3 bucket name
# @arg ENV_PREFIX       : env-specific S3 prefix
# @arg ENV_APP_SUFFIX   : env-specific application suffix
# @arg ENV_ENDPOINT_HOST: env-specific S3 endpoint host
# @arg ENV_ACCESS_KEY   : env-specific S3 access key
# @arg ENV_SECRET_KEY   : env-specific S3 secret key
.s3-cleanup:
  extends: .s3-base
  stage: deploy
@@ -517,16 +514,8 @@ stages:
  variables:
    GIT_STRATEGY: none
    ENV_APP_SUFFIX: "-$CI_ENVIRONMENT_SLUG"
  before_script:
    - *s3-scripts
    - install_ca_certs "${CUSTOM_CA_CERTS:-$DEFAULT_CA_CERTS}"
    - assert_defined "${ENV_ENDPOINT_HOST:-$S3_ENDPOINT_HOST}" 'Missing required S3 endpoint host'
    - assert_defined "${S3_HOST_BUCKET}" 'Missing required env $S3_HOST_BUCKET'
    - assert_defined "${ENV_ACCESS_KEY:-$S3_ACCESS_KEY}" 'Missing required S3 access key'
    - assert_defined "${ENV_SECRET_KEY:-$S3_SECRET_KEY}" 'Missing required S3 secret key'
    - login "${ENV_ENDPOINT_HOST:-$S3_ENDPOINT_HOST}" "${S3_HOST_BUCKET}" "${ENV_ACCESS_KEY:-$S3_ACCESS_KEY}" "${ENV_SECRET_KEY:-$S3_SECRET_KEY}"
  script:
    - delete "$ENV_TYPE" "${ENV_BUCKET_NAME:-${S3_BASE_BUCKET_NAME}${ENV_APP_SUFFIX}}" "${ENV_PREFIX:-${S3_PREFIX}}"
    - s3_delete
  environment:
    action: stop

@@ -593,19 +582,15 @@ s3-cleanup-all-review:
  stage: deploy
  # force no dependencies
  dependencies: []
  # no need to clone repository
  variables:
    # no need to clone repository
    GIT_STRATEGY: none
  before_script:
    - *s3-scripts
    - install_ca_certs "${CUSTOM_CA_CERTS:-$DEFAULT_CA_CERTS}"
    - assert_defined "${S3_REVIEW_ENDPOINT_HOST:-$S3_ENDPOINT_HOST}" 'Missing required env $S3_REVIEW_ENDPOINT_HOST or $S3_ENDPOINT_HOST'
    - assert_defined "${S3_HOST_BUCKET}" 'Missing required env $S3_HOST_BUCKET'
    - assert_defined "${S3_REVIEW_ACCESS_KEY:-$S3_ACCESS_KEY}" 'Missing required env $S3_REVIEW_ACCESS_KEY or $S3_ACCESS_KEY'
    - assert_defined "${S3_REVIEW_SECRET_KEY:-$S3_SECRET_KEY}" 'Missing required env $S3_REVIEW_SECRET_KEY or $S3_SECRET_KEY'
    - login "${S3_REVIEW_ENDPOINT_HOST:-$S3_ENDPOINT_HOST}" "${S3_HOST_BUCKET}" "${S3_REVIEW_ACCESS_KEY:-$S3_ACCESS_KEY}" "${S3_REVIEW_SECRET_KEY:-$S3_SECRET_KEY}"
    ENV_TYPE: review
    ENV_ENDPOINT_HOST: "$S3_REVIEW_ENDPOINT_HOST"
    ENV_ACCESS_KEY: "$S3_REVIEW_ACCESS_KEY"
    ENV_SECRET_KEY: "$S3_REVIEW_SECRET_KEY"
  script:
    - delete_all review "${S3_REVIEW_BUCKET_NAME:-${S3_BASE_BUCKET_NAME}-review-.*}" "${S3_REVIEW_PREFIX:-${S3_PREFIX}}"
    - s3_delete_all review "${S3_REVIEW_BUCKET_NAME:-${S3_BASE_BUCKET_NAME}-review-.*}" "${S3_REVIEW_PREFIX:-${S3_PREFIX}}"
  rules:
    # exclude tags
    - if: $CI_COMMIT_TAG