stages: - plan - apply - destroy variables: WORKDIR: $CI_PROJECT_DIR/terraform GITLAB_TF_ADDRESS: ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/terraform/state/${ENVIRONMENT_NAME} image: name: registry.internal.durp.info/opentofu/opentofu:latest entrypoint: [""] include: - project: 'developerdurp/yml' ref: 'main' file: - 'jobs/terraform.yml' format: stage: .pre allow_failure: false extends: .terraform_fmt validate: stage: .pre allow_failure: false extends: .terraform_validate plan-development: stage: plan environment: name: development variables: ENVIRONMENT_NAME: dev allow_failure: false extends: .terraform_plan needs: ["validate","format"] plan-production: stage: plan environment: name: production variables: ENVIRONMENT_NAME: prd allow_failure: false extends: .terraform_plan needs: ["validate","format"] apply-development: stage: apply environment: name: development variables: ENVIRONMENT_NAME: dev allow_failure: false extends: .terraform_apply rules: - when: manual apply-production: stage: apply environment: name: production variables: ENVIRONMENT_NAME: prd allow_failure: false extends: .terraform_apply rules: - when: manual destroy-development: stage: destroy environment: name: development variables: ENVIRONMENT_NAME: dev allow_failure: false extends: .terraform_destroy needs: ["apply-development"] rules: - when: manual destroy-production: stage: destroy environment: name: production variables: ENVIRONMENT_NAME: prd allow_failure: false extends: .terraform_destroy needs: ["apply-production"] rules: - when: manual