175 lines
6.0 KiB
YAML
175 lines
6.0 KiB
YAML
---
|
|
- 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
|