Files
k3s/.gitlab-ci.yml
2022-11-13 17:19:05 +00:00

173 lines
3.9 KiB
YAML

stages:
- lint
- terraform
- ansible
- destroy
include:
- project: 'developerdurp/jobtemplates'
ref: main
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
ansible:
stage: lint
variables:
WORKDIR: $CI_PROJECT_DIR/ansible
REQUIREMENTS: requirements.yml
FILE: main.yml
allow_failure: false
extends: .ansible_lint
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