--- - name: Set release name set_fact: artg_release: "{{ job.branch_override | default(artg_change.branch) | replace('stable/', '') }}" - name: print out the release name debug: var: artg_release - when: artg_release in ['master'] block: - name: Set DLRN distro (legacy distgit branch naming) set_fact: artg_distro: "rpm-{{ artg_release }}" - name: Set DLRN distro for branchless projects set_fact: artg_distro: "{{ release }}-rdo" when: - release is defined and release not in ['master'] - artg_change.project in artg_branchless_projects - name: Set DLRN distro (new stable branch naming scheme) set_fact: artg_distro: "{{ artg_release }}-rdo" when: artg_release not in ['master'] - name: Make sure /usr/share/rhn/RHN-ORG-TRUSTED-SSL-CERT exists (RHEL) shell: cmd: | export CERTPATH="/usr/share/rhn/RHN-ORG-TRUSTED-SSL-CERT" export CERTDIR=$(dirname $CERTPATH) [ ! -d $CERTDIR ] && mkdir -p $CERTDIR touch $CERTPATH become: true when: ansible_distribution in ['RedHat'] - name: Use local baseurl when using local mirrors set_fact: dlrn_baseurl: 'file:///tmp/fake-dlrn-repos' when: dlrn_use_local_mirrors|bool - name: Override projects.ini settings lineinfile: dest: '{{ build_repo_dir }}/DLRN/projects.ini' regexp: '{{ project_item.regexp }}' line: '{{ project_item.line }}' with_items: - {regexp: 'baseurl=.*', line: 'baseurl={{ dlrn_baseurl }}'} - {regexp: 'distro=.*', line: 'distro={{ artg_distro }}'} - {regexp: 'source=.*', line: 'source={{ artg_change.branch }}'} loop_control: loop_var: project_item when: osp_release is not defined - name: Override projects.ini settings for downstream lineinfile: dest: '{{ build_repo_dir }}/DLRN/projects.ini' regexp: '{{ project_item.regexp }}' line: '{{ project_item.line }}' with_items: - {regexp: 'baseurl=.*', line: 'baseurl={{ dlrn_baseurl }}'} - {regexp: 'distro=.*', line: 'distro={{ release }}-rdo'} - {regexp: 'source=.*', line: 'source={{ artg_change.branch }}'} loop_control: loop_var: project_item when: osp_release is defined - block: - name: Map project name to DLRN project name register: project_name_mapped shell: chdir: '{{ build_repo_dir }}/DLRN' cmd: | source '{{ build_repo_dir }}/dlrn-venv/bin/activate' set -xeo pipefail # {{ rdoinfo_repo_name }}/{{ rdoinfo_repo_name.split('info')[0] }}-full.yml will # return rdo-full.yml and for downstream is osp-full.yml. rdopkg findpkg -s '{{ artg_change.project | basename }}' \ -i {{ rdoinfo_repo_name }}/{{ rdoinfo_repo_name.split('info')[0] }}-full.yml | \ awk '/^name/{print $2}; {print "findpkg: " $0 > "/dev/stderr"}' changed_when: false failed_when: project_name_mapped.rc != 0 or not project_name_mapped.stdout rescue: - debug: msg: | WARNING: Got {{ project_name_mapped.rc }} result code trying to build {{ artg_change.project }} --- STDERR --- {{ project_name_mapped.stderr }} --- STDOUT --- {{ project_name_mapped.stdout }} - when: project_name_mapped is success block: - name: Append project name to package list set_fact: artg_rdo_packages: '{{ artg_rdo_packages }} + {{ [ project_name_mapped.stdout ] }}' - name: Check if project {{ project_name_mapped.stdout }} source already exist stat: path: '{{ build_repo_dir }}/DLRN/data/{{ project_name_mapped.stdout }}/.git' register: repo_status - name: Create data directory if doesn't exist yet file: path: "{{ build_repo_dir }}/DLRN/data/" state: directory - name: Copy from ready directories if configured command: > cp -raf {{ artg_repos_dir | dirname }}/{{ artg_change.project }} {{ build_repo_dir }}/DLRN/data/{{ project_name_mapped.stdout }} ignore_errors: true register: copy_dir when: artg_repos_dir is defined - name: Clone the gated change git: repo: '{{ artg_change.host }}/{{ artg_change.project }}' dest: '{{ build_repo_dir }}/DLRN/data/{{ project_name_mapped.stdout }}' refspec: '{{ artg_change.refspec }}' version: 'FETCH_HEAD' when: - >- (artg_repos_dir is not defined and not repo_status.stat.exists) or copy_dir is defined and copy_dir is failed - name: Cleanup and checkout the relevant branch vars: git_path: '{{ build_repo_dir }}/DLRN/data/{{ project_name_mapped.stdout }}' git_branch: '{{ artg_change.branch }}' shell: | set -eu pushd {{ git_path }} git clean -ffd git reset --hard HEAD git checkout {{ git_branch }} popd - name: Ensure distgit repo is absent, DLRN takes care of cloning based on config file: path: "{{ build_repo_dir }}/DLRN/data/{{ project_name_mapped.stdout }}_distro" state: absent - name: Clone the distgit change git: repo: '{{ artg_change.distgit.host }}/{{ artg_change.distgit.project }}' dest: '{{ build_repo_dir }}/DLRN/data/{{ project_name_mapped.stdout }}_distro' refspec: '{{ artg_change.distgit.refspec }}' version: 'FETCH_HEAD' accept_hostkey: true when: - artg_change.distgit is defined - artg_repos_dir is not defined or copy_dir is defined and copy_dir is failed - name: Generate DLRN Script template: src: run_dlrn.sh.j2 dest: "{{ build_repo_dir }}/run_dlrn.sh" mode: 0744 - name: Print info about building debug: msg: "Building change for {{ project_name_mapped.stdout|default('unknown') }}" - name: Run DLRN shell: > set -o pipefail && {{ build_repo_dir }}/run_dlrn.sh 2>&1 {{ timestamper_cmd }} >> {{ build_repo_dir }}/dlrn.log args: chdir: '{{ build_repo_dir }}' register: repo_built when: artg_build_one|bool