Gitlab CI
Module Release
The following snippet serves as a starting point to release Terraform Modules using tfx
:
# .gitlab-ci.yml
variables:
# tfx auth
TFE_HOSTNAME: ""
TFE_ORGANIZATION: ""
TFE_TOKEN: ""
# module vars
MODULE_NAME: aws-s3
MODULE_PROVIDER: aws
stages:
- release
terraform_module_release:
stage: release
image:
name: ghcr.io/straubt1/tfx:latest
entrypoint: [""]
script:
- tfx registry module show --name "${MODULE_NAME}" --provider "${MODULE_PROVIDER}" || tfx registry module create --name "${MODULE_NAME}" --provider "${MODULE_PROVIDER}"
- |
tfx registry module version create \
--name "${MODULE_NAME}" \
--provider "${MODULE_PROVIDER}" \
--version "${CI_COMMIT_TAG#v}" \
--directory "${CI_PROJECT_DIR}"
rules:
- if: $CI_COMMIT_TAG
Provider Release
The following snippet serves as a starting point to release Terraform Provider using tfx
:
# .gitlab-ci.yml
variables:
# tfx auth
TFE_HOSTNAME: ""
TFE_ORGANIZATION: ""
TFE_TOKEN: ""
# goreleaser vars
GITLAB_TOKEN: ""
GPG_FINGERPRINT: ""
# provider vars
PROVIDER_NAME: custom-provider
stages:
- release
- publish
# most likely you will call goreleaser before publishing
goreleaser:
stage: release
image:
name: goreleaser/goreleaser:latest
entrypoint: [""]
script:
- goreleaser release
artifacts:
paths:
- ${CI_PROJECT_DIR}/dist
rules:
- if: $CI_COMMIT_TAG
version:
stage: publish
image:
name: ghcr.io/straubt1/tfx:latest
entrypoint: [""]
needs:
- job: goreleaser_release
artifacts: true
script:
- tfx registry provider version create \
--name="${PROVIDER_NAME}" \
--version="${CI_COMMIT_TAG#v}" \
--key-id="${GPG_FINGERPRINT}" \
--shasums="${CI_PROJECT_DIR}/dist/terraform-provider-${PROVIDER_NAME}_${CI_COMMIT_TAG#v}_SHA256SUMS" \
--shasums-sig="${CI_PROJECT_DIR}/dist/terraform-provider-${PROVIDER_NAME}_${CI_COMMIT_TAG#v}_SHA256SUMS.sig"
rules:
- if: $CI_COMMIT_TAG
platforms:
stage: publish
image:
name: ghcr.io/straubt1/tfx:latest
entrypoint: [""]
needs:
- version
parallel:
matrix:
PLATFORMS:
- OS: linux
ARCH: amd64
- OS: darwin
ARCH: arm64
- OS: windows
ARCH: amd64
script:
- tfx registry provider version platform create \
--name="${PROVIDER_NAME}" \
--version="${CI_COMMIT_TAG#v}" \
--os="${OS}" \
--arch="${ARCH}" \
-f="${CI_PROJECT_DIR}/dist/terraform-provider-${PROVIDER_NAME}_${CI_COMMIT_TAG#v}_${OS}_${ARCH}.zip";
rules:
- if: $CI_COMMIT_TAG