diff --git a/roles/build-test-packages/README.md b/roles/build-test-packages/README.md index c5cba437b..7681282d2 100644 --- a/roles/build-test-packages/README.md +++ b/roles/build-test-packages/README.md @@ -32,6 +32,9 @@ Role Variables to skip projects that DLRN cannot build. * `artg_repos_dir` -- Root directory which contains project directories with sources for build. +* `artg_build_one` -- Boolean to indicate if dlrn should build one package at a + time. If set to false, dlrn will be run to build all the required packages + in one invocation of dlrn. * `dlrn_target` -- Target for the DLRN build Can be something like centos or fedora. Defaults to centos. * `dlrn_baseurl` -- URL used by DLRN to get the repo definitions when building diff --git a/roles/build-test-packages/defaults/main.yml b/roles/build-test-packages/defaults/main.yml index 079cd5c17..96b03b0b4 100644 --- a/roles/build-test-packages/defaults/main.yml +++ b/roles/build-test-packages/defaults/main.yml @@ -5,6 +5,7 @@ build_repo_dir: "{{ ansible_user_dir }}" artg_dlrn_repo_url: "https://github.com/openstack-packages/DLRN.git" artg_rdoinfo_repo_url: "https://github.com/redhat-openstack/rdoinfo" artg_compressed_gating_repo: "/home/stack/gating_repo.tar.gz" +artg_build_one: True dlrn_target: centos dlrn_cleanup: false dlrn_baseurl: "https://trunk.rdoproject.org/centos7/" diff --git a/roles/build-test-packages/tasks/dlrn-build.yml b/roles/build-test-packages/tasks/dlrn-build.yml index 4fe8cbd6e..4fb4f7e7b 100644 --- a/roles/build-test-packages/tasks/dlrn-build.yml +++ b/roles/build-test-packages/tasks/dlrn-build.yml @@ -43,8 +43,17 @@ msg: "WARNING: Unable to build {{ artg_change.project }}. No pkg found." when: project_name_mapped.stdout == '' +- name: Ensure artg_rdo_packages is defined + set_fact: + artg_rdo_packages: [] + when: artg_rdo_packages is not defined + - when: project_name_mapped.stdout != '' block: + - name: Append project name to package list + set_fact: + artg_rdo_packages: '{{ artg_rdo_packages }} + {{ [ project_name_mapped.stdout ] }}' + - name: Create data directory if doesn't exist yet file: path="{{ build_repo_dir }}/DLRN/data/" state=directory @@ -95,4 +104,5 @@ args: chdir: '{{ build_repo_dir }}/DLRN' register: repo_built + when: artg_build_one|bool diff --git a/roles/build-test-packages/tasks/main.yml b/roles/build-test-packages/tasks/main.yml index 1b9e9c15b..9d0cb3515 100644 --- a/roles/build-test-packages/tasks/main.yml +++ b/roles/build-test-packages/tasks/main.yml @@ -154,6 +154,31 @@ - item.project not in artg_skipped_projects - release in item.branch +- name: Run DLRN + shell: > + set +e; + source {{ build_repo_dir }}/dlrn-venv/bin/activate; + while true; do + dlrn --config-file projects.ini --head-only --package-name {{ artg_rdo_packages|join(' --package-name ') }} --local --info-repo rdoinfo --dev --order; + if [ $? -eq 0 ]; then + # SUCCESS + break; + elif [ $? -eq 1 ]; then + # FAILED + exit 1; + elif [ $? -eq 2 ]; then + # RETRY + continue; + fi; + # Unexpected DLRN return code + exit $?; + done; + args: + chdir: '{{ build_repo_dir }}/DLRN' + register: repo_built + when: not artg_build_one|bool + + - block: - name: Create a directory to hold the rpms file: