From feed502b52f894e03952ef13fd28d56402f11eab Mon Sep 17 00:00:00 2001 From: fejao <mail@fejao.de> Date: Tue, 11 Feb 2025 09:43:30 +0000 Subject: [PATCH] Setting ci cd molecule --- .gitignore | 1 + .gitlab-ci.yml | 177 ++++++++++++------ README.md | 16 +- roles/clone_repositories/README.md | 2 +- .../oh_my_bash/molecule/default/converge.yml | 7 - roles/oh_my_bash/molecule/default/verify.yml | 8 - roles/test/molecule/default/converge.yml | 6 +- 7 files changed, 132 insertions(+), 85 deletions(-) diff --git a/.gitignore b/.gitignore index e975424..617b129 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ *OLD* *DONT_PUSH* *notes* +*.vscode* diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 850aaaf..7111d1b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,10 +1,14 @@ # image: python:3.10.15-bullseye +### +### VARIABLES +### variables: AUTHOR: fejao - ##### - ##### - ##### + IMAGE_NAME_SYNTAX: python:3.10.15-bullseye + IMAGE_NAME_LINT: python:3.10.15-bullseye + # IMAGE_NAME_MOLECULE: geerlingguy/docker-ubuntu2204-ansible:latest + IMAGE_NAME_MOLECULE: docker:dind INVENTORIES_PATH: "inventories/hosts" PLAYBOOK_PATH_FOR_ROLE_TEST: "ci-cd/01_test.yml" PLAYBOOK_PATH_FOR_ROLE_DEPENDENCIES: "ci-cd/02_dependencies.yml" @@ -13,169 +17,222 @@ variables: PLAYBOOK_PATH_FOR_ROLE_DOCKER_CONTAINERS: "ci-cd/05_docker_containers.yml" PLAYBOOK_PATH_FOR_ROLE_OH_MY_BASH: "ci-cd/06_oh_my_bash.yml" +### +### STAGES +### stages: - syntax-check - lint-tests - molecule ### -### SYNTAX-CHECK +### SCRIPTS +### +.before_syntax_n_lint: &before_syntax_n_lint + - apt-get update && apt-get install -y python3-pip && apt-get clean && rm -rf /var/lib/apt/lists/* + - pip3 install -r ci-cd/requirements.txt + ### Correct the permissions on the build environment directory. + ### See https://github.com/ansible/ansible/pull/42142/files + - chmod 700 /builds/fejao/c3infodesk-deployment + +.run_syntax_check: &run_syntax_check + - ansible-playbook --syntax-check -i $INVENTORIES_PATH $ROLE_PATH + +.run_lint: &run_lint + - ansible-lint $ROLE_PATH + +### +### STAGE-SYNTAX-CHECK ### syntax-test: stage: syntax-check - image: python:3.10.15-bullseye + image: $IMAGE_NAME_SYNTAX + variables: + ROLE_PATH: $PLAYBOOK_PATH_FOR_ROLE_TEST before_script: - - apt-get update && apt-get install -y python3-pip && apt-get clean && rm -rf /var/lib/apt/lists/* - - pip3 install -r ci-cd/requirements.txt + - *before_syntax_n_lint script: - echo "Running ansible-playbook --syntax-check tests at the role-> 'test'" - - ansible-playbook --syntax-check -i $INVENTORIES_PATH $PLAYBOOK_PATH_FOR_ROLE_TEST + - *run_syntax_check allow_failure: false syntax-dependencies: stage: syntax-check - image: python:3.10.15-bullseye + image: $IMAGE_NAME_SYNTAX + variables: + ROLE_PATH: $PLAYBOOK_PATH_FOR_ROLE_DEPENDENCIES before_script: - - apt-get update && apt-get install -y python3-pip && apt-get clean && rm -rf /var/lib/apt/lists/* - - pip3 install -r ci-cd/requirements.txt + - *before_syntax_n_lint script: - echo "Running ansible-playbook --syntax-check tests at the role-> 'dependencies'" - - ansible-playbook --syntax-check -i $INVENTORIES_PATH $PLAYBOOK_PATH_FOR_ROLE_DEPENDENCIES + - *run_syntax_check allow_failure: false syntax-clone-repositories: stage: syntax-check - image: python:3.10.15-bullseye + image: $IMAGE_NAME_SYNTAX + variables: + ROLE_PATH: $PLAYBOOK_PATH_FOR_ROLE_CLONE_REPOSITORIES before_script: - - apt-get update && apt-get install -y python3-pip && apt-get clean && rm -rf /var/lib/apt/lists/* - - pip3 install -r ci-cd/requirements.txt + - *before_syntax_n_lint script: - echo "Running ansible-playbook --syntax-check tests at the role-> 'clone_repositories'" - - ansible-playbook --syntax-check -i $INVENTORIES_PATH $PLAYBOOK_PATH_FOR_ROLE_CLONE_REPOSITORIES + - *run_syntax_check allow_failure: false syntax-docker-images: stage: syntax-check - image: python:3.10.15-bullseye + image: $IMAGE_NAME_SYNTAX + variables: + ROLE_PATH: $PLAYBOOK_PATH_FOR_ROLE_DOCKER_IMAGES before_script: - - apt-get update && apt-get install -y python3-pip && apt-get clean && rm -rf /var/lib/apt/lists/* - - pip3 install -r ci-cd/requirements.txt + - *before_syntax_n_lint script: - echo "Running ansible-playbook --syntax-check tests at the role-> 'docker_images'" - - ansible-playbook --syntax-check -i $INVENTORIES_PATH $PLAYBOOK_PATH_FOR_ROLE_DOCKER_IMAGES + - *run_syntax_check allow_failure: false syntax-docker-containers: stage: syntax-check - image: python:3.10.15-bullseye + image: $IMAGE_NAME_SYNTAX + variables: + ROLE_PATH: $PLAYBOOK_PATH_FOR_ROLE_DOCKER_CONTAINERS before_script: - - apt-get update && apt-get install -y python3-pip && apt-get clean && rm -rf /var/lib/apt/lists/* - - pip3 install -r ci-cd/requirements.txt + - *before_syntax_n_lint script: - echo "Running ansible-playbook --syntax-check tests at the role-> 'docker_containers'" - - ansible-playbook --syntax-check -i $INVENTORIES_PATH $PLAYBOOK_PATH_FOR_ROLE_DOCKER_CONTAINERS + - *run_syntax_check allow_failure: false syntax-oh-my-bash: stage: syntax-check - image: python:3.10.15-bullseye + image: $IMAGE_NAME_SYNTAX + variables: + ROLE_PATH: $PLAYBOOK_PATH_FOR_ROLE_OH_MY_BASH before_script: - - apt-get update && apt-get install -y python3-pip && apt-get clean && rm -rf /var/lib/apt/lists/* - - pip3 install -r ci-cd/requirements.txt + - *before_syntax_n_lint script: - echo "Running ansible-playbook --syntax-check tests at the role-> 'docker_containers'" - - ansible-playbook --syntax-check -i $INVENTORIES_PATH $PLAYBOOK_PATH_FOR_ROLE_OH_MY_BASH + - *run_syntax_check allow_failure: false ### -### LINT-TESTS +### STAGE-LINT-TESTS ### lint-test: stage: lint-tests - image: python:3.10.15-bullseye + image: $IMAGE_NAME_LINT + variables: + ROLE_PATH: $PLAYBOOK_PATH_FOR_ROLE_TEST before_script: - - apt-get update && apt-get install -y python3-pip && apt-get clean && rm -rf /var/lib/apt/lists/* - - pip3 install -r ci-cd/requirements.txt + - *before_syntax_n_lint script: - echo "Running ansible-lint tests at the role-> 'test'" - - ansible-lint $PLAYBOOK_PATH_FOR_ROLE_TEST + - *run_lint allow_failure: false lint-dependencies: stage: lint-tests - image: python:3.10.15-bullseye + image: $IMAGE_NAME_LINT + variables: + ROLE_PATH: $PLAYBOOK_PATH_FOR_ROLE_DEPENDENCIES before_script: - - apt-get update && apt-get install -y python3-pip && apt-get clean && rm -rf /var/lib/apt/lists/* - - pip3 install -r ci-cd/requirements.txt + - *before_syntax_n_lint script: - echo "Running ansible-lint tests at the role-> 'dependencies'" - - ansible-lint $PLAYBOOK_PATH_FOR_ROLE_DEPENDENCIES + - *run_lint allow_failure: false lint-clone-repositories: stage: lint-tests - image: python:3.10.15-bullseye + image: $IMAGE_NAME_LINT + variables: + ROLE_PATH: $PLAYBOOK_PATH_FOR_ROLE_CLONE_REPOSITORIES before_script: - - apt-get update && apt-get install -y python3-pip && apt-get clean && rm -rf /var/lib/apt/lists/* - - pip3 install -r ci-cd/requirements.txt + - *before_syntax_n_lint script: - echo "Running ansible-lint tests at the role-> 'clone_repositories'" - - ansible-lint $PLAYBOOK_PATH_FOR_ROLE_CLONE_REPOSITORIES + - *run_lint allow_failure: false lint-docker-images: stage: lint-tests - image: python:3.10.15-bullseye + image: $IMAGE_NAME_LINT + variables: + ROLE_PATH: $PLAYBOOK_PATH_FOR_ROLE_DOCKER_IMAGES before_script: - - apt-get update && apt-get install -y python3-pip && apt-get clean && rm -rf /var/lib/apt/lists/* - - pip3 install -r ci-cd/requirements.txt + - *before_syntax_n_lint script: - echo "Running ansible-lint tests at the role-> 'docker_images'" - - ansible-lint $PLAYBOOK_PATH_FOR_ROLE_DOCKER_IMAGES + - *run_lint allow_failure: false lint-docker-containers: stage: lint-tests - image: python:3.10.15-bullseye + image: $IMAGE_NAME_LINT + variables: + ROLE_PATH: $PLAYBOOK_PATH_FOR_ROLE_DOCKER_CONTAINERS before_script: - - apt-get update && apt-get install -y python3-pip && apt-get clean && rm -rf /var/lib/apt/lists/* - - pip3 install -r ci-cd/requirements.txt + - *before_syntax_n_lint script: - echo "Running ansible-lint tests at the role-> 'docker_containers'" - - ansible-lint $PLAYBOOK_PATH_FOR_ROLE_DOCKER_CONTAINERS + - *run_lint allow_failure: false lint-oh-my-bash: stage: lint-tests - image: python:3.10.15-bullseye + image: $IMAGE_NAME_LINT + variables: + ROLE_PATH: $PLAYBOOK_PATH_FOR_ROLE_OH_MY_BASH before_script: - - apt-get update && apt-get install -y python3-pip && apt-get clean && rm -rf /var/lib/apt/lists/* - - pip3 install -r ci-cd/requirements.txt + - *before_syntax_n_lint script: - echo "Running ansible-lint tests at the role-> 'docker_containers'" - - ansible-lint $PLAYBOOK_PATH_FOR_ROLE_OH_MY_BASH + - *run_lint allow_failure: false ### -### molecule +### STAGE-MOLECULE --> At the moment, running DIND (docker in docker) at this instance is disable :( ### +# molecule-test: +# stage: molecule +# image: $IMAGE_NAME_MOLECULE +# ### AVAILABLE TAGS +# # https://docs.gitlab.com/ee/ci/runners/hosted_runners/linux.html#machine-types-available-for-linux---x86-64 +# tags: +# - saas-linux-small-amd64 +# # before_script: +# # # - apk add --no-cache python3 py3-pip +# # # - rm /usr/lib/python*/EXTERNALLY-MANAGED +# # # - python3 -m ensurepip +# # - pip3 install ansible ansible-lint molecule molecule-docker +# # - pip3 install --user "molecule-plugins[docker]" +# script: +# - echo "Running molecule tests at the role-> 'test'" +# - docker ps -a +# # - cd roles/test +# # - molecule test +# allow_failure: false + # molecule-test: # stage: molecule # # image: docker:latest # # image: docker:27.5.1-alpine3.21 -# image: docker:27.5.1-dind +# # image: docker:27.5.1-dind +# # image: geerlingguy/docker-ubuntu2204-ansible:latest +# image: $IMAGE_NAME_MOLECULE # before_script: -# - apk add --no-cache python3 py3-pip -# - rm /usr/lib/python*/EXTERNALLY-MANAGED -# - python3 -m ensurepip +# # - apk add --no-cache python3 py3-pip +# # - rm /usr/lib/python*/EXTERNALLY-MANAGED +# # - python3 -m ensurepip # - pip3 install ansible ansible-lint molecule molecule-docker # - pip3 install --user "molecule-plugins[docker]" # script: # - echo "Running ansible-lint tests at the role-> 'test'" # - docker ps -a -# - cd roles/test -# - molecule test +# # - cd roles/test +# # - molecule test # allow_failure: false # molecule-test: diff --git a/README.md b/README.md index ac1cdf8..c196eba 100644 --- a/README.md +++ b/README.md @@ -4,17 +4,19 @@ ## WIP - [x] Finish the roles for deploying the **c3InfoDesk Printer**. - - [x] dependencies - - [x] clone_repositories - - [x] docker_images - - [x] docker_containers -- [x] Set ansible-lint for the roles. -- [ ] Add molecule tests. + - [x] [dependencies](https://git.cccv.de/fejao/c3infodesk-deployment/-/tree/main/roles/dependencies) + - [x] [clone_repositories](https://git.cccv.de/fejao/c3infodesk-deployment/-/tree/main/roles/clone_repositories) + - [x] [docker_images](https://git.cccv.de/fejao/c3infodesk-deployment/-/tree/main/roles/docker_images) + - [x] [docker_containers](https://git.cccv.de/fejao/c3infodesk-deployment/-/tree/main/roles/docker_containers) + - [x] [oh_my_bash](https://git.cccv.de/fejao/c3infodesk-deployment/-/tree/main/roles/oh_my_bash) +- [x] Create molecule tests for the roles. - [x] [dependencies](https://git.cccv.de/fejao/c3infodesk-deployment/-/commit/c04809f7f0644f2cdb1e8affb02ed6c4b623252a) - [x] [clone_repositories](https://git.cccv.de/fejao/c3infodesk-deployment/-/commit/0b9aee5d2d9768b5f77494300e88857b9a3aceee) - [x] [docker_images](https://git.cccv.de/fejao/c3infodesk-deployment/-/commit/a4d532169beed8a18bed536bb1e9a346b6a7b5c0) - [x] [docker_containers](https://git.cccv.de/fejao/c3infodesk-deployment/-/commit/a4d532169beed8a18bed536bb1e9a346b6a7b5c0) - - [x] oh_my_bash + - [x] [oh_my_bash](https://git.cccv.de/fejao/c3infodesk-deployment/-/commit/6bf23eb4335ad92ba42b9d1872abf497aed735cc) +- [x] Set ansible-lint for the roles. +- [ ] Add molecule tests to CI-CD ## What is this? diff --git a/roles/clone_repositories/README.md b/roles/clone_repositories/README.md index f795998..358087b 100644 --- a/roles/clone_repositories/README.md +++ b/roles/clone_repositories/README.md @@ -1,4 +1,4 @@ -# clone-repositories role +# clone_repositories role This ansible-role for dealing with cloning the repositories necessary for deploying the system used from **c3infodesk**. diff --git a/roles/oh_my_bash/molecule/default/converge.yml b/roles/oh_my_bash/molecule/default/converge.yml index ccd0d7e..cf5b357 100644 --- a/roles/oh_my_bash/molecule/default/converge.yml +++ b/roles/oh_my_bash/molecule/default/converge.yml @@ -10,13 +10,6 @@ extensions: - 'yml' - # - name: MOLECULE | COVERGE | PRE-TASKS | VARIABLES | From -> ../../vars - # ansible.builtin.include_vars: - # dir: ../../vars - # depth: 1 - # extensions: - # - 'yml' - - name: MOLECULE | COVERGE | PRE-TASKS | VARIABLES | From -> ../../../../inventories/group_vars ansible.builtin.include_vars: dir: ../../../../inventories/group_vars diff --git a/roles/oh_my_bash/molecule/default/verify.yml b/roles/oh_my_bash/molecule/default/verify.yml index 5442dee..dfef6dc 100644 --- a/roles/oh_my_bash/molecule/default/verify.yml +++ b/roles/oh_my_bash/molecule/default/verify.yml @@ -51,10 +51,6 @@ failed_when: - not check_installed.stat.exists - # - name: MOLECULE | VERIFY | TEST | DEBUG | Oh-My-Bash installed. - # ansible.builtin.debug: - # msg: "{{ check_installed }}" - - name: MOLECULE | VERIFY | TEST | Oh-My-Bash is enabled. ansible.builtin.lineinfile: path: "{{ ansible_env.HOME }}/.bashrc" @@ -64,10 +60,6 @@ register: check_enabled failed_when: check_enabled.changed | bool - # - name: MOLECULE | VERIFY | TEST | DEBUG | Oh-My-Bash is enabled. - # ansible.builtin.debug: - # msg: "{{ check_enabled }}" - - name: MOLECULE | VERIFY | TEST | Theme is setted. ansible.builtin.lineinfile: path: "{{ ansible_env.HOME }}/.bashrc" diff --git a/roles/test/molecule/default/converge.yml b/roles/test/molecule/default/converge.yml index 7cbd7c0..9aa3642 100644 --- a/roles/test/molecule/default/converge.yml +++ b/roles/test/molecule/default/converge.yml @@ -1,5 +1,7 @@ --- - name: MOLECULE | Converge hosts: all - roles: - - role: test + tasks: + - name: MOLECULE | CONVERGE | Call the 'test' role. + ansible.builtin.include_role: + name: test -- GitLab