From 4bac77c5bb4e9dc7ef0b7610df021961ac594485 Mon Sep 17 00:00:00 2001 From: Fabien Boucher Date: Apr 02 2020 09:34:20 +0000 Subject: [PATCH 1/2] source_to_tarball: support source.clone_target_dir This change partially implements issue #61. Goal is to support source not stored in the same directory than the specfile. --- diff --git a/roles/source-to-tarball/tasks/main.yaml b/roles/source-to-tarball/tasks/main.yaml index d7d7bee..bce3ed4 100644 --- a/roles/source-to-tarball/tasks/main.yaml +++ b/roles/source-to-tarball/tasks/main.yaml @@ -1,4 +1,14 @@ --- +- name: Set package source directory + set_fact: + source_dir: "{{ ansible_user_dir }}/{{ zuul.project.src_dir }}" + when: source is not defined + +- name: Set package source directory + set_fact: + source_dir: "{{ansible_user_dir}}/{{ source.clone_target_dir }}" + when: source is defined + - name: Discover package name from specfile name shell: ls *.spec | sed 's/\.spec$//' args: @@ -15,9 +25,7 @@ - name: Detect version and release of source from git script: - cmd: > - files/detect-source-version.py - {{ ansible_user_dir }}/{{ zuul.project.src_dir }} + cmd: files/detect-source-version.py {{ source_dir }} register: cmd - name: Load json command output @@ -48,10 +56,10 @@ command: > tar -czf /tmp/HEAD.tgz --exclude .git - --transform s/^{{ zuul.project.src_dir|basename }}/{{ src_name|default(package_name) }}-{{ source_version }}/ - {{ zuul.project.src_dir|basename }} + --transform s/^{{ source_dir|basename }}/{{ src_name|default(package_name) }}-{{ source_version }}/ + {{ source_dir|basename }} args: - chdir: "{{ ansible_user_dir }}/{{ zuul.project.src_dir }}/.." + chdir: "{{ source_dir }}/.." - name: Move tarball in the project repository command: mv /tmp/HEAD.tgz {{ tarball }} From cbd9f80cec6c44145ec6c674d6ca0f1be5d62dd6 Mon Sep 17 00:00:00 2001 From: Fabien Boucher Date: Apr 02 2020 10:46:31 +0000 Subject: [PATCH 2/2] source_to_tarball: source_location, full implementation of #61 --- diff --git a/roles/source-to-tarball/tasks/main.yaml b/roles/source-to-tarball/tasks/main.yaml index bce3ed4..0341488 100644 --- a/roles/source-to-tarball/tasks/main.yaml +++ b/roles/source-to-tarball/tasks/main.yaml @@ -2,12 +2,21 @@ - name: Set package source directory set_fact: source_dir: "{{ ansible_user_dir }}/{{ zuul.project.src_dir }}" - when: source is not defined + when: source_location is not defined - name: Set package source directory set_fact: - source_dir: "{{ansible_user_dir}}/{{ source.clone_target_dir }}" - when: source is defined + source_dir: "{{ansible_user_dir}}/{{ source_location.clone_target_dir }}" + when: source_location is defined + +- name: Fetch package source + git: + repo: "{{ source_location.clone_url }}" + dest: "{{ source_dir }}" + version: master + when: + - source_location is defined + - source_location.clone_url is defined - name: Discover package name from specfile name shell: ls *.spec | sed 's/\.spec$//' diff --git a/zuul.d/jobs.yaml b/zuul.d/jobs.yaml index 31dfc08..fb5798a 100644 --- a/zuul.d/jobs.yaml +++ b/zuul.d/jobs.yaml @@ -32,6 +32,22 @@ build_from_source is set and discovered source name is failing leading to a %prep phase failure. + .. zuul:jobvar:: source_location + : default: undefined + + This is only useful when build_from_source is set. + This tells the job that the source to packaged is not + stored in the same repository and must be retrieved. + if set, the format must be an object with clone_target_dir + (mandatory) which is the directory where the job expects + to find the source to package and clone_url (optional) + that tells the job to fetch the source from a git url. + If the job adds the source repository as a required-projects + then clone_url is not needed. + eg. + {'clone_url': 'https://review.opendev.org/gear' + 'clone_target_dir': 'src/review.opendev.org/gear'} + .. zuul:jobvar:: repos : default: []