From: Iker Pedrosa Date: Tue, 14 May 2024 10:49:28 +0000 (+0200) Subject: share/ansible: create roles X-Git-Tag: 4.17.0-rc1~104 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=df50348a285845e2605903295b9314ec237b7092;p=thirdparty%2Fshadow.git share/ansible: create roles Create `build_container` and `ci_run` roles and move the fedora target to them. Signed-off-by: Iker Pedrosa --- diff --git a/share/ansible/playbook.yml b/share/ansible/playbook.yml index 2325d9a90..95a4cb887 100644 --- a/share/ansible/playbook.yml +++ b/share/ansible/playbook.yml @@ -1,89 +1,13 @@ - name: Start build container hosts: localhost - tasks: - - name: Pull container image - containers.podman.podman_image: - name: registry.fedoraproject.org/fedora:latest - - - name: Create and start container - containers.podman.podman_container: - name: builder - state: started - image: fedora:latest - command: "sleep 1d" - - - name: Copy repo - ansible.builtin.shell: - podman cp ../../ builder:/usr/local/src + roles: + - role: build_container + vars: + container_image: registry.fedoraproject.org/fedora:latest - name: CI run hosts: builder connection: podman - tasks: - - name: Ensure dependencies are installed - ansible.builtin.dnf: - name: - - dnf-plugins-core - - libcmocka-devel - - systemd-devel - state: present - - - name: Ensure build dependencies are installed - ansible.builtin.command: - dnf builddep -y shadow-utils - register: dnf_result - changed_when: '"Nothing to do" not in dnf_result.stdout' - - - name: Build configuration - ansible.builtin.command: > - ./autogen.sh - --disable-account-tools-setuid - --enable-lastlog - --enable-logind=no - --enable-man - --enable-shadowgrp - --enable-shared - --with-audit - --with-bcrypt - --with-group-name-max-length=32 - --with-libpam - --with-selinux - --with-sha-crypt - --with-yescrypt - --without-libbsd - --without-libcrack - --without-sssd - args: - chdir: /usr/local/src/shadow/ - ignore_errors: true - - - name: Build - ansible.builtin.shell: - make -Orecurse -j4 > build.log - args: - chdir: /usr/local/src/shadow/ - ignore_errors: true - - - name: Run unit-tests - ansible.builtin.command: - make check - args: - chdir: /usr/local/src/shadow/ - ignore_errors: true - - - name: Install - ansible.builtin.command: - make install - args: - chdir: /usr/local/src/shadow/ - ignore_errors: true - - - name: Copy shadow repo - ansible.builtin.fetch: - src: '{{ item }}' - dest: ./build-out/ - with_items: - - "/usr/local/src/shadow/config.log" - - "/usr/local/src/shadow/config.h" - - "/usr/local/src/shadow/build.log" - - "/usr/local/src/shadow/tests/unit/test-suite.log" + gather_facts: false + roles: + - role: ci_run diff --git a/share/ansible/roles/build_container/README.md b/share/ansible/roles/build_container/README.md new file mode 100644 index 000000000..e55598a19 --- /dev/null +++ b/share/ansible/roles/build_container/README.md @@ -0,0 +1,28 @@ +Role Name +========= + +Build container images. + +Role Variables +-------------- + +* `image[distribution]` defines the container image URL. + +Example Playbook +---------------- + +Usage example: + + - hosts: localhost + roles: + - role: build_container + +License +------- + +BSD + +Author Information +------------------ + +Iker Pedrosa diff --git a/share/ansible/roles/build_container/tasks/main.yml b/share/ansible/roles/build_container/tasks/main.yml new file mode 100644 index 000000000..f7d3dbc56 --- /dev/null +++ b/share/ansible/roles/build_container/tasks/main.yml @@ -0,0 +1,20 @@ +--- +# tasks file for build_container +- name: Pull container image + containers.podman.podman_image: + name: '{{ container_image }}' + +- name: Create and start container + containers.podman.podman_container: + name: builder + state: started + image: '{{ container_image }}' + command: "sleep 1d" + +- name: Create repo + ansible.builtin.shell: + podman exec builder mkdir -p /usr/local/src + +- name: Copy repo + ansible.builtin.shell: + podman cp ../../ builder:/usr/local/src/shadow diff --git a/share/ansible/roles/ci_run/README.md b/share/ansible/roles/ci_run/README.md new file mode 100644 index 000000000..bc74f810d --- /dev/null +++ b/share/ansible/roles/ci_run/README.md @@ -0,0 +1,25 @@ +Role Name +========= + +Build, install and test package. + +Example Playbook +---------------- + +Usage example: + + - hosts: builder + connection: podman + gather_facts: false + roles: + - role: ci_run + +License +------- + +BSD + +Author Information +------------------ + +Iker Pedrosa diff --git a/share/ansible/roles/ci_run/tasks/main.yml b/share/ansible/roles/ci_run/tasks/main.yml new file mode 100644 index 000000000..c477a8305 --- /dev/null +++ b/share/ansible/roles/ci_run/tasks/main.yml @@ -0,0 +1,69 @@ +--- +# tasks file for ci_run +- name: Ensure dependencies are installed + ansible.builtin.dnf: + name: + - dnf-plugins-core + - libcmocka-devel + - systemd-devel + state: present + +- name: Ensure build dependencies are installed + ansible.builtin.command: + dnf builddep -y shadow-utils + register: dnf_result + changed_when: '"Nothing to do" not in dnf_result.stdout' + +- name: Build configuration + ansible.builtin.command: > + ./autogen.sh + --disable-account-tools-setuid + --enable-lastlog + --enable-logind=no + --enable-man + --enable-shadowgrp + --enable-shared + --with-audit + --with-bcrypt + --with-group-name-max-length=32 + --with-libpam + --with-selinux + --with-sha-crypt + --with-yescrypt + --without-libbsd + --without-libcrack + --without-sssd + args: + chdir: /usr/local/src/shadow/ + ignore_errors: true + +- name: Build + ansible.builtin.shell: + make -Orecurse -j4 > build.log + args: + chdir: /usr/local/src/shadow/ + ignore_errors: true + +- name: Run unit-tests + ansible.builtin.command: + make check + args: + chdir: /usr/local/src/shadow/ + ignore_errors: true + +- name: Install + ansible.builtin.command: + make install + args: + chdir: /usr/local/src/shadow/ + ignore_errors: true + +- name: Copy shadow repo + ansible.builtin.fetch: + src: '{{ item }}' + dest: ./build-out/ + with_items: + - "/usr/local/src/shadow/config.log" + - "/usr/local/src/shadow/config.h" + - "/usr/local/src/shadow/build.log" + - "/usr/local/src/shadow/tests/unit/test-suite.log"