80 lines
2.3 KiB
YAML
80 lines
2.3 KiB
YAML
default:
|
|
image:
|
|
name: hashicorp/terraform:1.0.0
|
|
entrypoint: [""]
|
|
|
|
stages:
|
|
- init
|
|
- validation
|
|
- pre-release
|
|
- release
|
|
|
|
init:
|
|
stage: init
|
|
script:
|
|
- terraform init -input=false
|
|
artifacts:
|
|
untracked: false
|
|
expire_in: 30 days
|
|
paths:
|
|
- .terraform
|
|
- .terraform.lock.hcl
|
|
|
|
format:
|
|
stage: validation
|
|
script:
|
|
- terraform fmt -recursive -check -diff .
|
|
|
|
validate:
|
|
stage: validation
|
|
script:
|
|
- terraform validate
|
|
|
|
tag release:
|
|
stage: pre-release
|
|
image: node:16-buster-slim
|
|
before_script:
|
|
- apt-get update && apt-get upgrade -y --no-install-recommends git-core ca-certificates
|
|
- npm install -g semantic-release @semantic-release/gitlab
|
|
script:
|
|
- semantic-release -b ${CI_COMMIT_REF_NAME}
|
|
rules:
|
|
- if: $CI_COMMIT_TAG
|
|
when: never
|
|
- if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH
|
|
when: always
|
|
- if: $CI_COMMIT_MSG =~ /^chore\(CHANGELOG\):/
|
|
when: never
|
|
|
|
tag release dry-run:
|
|
stage: pre-release
|
|
image: node:16-buster-slim
|
|
before_script:
|
|
- apt-get update && apt-get upgrade -y --no-install-recommends git-core ca-certificates
|
|
- npm install -g semantic-release @semantic-release/gitlab
|
|
script:
|
|
- semantic-release -d -b ${CI_COMMIT_REF_NAME}
|
|
rules:
|
|
- if: $CI_COMMIT_TAG
|
|
when: never
|
|
- if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH
|
|
when: never
|
|
- if: $CI_COMMIT_MSG =~ /^chore\(CHANGELOG\):/
|
|
when: never
|
|
|
|
publish:
|
|
stage: release
|
|
image: curlimages/curl:latest
|
|
variables:
|
|
TERRAFORM_MODULE_NAME: ${CI_PROJECT_NAME}
|
|
TERRAFORM_MODULE_VERSION: ${CI_COMMIT_TAG}
|
|
TERRAFORM_MODULE_SYSTEM: gitlab
|
|
ARCHIVE_FILE: ${TERRAFORM_MODULE_NAME}-${TERRAFORM_MODULE_SYSTEM}-${TERRAFORM_MODULE_VERSION}.tar.gz
|
|
UPLOAD_ENDPOINT: ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/terraform/modules/${TERRAFORM_MODULE_NAME}/${TERRAFORM_MODULE_SYSTEM}/${TERRAFORM_MODULE_VERSION}/file
|
|
script:
|
|
- |
|
|
set -e
|
|
tar -cvzf "${ARCHIVE_FILE}" --exclude=./.terraform --exclude=./.terraform.lock.hcl --exclude=./.git --exclude=./.git-hooks --exclude=./Makefile --exclude=./.editorconfig --exclude=./.gitignore --exclude=./.releaserc.yml --exclude=./.gitlab-ci.yml .
|
|
curl --fail-with-body --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file "${ARCHIVE_FILE}" "${UPLOAD_ENDPOINT}"
|
|
rules:
|
|
- if: $CI_COMMIT_TAG
|