Commit 88eeaa54 authored by Pierre Smeyers's avatar Pierre Smeyers
Browse files

refacto: rename $S3_ROOT_PATH as $S3_PREFIX

parent 3341dd15
Loading
Loading
Loading
Loading
+7 −7
Original line number Diff line number Diff line
@@ -68,7 +68,7 @@ The S3 template uses some global configuration used throughout all jobs.
| :lock: `S3_ACCESS_KEY` | Default S3 service Access Key                 | **has to be defined** |
| :lock: `S3_SECRET_KEY` | Default S3 service Secret Key                 | **has to be defined** |
| `S3_BASE_BUCKET_NAME`  | Base bucket name                              | `$CI_PROJECT_NAME` ([see GitLab doc](https://docs.gitlab.com/ee/ci/variables/predefined_variables.html)) |
| `S3_ROOT_PATH` | Default root path (_prefix_) where files will be uploaded in the S3 bucket (:warning: don't forget the starting `/`)  | _none_ |
| `S3_PREFIX` | Default S3 prefix to use as a root destination to upload objects in the S3 bucket | _none_ |

### Secrets management

@@ -116,7 +116,7 @@ Here are variables supported to configure review environments:
| `S3_REVIEW_BUCKET_NAME`  | Bucket name for `review` env      | `"${S3_BASE_BUCKET_NAME}-${CI_ENVIRONMENT_SLUG}"` (ex: `myproject-review-fix-bug-12`) |
| `S3_REVIEW_ENVIRONMENT_SCHEME` | The review environment protocol scheme | `https` |
| `S3_REVIEW_ENVIRONMENT_DOMAIN` | The review environment domain. | _none_ |
| `S3_REVIEW_ROOT_PATH`  |  S3 bucket root path (prefix) for `review` env _(only define if different from default)_ | `S3_ROOT_PATH` |
| `S3_REVIEW_PREFIX`  |  S3 prefix to use for `review` env _(only define if different from default)_ | `S3_PREFIX` |

Note: By default, review `environment.url` will be built as `${S3_REVIEW_ENVIRONMENT_SCHEME}://${$CI_PROJECT_NAME}-${CI_ENVIRONMENT_SLUG}.${S3_REVIEW_ENVIRONMENT_DOMAIN}`

@@ -136,7 +136,7 @@ Here are variables supported to configure the integration environment:
| :lock: `S3_INTEG_SECRET_KEY` | S3 service Secret Key for `integration` env  _(only define if different from default)_    | `$S3_SECRET_KEY` |
| `S3_INTEG_BUCKET_NAME`   | Bucket name for `integration` env | `${S3_BASE_BUCKET_NAME}-integration` |
| `S3_INTEG_ENVIRONMENT_URL` | The integration environment url **including scheme** (ex: `https://my-project-integration.s3-website.nonpublic.domain.com`). Do not use variable inside variable definition as it will result in a two level cascade variable and gitlab does not allow that. | _none_ |
| `S3_INTEG_ROOT_PATH`  |  S3 bucket root path (prefix) for `integration` env _(only define if different from default)_ | `S3_ROOT_PATH` |
| `S3_INTEG_PREFIX`  |  S3 prefix to use for `integration` env _(only define if different from default)_ | `S3_PREFIX` |

#### Staging environment

@@ -155,7 +155,7 @@ Here are variables supported to configure the staging environment:
| :lock: `S3_STAGING_SECRET_KEY` | S3 service Secret Key for `staging` env  _(only define if different from default)_    | `$S3_SECRET_KEY` |
| `S3_STAGING_BUCKET_NAME` | Bucket name for `staging` env     | `${S3_BASE_BUCKET_NAME}-staging` |
| `S3_STAGING_ENVIRONMENT_URL` | The staging environment url **including scheme** (ex: `https://my-project-staging.s3-website.nonpublic.domain`). Do not use variable inside variable definition as it will result in a two level cascade variable and gitlab does not allow that. | _none_ |
| `S3_STAGING_ROOT_PATH`  |  S3 bucket root path (prefix) for `staging` env _(only define if different from default)_ | `S3_ROOT_PATH` |
| `S3_STAGING_PREFIX`  |  S3 prefix to use for `staging` env _(only define if different from default)_ | `S3_PREFIX` |

#### Production environment

@@ -174,7 +174,7 @@ Here are variables supported to configure the production environment:
| `S3_PROD_BUCKET_NAME`    | Bucket name for `production` env  | `$S3_BASE_BUCKET_NAME` |
| `S3_PROD_ENVIRONMENT_URL`| The production environment url **including scheme** (ex: `https://my-project.s3-website.public.domain.com`) Do not use variable inside variable definition as it will result in a two level cascade variable and gitlab does not allow that. | _none_ |
| `AUTODEPLOY_TO_PROD`     | Set this variable to auto-deploy to production. If not set deployment to production will be `manual` (default behaviour). | _none_ (disabled) |
| `S3_PROD_ROOT_PATH`  |  S3 bucket root path (prefix) for `production` env _(only define if different from default)_ | `S3_ROOT_PATH` |
| `S3_PROD_PREFIX`  |  S3 prefix to use for `production` env _(only define if different from default)_ | `S3_PREFIX` |

### Buckets namespacing

@@ -194,7 +194,7 @@ variables:
  S3_STAGING_BUCKET_NAME: "acme-bucket-shared"
  S3_PROD_BUCKET_NAME: "acme-bucket-shared"
  # segregate envs with prefixes
  S3_ROOT_PATH: "$CI_ENVIRONMENT_SLUG"
  S3_PREFIX: "$CI_ENVIRONMENT_SLUG"
  # envs url
  S3_REVIEW_ENVIRONMENT_URL: "https://acme-bucket-shared.s3-website.public.domain.com/$CI_ENVIRONMENT_SLUG"
  S3_INTEG_ENVIRONMENT_URL: "https://acme-bucket-shared.s3-website.public.domain.com/$CI_ENVIRONMENT_SLUG"
@@ -214,7 +214,7 @@ variables:
  S3_STAGING_BUCKET_NAME: "acme-bucket-staging"
  S3_PROD_BUCKET_NAME: "acme-bucket-prod"
  # segregate review envs with prefixes
  S3_REVIEW_ROOT_PATH: "$CI_ENVIRONMENT_SLUG"
  S3_REVIEW_PREFIX: "$CI_ENVIRONMENT_SLUG"
  # envs url
  S3_REVIEW_ENVIRONMENT_URL: "https://acme-bucket-review.s3-website.public.domain.com/$CI_ENVIRONMENT_SLUG"
  S3_INTEG_ENVIRONMENT_URL: "https://acme-bucket-integ.s3-website.public.domain.com"
+10 −10
Original line number Diff line number Diff line
@@ -62,8 +62,8 @@
      "advanced": true
    },
    {
      "name": "S3_ROOT_PATH",
      "description": "Default root path where files will be uploaded in the S3 bucket (:warning: don't forget the starting `/`)"
      "name": "S3_PREFIX",
      "description": "Default S3 prefix to use as a root destination to upload objects in the S3 bucket"
    }
  ],
  "features": [
@@ -110,8 +110,8 @@
          "type": "boolean"
        },
        {
          "name": "S3_REVIEW_ROOT_PATH",
          "description": "S3 bucket root path (prefix) for `review` env _(only define if different from default)_",
          "name": "S3_REVIEW_PREFIX",
          "description": "S3 prefix to use for `review` env _(only define if different from default)_",
          "advanced": true
        }
      ]
