stages: - plan - apply - destroy 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 variables: ARGUMENTS: -var-file=terraform.tfvars ENVIRONMENT_NAME: development allow_failure: false extends: .terraform_plan needs: ["validate","format"] plan-production: stage: plan variables: ARGUMENTS: -var-file=terraform.tfvars ENVIRONMENT_NAME: production allow_failure: false extends: .terraform_plan needs: ["validate","format"] apply-development: stage: apply variables: ARGUMENTS: -var-file=terraform.tfvars ENVIRONMENT_NAME: development allow_failure: false extends: .terraform_apply rules: - when: manual apply-production: stage: apply variables: ARGUMENTS: -var-file=terraform.tfvars ENVIRONMENT_NAME: production allow_failure: false extends: .terraform_apply rules: - when: manual destroy-development: stage: destroy variables: ARGUMENTS: -var-file=terraform.tfvars ENVIRONMENT_NAME: development allow_failure: false extends: .terraform_destroy needs: ["apply-development"] rules: - when: manual destroy-production: stage: destroy variables: ARGUMENTS: -var-file=terraform.tfvars ENVIRONMENT_NAME: production allow_failure: false extends: .terraform_destroy needs: ["apply-production"] rules: - when: manual