tripleo-quickstart-extras/roles/build-test-packages/tasks/dlrn-build.yml

109 lines
3.7 KiB
YAML

---
- name: Set release name
set_fact:
artg_release: "{{ artg_change.branch | replace('stable/', '') }}"
- name: Set DLRN distro (legacy distgit branch naming)
set_fact:
artg_distro: "rpm-{{ artg_release }}"
when: artg_release in ['master', 'mitaka']
- name: Set DLRN distro (new stable branch naming scheme)
set_fact:
artg_distro: "{{ artg_release }}-rdo"
when: artg_release not in ['master', 'mitaka']
- 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
- name: Map project name to DLRN project name
register: project_name_mapped
shell: >
source {{ build_repo_dir }}/dlrn-venv/bin/activate;
export PROJECT_NAME=$(echo {{ artg_change.project }} | sed "s|openstack/||");
rdopkg findpkg -s $PROJECT_NAME -l rdoinfo | grep ^name | awk '{print $2}'
args:
chdir: '{{ build_repo_dir }}/DLRN'
changed_when: false
- debug:
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
- name: Copy from ready directories if configured
command: >
cp -raf {{ artg_repos_dir }}/{{ artg_change.project|regex_replace('openstack[^/]*/', '') }}
{{ 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 or copy_dir is failed
- 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 and (artg_repos_dir is not defined or copy_dir is failed)
- 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 {{ project_name_mapped.stdout }} --local --info-repo rdoinfo --dev;
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: artg_build_one|bool