@@ -149,8 +149,8 @@
          "mandatory": true
        },
        {
          "name": "S3_INTEG_ROOT_PATH",
          "description": "S3 bucket root path (prefix) for `integration` env _(only define if different from default)_",
          "name": "S3_INTEG_PREFIX",
          "description": "S3 prefix to use for `integration` env _(only define if different from default)_",
          "advanced": true
        }
      ]
@@ -188,8 +188,8 @@
          "mandatory": true
        },
        {
          "name": "S3_STAGING_ROOT_PATH",
          "description": "S3 bucket root path (prefix) for `staging` env _(only define if different from default)_",
          "name": "S3_STAGING_PREFIX",
          "description": "S3 prefix to use for `staging` env _(only define if different from default)_",
          "advanced": true
        }
      ]
@@ -232,8 +232,8 @@
          "description": "Set this variable to auto-deploy to production. If not set deployment to production will be manual (default behaviour)."
        },
        {
          "name": "S3_PROD_ROOT_PATH",
          "description": "S3 bucket root path (prefix) for `production` env _(only define if different from default)_",
          "name": "S3_PROD_PREFIX",
          "description": "S3 prefix to use for `production` env _(only define if different from default)_",
          "advanced": true
        }
      ]
+17 −10
Original line number Diff line number Diff line
@@ -35,6 +35,13 @@ variables:
  S3_DEPLOY_FILES: "public/"
  S3_WEBSITE_ARGS: "ws-create --ws-index=index.html"

  # for backwards compatibility
  S3_PREFIX: "$S3_ROOT_PATH"
  S3_REVIEW_PREFIX: "$S3_REVIEW_ROOT_PATH"
  S3_INTEG_PREFIX: "$S3_INTEG_ROOT_PATH"
  S3_STAGING_PREFIX: "$S3_STAGING_ROOT_PATH"
  S3_PROD_PREFIX: "$S3_PROD_ROOT_PATH"

  # default production ref name (pattern)
  PROD_REF: '/^(master|main)$/'
  # default integration ref name (pattern)
