109 lines
3.7 KiB
YAML
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
|