CI Pipeline
To increase code quality of the playbooks, roles and modules, the project is using an extensive CI pipeline for automated testing. In a nutshell we do the following tests:
-
run ansible-lint on each playbook, role and the collection
-
build the Ansible SSA Collection
-
build the execution environment
-
publish the execution environment on Quay (access to this repository requires a Red Hat Employee account)
-
run a job on automation controller which deploys AAP on AWS, Azure and Google
-
notify all relevant activities on Slack
-
update the pages documentation which is automatically published on Ansible SSA Labs website
GitLab CI pipeline
Each repository has a CI pipeline to triggers the following chain.
graph LR;
subgraph GitLab
role-instance(role-instance) --> collection_general(ansible_ssa.general)
collection_general --> ee(ee-ansible-ssa)
role-controller-content( role-controller-content ) --> collection_general
role-controller-setup( role-controller-setup ) --> collection_general
role-automationhub-content( role-automationhub-content ) --> collection_general
role-automationhub-setup( role-automationhub-setup ) --> collection_general
playbook-rhaap( playbook-rhaap ) --> collection_general
role-win_* --> collection_windows(ansible_ssa.windows)
collection_windows --> ee
end
subgraph CI AAP
aap-ci( AAP CI Workflow ) --> ci-aws( CI AWS )
aap-ci --> ci-azure( CI Azure )
aap-ci --> ci-gcp( CI GCP )
end
subgraph Documentation
role-instance --> pages(Pages Documentation Project)
collection_general --> pages
collection_windows --> pages
role-controller-content --> pages
role-controller-setup --> pages
role-automationhub-content --> pages
role-automationhub-setup --> pages
playbook-rhaap --> pages
end
ee --> aap-ci
CI AAP
There is an installation of Red Hat Ansible Automation Platform which is called to launch a CI workflow. The Workflow will run the playbook-rhaap on AWS, Azure and Google Cloud in parallel. After each playbook-rhaap.yml
run, the cloud resources will be removed by launching the playbook with the remove=true extra variable.