@@ -432,7 +439,7 @@ stages:
#
# @arg ENV_TYPE         : environment type
# @arg ENV_BUCKET_NAME  : env-specific S3 bucket name
# @arg ENV_ROOT_PATH    : env-specific S3 prefix
# @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
@@ -451,7 +458,7 @@ stages:
    - 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_ROOT_PATH:-${S3_ROOT_PATH}}"
    - deploy "$ENV_TYPE" "${ENV_BUCKET_NAME:-${S3_BASE_BUCKET_NAME}${ENV_APP_SUFFIX}}" "${ENV_PREFIX:-${S3_PREFIX}}"
  artifacts:
    name: "$ENV_TYPE env url for $CI_PROJECT_NAME on $CI_COMMIT_REF_SLUG"
    paths:
@@ -464,7 +471,7 @@ stages:
#
# @arg ENV_TYPE         : environment type
# @arg ENV_BUCKET_NAME  : env-specific S3 bucket name
# @arg ENV_ROOT_PATH    : env-specific S3 prefix
# @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
@@ -487,7 +494,7 @@ stages:
    - 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_ROOT_PATH:-${S3_ROOT_PATH}}"
    - delete "$ENV_TYPE" "${ENV_BUCKET_NAME:-${S3_BASE_BUCKET_NAME}${ENV_APP_SUFFIX}}" "${ENV_PREFIX:-${S3_PREFIX}}"
  environment:
    action: stop

@@ -497,7 +504,7 @@ s3-review:
  variables:
    ENV_TYPE: review
    ENV_BUCKET_NAME: "$S3_REVIEW_BUCKET_NAME"
    ENV_ROOT_PATH: "$S3_REVIEW_ROOT_PATH"
    ENV_PREFIX: "$S3_REVIEW_PREFIX"
    ENV_ENDPOINT_HOST: "$S3_REVIEW_ENDPOINT_HOST"
    ENV_ACCESS_KEY: "$S3_REVIEW_ACCESS_KEY"
    ENV_SECRET_KEY: "$S3_REVIEW_SECRET_KEY"
@@ -525,7 +532,7 @@ s3-cleanup-review:
  variables:
    ENV_TYPE: review
    ENV_BUCKET_NAME: "$S3_REVIEW_BUCKET_NAME"
    ENV_ROOT_PATH: "$S3_REVIEW_ROOT_PATH"
    ENV_PREFIX: "$S3_REVIEW_PREFIX"
    ENV_ENDPOINT_HOST: "$S3_REVIEW_ENDPOINT_HOST"
    ENV_ACCESS_KEY: "$S3_REVIEW_ACCESS_KEY"
    ENV_SECRET_KEY: "$S3_REVIEW_SECRET_KEY"
@@ -566,7 +573,7 @@ s3-cleanup-all-review:
    - 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}"
  script:
    - delete_all review "${S3_REVIEW_BUCKET_NAME:-${S3_BASE_BUCKET_NAME}-review-.*}" "${S3_REVIEW_ROOT_PATH:-${S3_ROOT_PATH}}"
    - delete_all review "${S3_REVIEW_BUCKET_NAME:-${S3_BASE_BUCKET_NAME}-review-.*}" "${S3_REVIEW_PREFIX:-${S3_PREFIX}}"
  rules:
    # exclude tags
    - if: $CI_COMMIT_TAG
@@ -589,7 +596,7 @@ s3-integration:
  variables:
    ENV_TYPE: integration
    ENV_BUCKET_NAME: "$S3_INTEG_BUCKET_NAME"
    ENV_ROOT_PATH: "$S3_INTEG_ROOT_PATH"
    ENV_PREFIX: "$S3_INTEG_PREFIX"
    ENV_ENDPOINT_HOST: "$S3_INTEG_ENDPOINT_HOST"
    ENV_ACCESS_KEY: "$S3_INTEG_ACCESS_KEY"
    ENV_SECRET_KEY: "$S3_INTEG_SECRET_KEY"
@@ -611,7 +618,7 @@ s3-staging:
  variables:
    ENV_TYPE: staging
    ENV_BUCKET_NAME: "$S3_STAGING_BUCKET_NAME"
    ENV_ROOT_PATH: "$S3_STAGING_ROOT_PATH"
    ENV_PREFIX: "$S3_STAGING_PREFIX"
    ENV_ENDPOINT_HOST: "$S3_STAGING_ENDPOINT_HOST"
    ENV_ACCESS_KEY: "$S3_STAGING_ACCESS_KEY"
    ENV_SECRET_KEY: "$S3_STAGING_SECRET_KEY"
@@ -635,7 +642,7 @@ s3-production:
    ENV_TYPE: production
    ENV_APP_SUFFIX: "" # no suffix for prod
    ENV_BUCKET_NAME: "$S3_PROD_BUCKET_NAME"
    ENV_ROOT_PATH: "$S3_PROD_ROOT_PATH"
    ENV_PREFIX: "$S3_PROD_PREFIX"
    ENV_ENDPOINT_HOST: "$S3_PROD_ENDPOINT_HOST"
    ENV_ACCESS_KEY: "$S3_PROD_ACCESS_KEY"
    ENV_SECRET_KEY: "$S3_PROD_SECRET_KEY"