159 lines
3.6 KiB
YAML
159 lines
3.6 KiB
YAML
stages:
|
|
- lint
|
|
- terraform
|
|
- ansible
|
|
- destroy
|
|
|
|
include:
|
|
- project: 'developerdurp/jobtemplates'
|
|
ref: release/1.0.0
|
|
file:
|
|
- 'terraform.yml'
|
|
- 'ansible.yml'
|
|
|
|
format:
|
|
stage: lint
|
|
variables:
|
|
WORKDIR: $CI_PROJECT_DIR/terraform
|
|
allow_failure: false
|
|
extends: .terraform_fmt
|
|
rules:
|
|
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
|
|
when: always
|
|
- when: never
|
|
|
|
validate:
|
|
stage: lint
|
|
variables:
|
|
WORKDIR: $CI_PROJECT_DIR/terraform
|
|
allow_failure: false
|
|
extends: .terraform_validate
|
|
rules:
|
|
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
|
|
when: always
|
|
- when: never
|
|
|
|
plan:
|
|
stage: lint
|
|
variables:
|
|
WORKDIR: $CI_PROJECT_DIR/terraform
|
|
ARGUMENTS: -var=pm_password=$pm_password -var=pm_api_url=$pm_api_url -var-file=terraform.tfvars
|
|
allow_failure: false
|
|
extends: .terraform_plan
|
|
needs: ["validate","format"]
|
|
rules:
|
|
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
|
|
changes:
|
|
compare_to: refs/heads/main
|
|
paths:
|
|
- 'terraform/*'
|
|
when: always
|
|
- when: never
|
|
|
|
k3s:
|
|
stage: terraform
|
|
variables:
|
|
WORKDIR: $CI_PROJECT_DIR/terraform
|
|
ARGUMENTS: -var=pm_password=$pm_password -var=pm_api_url=$pm_api_url -var-file=terraform.tfvars
|
|
allow_failure: false
|
|
extends: .terraform_apply
|
|
rules:
|
|
- if: $CI_PIPELINE_SOURCE == "schedule"
|
|
when: never
|
|
- if: '$CI_COMMIT_BRANCH == "main"'
|
|
changes:
|
|
paths:
|
|
- 'ansible/dns.yml'
|
|
when: never
|
|
- if: '$CI_COMMIT_BRANCH == "main"'
|
|
changes:
|
|
paths:
|
|
- 'terraform/*'
|
|
- 'ansible/*'
|
|
when: always
|
|
- when: never
|
|
|
|
k3s-ansible:
|
|
stage: ansible
|
|
variables:
|
|
WORKDIR: $CI_PROJECT_DIR/ansible
|
|
FILE: main.yml
|
|
REQUIREMENTS: requirements.yml
|
|
allow_failure: false
|
|
extends: .ansible_apply
|
|
before_script:
|
|
- cat $ansible > $WORKDIR/ansible
|
|
needs: ["k3s"]
|
|
rules:
|
|
- if: $CI_PIPELINE_SOURCE == "schedule"
|
|
when: never
|
|
- if: '$CI_COMMIT_BRANCH == "main"'
|
|
changes:
|
|
paths:
|
|
- 'ansible/dns.yml'
|
|
when: never
|
|
- if: '$CI_COMMIT_BRANCH == "main"'
|
|
changes:
|
|
paths:
|
|
- 'terraform/*'
|
|
- 'ansible/*'
|
|
when: always
|
|
- when: never
|
|
|
|
k3s-dns:
|
|
stage: ansible
|
|
variables:
|
|
WORKDIR: $CI_PROJECT_DIR/ansible
|
|
FILE: dns.yml
|
|
REQUIREMENTS: requirements.yml
|
|
allow_failure: false
|
|
extends: .ansible_apply
|
|
before_script:
|
|
- cat $ansible > $WORKDIR/ansible
|
|
rules:
|
|
- if: '$CI_COMMIT_BRANCH == "main"'
|
|
changes:
|
|
paths:
|
|
- 'ansible/dns.yml'
|
|
when: always
|
|
- when: never
|
|
|
|
k3s-update:
|
|
stage: ansible
|
|
variables:
|
|
WORKDIR: $CI_PROJECT_DIR/ansible
|
|
FILE: update.yml
|
|
REQUIREMENTS: requirements.yml
|
|
allow_failure: false
|
|
extends: .ansible_apply
|
|
before_script:
|
|
- cat $ansible > $WORKDIR/ansible
|
|
rules:
|
|
- if: $CI_PIPELINE_SOURCE == "schedule"
|
|
when: always
|
|
- when: never
|
|
|
|
k3s-destroy:
|
|
stage: destroy
|
|
variables:
|
|
WORKDIR: $CI_PROJECT_DIR/terraform
|
|
ARGUMENTS: -var=pm_password=$pm_password -var=pm_api_url=$pm_api_url -var-file=terraform.tfvars
|
|
allow_failure: false
|
|
extends: .terraform_destroy
|
|
needs: ["k3s"]
|
|
rules:
|
|
- if: $CI_PIPELINE_SOURCE == "schedule"
|
|
when: never
|
|
- if: '$CI_COMMIT_BRANCH == "main"'
|
|
changes:
|
|
paths:
|
|
- 'ansible/dns.yml'
|
|
when: never
|
|
- if: '$CI_COMMIT_BRANCH == "main"'
|
|
changes:
|
|
paths:
|
|
- 'terraform/*'
|
|
- 'ansible/*'
|
|
when: always
|
|
- when: never
|