--- - name: Build osbuild rpms become: yes remote_user: ec2-user hosts: rpmbuilder gather_facts: no tasks: - name: Wait for hosts to be reachable ansible.builtin.wait_for_connection: delay: 60 timeout: 400 - name: Gather facts ansible.builtin.setup: - name: Add EPEL dnf: state: present name: https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm disable_gpg_check: yes - name: Disable RHUI repos become: yes shell: >- dnf config-manager \ --set-disabled rhel-9-baseos-rhui-rpms \ --set-disabled rhel-9-appstream-rhui-rpms \ --set-disabled rhui-client-config-server-9 - name: Enable rhsm repository management become: yes shell: >- subscription-manager config --rhsm.manage_repos 1 # RHEL mock templates don't work on RHUI, they use the CDN repos - name: Subscribe register: result retries: 5 until: result is success community.general.redhat_subscription: activationkey: "{{ RH_ACTIVATION_KEY }}" org_id: "{{ RH_ORG_ID }}" - name: Upgrade all packages package: name: "*" state: latest register: result retries: 5 until: result is success - name: Create rpmbuild directory file: path: "{{ item }}" state: directory with_items: - /home/ec2-user/rpmbuild - /home/ec2-user/rpmbuild/SOURCES - /home/ec2-user/rpmbuild/RPMS - name: Download osbuild-composer archive retries: 5 delay: 20 register: result until: result is success get_url: url: "https://github.com/osbuild/osbuild-composer/archive/{{ COMPOSER_COMMIT }}.tar.gz" dest: "/home/ec2-user/rpmbuild/SOURCES/osbuild-composer-{{ COMPOSER_COMMIT }}.tar.gz" - name: Download osbuild-composer spec retries: 5 delay: 20 register: result until: result is success get_url: url: "https://raw.githubusercontent.com/osbuild/osbuild-composer/{{ COMPOSER_COMMIT }}/osbuild-composer.spec" dest: /home/ec2-user/osbuild-composer.spec - name: Download osbuild archive retries: 5 delay: 20 register: result until: result is success get_url: url: "https://github.com/osbuild/osbuild/archive/{{ OSBUILD_COMMIT }}.tar.gz" dest: "/home/ec2-user/rpmbuild/SOURCES/osbuild-{{ OSBUILD_COMMIT }}.tar.gz" - name: Download osbuild spec retries: 5 delay: 20 register: result until: result is success get_url: url: "https://raw.githubusercontent.com/osbuild/osbuild/{{ OSBUILD_COMMIT }}/osbuild.spec" dest: /home/ec2-user/osbuild.spec - name: Install build tools retries: 5 delay: 20 register: result until: result is success package: name: - rpm-build - mock - createrepo_c state: present - name: Make osbuild srpm retries: 5 delay: 20 register: result until: result is success command: >- rpmbuild -bs --define "commit {{ OSBUILD_COMMIT }}" --define "_topdir /home/ec2-user/rpmbuild" --define "_srpmfilename %%{NAME}.srpm" /home/ec2-user/osbuild.spec - name: Mockbuild osbuild retries: 5 delay: 20 register: result until: result is success shell: >- mock -r "rhel-9-{{ ansible_architecture }}" --rebuild --define "commit {{ OSBUILD_COMMIT }}" --define "_rpmfilename %%{NAME}.rpm" --resultdir /home/ec2-user/rpmbuild/RPMS /home/ec2-user/rpmbuild/SRPMS/osbuild-*.src.rpm - name: Make osbuild-composer srpm retries: 5 delay: 20 register: result until: result is success command: >- rpmbuild -bs --define "commit {{ COMPOSER_COMMIT }}" --define "_topdir /home/ec2-user/rpmbuild" --define "_srpmfilename %%{NAME}.srpm" /home/ec2-user/osbuild-composer.spec - name: Mockbuild osbuild-composer retries: 5 delay: 20 register: result until: result is success shell: >- mock -r "rhel-9-{{ ansible_architecture }}" --rebuild --define "commit {{ COMPOSER_COMMIT }}" --define "_rpmfilename %%{NAME}.rpm" --resultdir /home/ec2-user/rpmbuild/RPMS /home/ec2-user/rpmbuild/SRPMS/osbuild-composer-*.src.rpm - name: Create a repository from the artifacts retries: 5 delay: 20 register: result until: result is success command: createrepo_c /home/ec2-user/rpmbuild/RPMS - name: Fetch rpms retries: 5 delay: 20 register: result until: result is success ansible.posix.synchronize: mode: pull src: /home/ec2-user/rpmbuild/RPMS dest: /osbuild-composer/templates/packer/ansible/roles/common/files/rpmbuild/{{ ansible_architecture }} - name: Unregister retries: 5 delay: 20 register: result until: result is success shell: >- subscription-manager unregister