[libvirt] [jenkins-ci PATCH 00/12] lcitool: Add 'build' action

Also known as [secret feature redacted] :) This will be mostly useful for developers wanting to validate their changes locally before posting patches, but it will also allow CentOS CI maintainers to prime new guests before adding them to Jenkins, thus avoiding the usual dance of starting and cancelling several builds manually. We duplicate quite a bit of information to implement this: that's unfortunate, and I'll be looking into ways to get rid of such duplication down the line, but IMHO the feature is useful enough that it's better to have it out there in its current state rather than witholding it until a less verbose implementation has been figured out. Dependencies between projects are still missing, so if you want to build eg. libvirt-glib you'll have to take care of building libvirt first yourself or face a failure. The first few patches (1-5) tweak the Jenkins jobs and projects to bring them to a point where they can be translated into Ansible tasks almost verbatim; the remaining ones perform such translation and implement the necessary Python glue. Andrea Bolognani (12): projects: Add default machines for libvirt-dbus jobs: Rename git-url -> git_url jobs: Remove archive_format from defaults jobs: Move some parameters from jobs to defaults jobs: Declare empty values consistently guests: Add build jobs guests: Add build projects guests: Add build playbook lcitool: make playbook execution generic lcitool: Add 'build' action lcitool: Support building arbitrary branches lcitool: Document build action guests/README.markdown | 19 +++ guests/lcitool | 109 ++++++++++-------- .../build/jobs/autotools-build-job.yml | 15 +++ .../build/jobs/autotools-check-job.yml | 16 +++ .../build/jobs/autotools-rpm-job.yml | 17 +++ .../build/jobs/autotools-syntax-check-job.yml | 12 ++ guests/playbooks/build/jobs/defaults.yml | 33 ++++++ .../build/jobs/generic-build-job.yml | 11 ++ .../build/jobs/generic-check-job.yml | 11 ++ .../playbooks/build/jobs/generic-rpm-job.yml | 11 ++ .../build/jobs/generic-syntax-check-job.yml | 11 ++ guests/playbooks/build/jobs/go-build-job.yml | 11 ++ guests/playbooks/build/jobs/go-check-job.yml | 11 ++ .../build/jobs/perl-modulebuild-build-job.yml | 13 +++ .../build/jobs/perl-modulebuild-check-job.yml | 11 ++ .../build/jobs/perl-modulebuild-rpm-job.yml | 16 +++ guests/playbooks/build/jobs/prepare.yml | 19 +++ .../build/jobs/python-distutils-build-job.yml | 13 +++ .../build/jobs/python-distutils-check-job.yml | 11 ++ .../build/jobs/python-distutils-rpm-job.yml | 12 ++ guests/playbooks/build/main.yml | 16 +++ guests/playbooks/build/projects/libosinfo.yml | 36 ++++++ .../playbooks/build/projects/libvirt-cim.yml | 10 ++ .../playbooks/build/projects/libvirt-dbus.yml | 28 +++++ .../playbooks/build/projects/libvirt-glib.yml | 38 ++++++ .../build/projects/libvirt-go-xml.yml | 13 +++ .../playbooks/build/projects/libvirt-go.yml | 13 +++ .../playbooks/build/projects/libvirt-perl.yml | 19 +++ .../build/projects/libvirt-python.yml | 13 +++ .../build/projects/libvirt-sandbox.yml | 23 ++++ .../playbooks/build/projects/libvirt-tck.yml | 23 ++++ guests/playbooks/build/projects/libvirt.yml | 52 +++++++++ .../build/projects/osinfo-db-tools.yml | 36 ++++++ guests/playbooks/build/projects/osinfo-db.yml | 25 ++++ .../playbooks/build/projects/virt-manager.yml | 34 ++++++ .../playbooks/build/projects/virt-viewer.yml | 38 ++++++ jobs/autotools.yaml | 3 +- jobs/defaults.yaml | 8 +- jobs/generic.yaml | 3 +- jobs/go.yaml | 3 +- jobs/perl-modulebuild.yaml | 3 +- jobs/python-distutils.yaml | 3 +- projects/libosinfo.yaml | 3 +- projects/libvirt-cim.yaml | 3 +- projects/libvirt-dbus.yaml | 18 +-- projects/libvirt-glib.yaml | 3 +- projects/libvirt-go-xml.yaml | 3 +- projects/libvirt-go.yaml | 3 +- projects/libvirt-perl.yaml | 3 +- projects/libvirt-python.yaml | 3 +- projects/libvirt-sandbox.yaml | 3 +- projects/libvirt-tck.yaml | 3 +- projects/libvirt.yaml | 2 +- projects/osinfo-db-tools.yaml | 3 +- projects/osinfo-db.yaml | 2 +- projects/virt-manager.yaml | 3 +- projects/virt-viewer.yaml | 3 +- 57 files changed, 798 insertions(+), 82 deletions(-) create mode 100644 guests/playbooks/build/jobs/autotools-build-job.yml create mode 100644 guests/playbooks/build/jobs/autotools-check-job.yml create mode 100644 guests/playbooks/build/jobs/autotools-rpm-job.yml create mode 100644 guests/playbooks/build/jobs/autotools-syntax-check-job.yml create mode 100644 guests/playbooks/build/jobs/defaults.yml create mode 100644 guests/playbooks/build/jobs/generic-build-job.yml create mode 100644 guests/playbooks/build/jobs/generic-check-job.yml create mode 100644 guests/playbooks/build/jobs/generic-rpm-job.yml create mode 100644 guests/playbooks/build/jobs/generic-syntax-check-job.yml create mode 100644 guests/playbooks/build/jobs/go-build-job.yml create mode 100644 guests/playbooks/build/jobs/go-check-job.yml create mode 100644 guests/playbooks/build/jobs/perl-modulebuild-build-job.yml create mode 100644 guests/playbooks/build/jobs/perl-modulebuild-check-job.yml create mode 100644 guests/playbooks/build/jobs/perl-modulebuild-rpm-job.yml create mode 100644 guests/playbooks/build/jobs/prepare.yml create mode 100644 guests/playbooks/build/jobs/python-distutils-build-job.yml create mode 100644 guests/playbooks/build/jobs/python-distutils-check-job.yml create mode 100644 guests/playbooks/build/jobs/python-distutils-rpm-job.yml create mode 100644 guests/playbooks/build/main.yml create mode 100644 guests/playbooks/build/projects/libosinfo.yml create mode 100644 guests/playbooks/build/projects/libvirt-cim.yml create mode 100644 guests/playbooks/build/projects/libvirt-dbus.yml create mode 100644 guests/playbooks/build/projects/libvirt-glib.yml create mode 100644 guests/playbooks/build/projects/libvirt-go-xml.yml create mode 100644 guests/playbooks/build/projects/libvirt-go.yml create mode 100644 guests/playbooks/build/projects/libvirt-perl.yml create mode 100644 guests/playbooks/build/projects/libvirt-python.yml create mode 100644 guests/playbooks/build/projects/libvirt-sandbox.yml create mode 100644 guests/playbooks/build/projects/libvirt-tck.yml create mode 100644 guests/playbooks/build/projects/libvirt.yml create mode 100644 guests/playbooks/build/projects/osinfo-db-tools.yml create mode 100644 guests/playbooks/build/projects/osinfo-db.yml create mode 100644 guests/playbooks/build/projects/virt-manager.yml create mode 100644 guests/playbooks/build/projects/virt-viewer.yml -- 2.17.1

This doesn't change the results but brings it more in line with how other projects are defined and will help us out later. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- projects/libvirt-dbus.yaml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/projects/libvirt-dbus.yaml b/projects/libvirt-dbus.yaml index c12a769..e6d8bb4 100644 --- a/projects/libvirt-dbus.yaml +++ b/projects/libvirt-dbus.yaml @@ -1,20 +1,20 @@ - project: name: libvirt-dbus + machines: + - libvirt-centos-7 + - libvirt-debian-9 + - libvirt-fedora-27 + - libvirt-fedora-28 + - libvirt-fedora-rawhide + - libvirt-freebsd-10 + - libvirt-freebsd-11 title: Libvirt D-Bus archive_format: xz git-url: https://github.com/libvirt/libvirt-dbus.git jobs: - autotools-build-job: parent_jobs: 'libvirt-glib-master-build' - machines: - - libvirt-centos-7 - - libvirt-debian-9 - - libvirt-fedora-27 - - libvirt-fedora-28 - - libvirt-fedora-rawhide - - libvirt-freebsd-10 - - libvirt-freebsd-11 - autotools-check-job: parent_jobs: 'libvirt-dbus-master-build' machines: -- 2.17.1

Other user-defined variables use underscores as separator instead of dashes; this change will also help us out later. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- jobs/autotools.yaml | 2 +- jobs/generic.yaml | 2 +- jobs/go.yaml | 2 +- jobs/perl-modulebuild.yaml | 2 +- jobs/python-distutils.yaml | 2 +- projects/libosinfo.yaml | 2 +- projects/libvirt-cim.yaml | 2 +- projects/libvirt-dbus.yaml | 2 +- projects/libvirt-glib.yaml | 2 +- projects/libvirt-go-xml.yaml | 2 +- projects/libvirt-go.yaml | 2 +- projects/libvirt-perl.yaml | 2 +- projects/libvirt-python.yaml | 2 +- projects/libvirt-sandbox.yaml | 2 +- projects/libvirt-tck.yaml | 2 +- projects/libvirt.yaml | 2 +- projects/osinfo-db-tools.yaml | 2 +- projects/osinfo-db.yaml | 2 +- projects/virt-manager.yaml | 2 +- projects/virt-viewer.yaml | 2 +- 20 files changed, 20 insertions(+), 20 deletions(-) diff --git a/jobs/autotools.yaml b/jobs/autotools.yaml index c1d0f27..ffcffcf 100644 --- a/jobs/autotools.yaml +++ b/jobs/autotools.yaml @@ -21,7 +21,7 @@ num-to-keep: 1000 scm: - git: - url: '{git-url}' + url: '{git_url}' branches: - origin/{branch} clean: diff --git a/jobs/generic.yaml b/jobs/generic.yaml index 6c59c63..48bec23 100644 --- a/jobs/generic.yaml +++ b/jobs/generic.yaml @@ -21,7 +21,7 @@ num-to-keep: 1000 scm: - git: - url: '{git-url}' + url: '{git_url}' branches: - origin/{branch} clean: diff --git a/jobs/go.yaml b/jobs/go.yaml index 10518c4..77c931b 100644 --- a/jobs/go.yaml +++ b/jobs/go.yaml @@ -21,7 +21,7 @@ num-to-keep: 1000 scm: - git: - url: '{git-url}' + url: '{git_url}' branches: - origin/{branch} clean: diff --git a/jobs/perl-modulebuild.yaml b/jobs/perl-modulebuild.yaml index 934b216..6bded5e 100644 --- a/jobs/perl-modulebuild.yaml +++ b/jobs/perl-modulebuild.yaml @@ -21,7 +21,7 @@ num-to-keep: 1000 scm: - git: - url: '{git-url}' + url: '{git_url}' branches: - origin/{branch} clean: diff --git a/jobs/python-distutils.yaml b/jobs/python-distutils.yaml index 0b20b17..b5dc995 100644 --- a/jobs/python-distutils.yaml +++ b/jobs/python-distutils.yaml @@ -21,7 +21,7 @@ num-to-keep: 1000 scm: - git: - url: '{git-url}' + url: '{git_url}' branches: - origin/{branch} clean: diff --git a/projects/libosinfo.yaml b/projects/libosinfo.yaml index 22c957e..614eb63 100644 --- a/projects/libosinfo.yaml +++ b/projects/libosinfo.yaml @@ -3,7 +3,7 @@ name: libosinfo machines: '{all_machines}' title: libosinfo - git-url: https://gitlab.com/libosinfo/libosinfo.git + git_url: https://gitlab.com/libosinfo/libosinfo.git jobs: - autotools-build-job: parent_jobs: 'osinfo-db-master-build' diff --git a/projects/libvirt-cim.yaml b/projects/libvirt-cim.yaml index c6a7a6d..027c31d 100644 --- a/projects/libvirt-cim.yaml +++ b/projects/libvirt-cim.yaml @@ -3,7 +3,7 @@ name: libvirt-cim machines: '{rpm_machines}' title: libvirt CIM - git-url: https://github.com/libvirt/libvirt-cim.git + git_url: https://github.com/libvirt/libvirt-cim.git jobs: - autotools-build-job: parent_jobs: 'libvirt-master-build' diff --git a/projects/libvirt-dbus.yaml b/projects/libvirt-dbus.yaml index e6d8bb4..c42818c 100644 --- a/projects/libvirt-dbus.yaml +++ b/projects/libvirt-dbus.yaml @@ -11,7 +11,7 @@ - libvirt-freebsd-11 title: Libvirt D-Bus archive_format: xz - git-url: https://github.com/libvirt/libvirt-dbus.git + git_url: https://github.com/libvirt/libvirt-dbus.git jobs: - autotools-build-job: parent_jobs: 'libvirt-glib-master-build' diff --git a/projects/libvirt-glib.yaml b/projects/libvirt-glib.yaml index f61ca1e..dd2ba0c 100644 --- a/projects/libvirt-glib.yaml +++ b/projects/libvirt-glib.yaml @@ -3,7 +3,7 @@ name: libvirt-glib machines: '{all_machines}' title: Libvirt GLib - git-url: https://github.com/libvirt/libvirt-glib.git + git_url: https://github.com/libvirt/libvirt-glib.git jobs: - autotools-build-job: parent_jobs: 'libvirt-master-build' diff --git a/projects/libvirt-go-xml.yaml b/projects/libvirt-go-xml.yaml index 6eb7ef0..4e44561 100644 --- a/projects/libvirt-go-xml.yaml +++ b/projects/libvirt-go-xml.yaml @@ -3,7 +3,7 @@ name: libvirt-go-xml machines: '{all_machines}' title: Libvirt Go XML - git-url: https://github.com/libvirt/libvirt-go-xml.git + git_url: https://github.com/libvirt/libvirt-go-xml.git jobs: - go-build-job: parent_jobs: 'libvirt-master-build' diff --git a/projects/libvirt-go.yaml b/projects/libvirt-go.yaml index 0495374..7046dab 100644 --- a/projects/libvirt-go.yaml +++ b/projects/libvirt-go.yaml @@ -3,7 +3,7 @@ name: libvirt-go machines: '{all_machines}' title: Libvirt Go - git-url: https://github.com/libvirt/libvirt-go.git + git_url: https://github.com/libvirt/libvirt-go.git jobs: - go-build-job: parent_jobs: 'libvirt-master-build' diff --git a/projects/libvirt-perl.yaml b/projects/libvirt-perl.yaml index 956ba93..8426a67 100644 --- a/projects/libvirt-perl.yaml +++ b/projects/libvirt-perl.yaml @@ -3,7 +3,7 @@ name: libvirt-perl machines: '{all_machines}' title: Libvirt Perl - git-url: https://github.com/libvirt/libvirt-perl.git + git_url: https://github.com/libvirt/libvirt-perl.git jobs: - perl-modulebuild-build-job: parent_jobs: 'libvirt-master-build' diff --git a/projects/libvirt-python.yaml b/projects/libvirt-python.yaml index fdc55e0..69c1e17 100644 --- a/projects/libvirt-python.yaml +++ b/projects/libvirt-python.yaml @@ -3,7 +3,7 @@ name: libvirt-python machines: '{all_machines}' title: Libvirt Python - git-url: https://github.com/libvirt/libvirt-python.git + git_url: https://github.com/libvirt/libvirt-python.git jobs: - python-distutils-build-job: parent_jobs: 'libvirt-master-build' diff --git a/projects/libvirt-sandbox.yaml b/projects/libvirt-sandbox.yaml index 518080a..23f28fe 100644 --- a/projects/libvirt-sandbox.yaml +++ b/projects/libvirt-sandbox.yaml @@ -7,7 +7,7 @@ - libvirt-fedora-28 - libvirt-fedora-rawhide title: Libvirt Sandbox - git-url: https://github.com/libvirt/libvirt-sandbox.git + git_url: https://github.com/libvirt/libvirt-sandbox.git jobs: - autotools-build-job: parent_jobs: 'libvirt-glib-master-build' diff --git a/projects/libvirt-tck.yaml b/projects/libvirt-tck.yaml index c406fda..5c940d7 100644 --- a/projects/libvirt-tck.yaml +++ b/projects/libvirt-tck.yaml @@ -10,7 +10,7 @@ - libvirt-freebsd-10 - libvirt-freebsd-11 title: Libvirt TCK - git-url: https://github.com/libvirt/libvirt-tck.git + git_url: https://github.com/libvirt/libvirt-tck.git jobs: - perl-modulebuild-build-job: parent_jobs: 'libvirt-perl-master-build' diff --git a/projects/libvirt.yaml b/projects/libvirt.yaml index c64ac5b..68aa284 100644 --- a/projects/libvirt.yaml +++ b/projects/libvirt.yaml @@ -4,7 +4,7 @@ machines: '{all_machines}' title: Libvirt archive_format: xz - git-url: https://github.com/libvirt/libvirt.git + git_url: https://github.com/libvirt/libvirt.git jobs: - autotools-build-job: parent_jobs: diff --git a/projects/osinfo-db-tools.yaml b/projects/osinfo-db-tools.yaml index d4cef11..ccc960b 100644 --- a/projects/osinfo-db-tools.yaml +++ b/projects/osinfo-db-tools.yaml @@ -3,7 +3,7 @@ name: osinfo-db-tools machines: '{all_machines}' title: osinfo database tools - git-url: https://gitlab.com/libosinfo/osinfo-db-tools.git + git_url: https://gitlab.com/libosinfo/osinfo-db-tools.git jobs: - autotools-build-job: parent_jobs: diff --git a/projects/osinfo-db.yaml b/projects/osinfo-db.yaml index 141a373..8746eea 100644 --- a/projects/osinfo-db.yaml +++ b/projects/osinfo-db.yaml @@ -4,7 +4,7 @@ machines: '{all_machines}' title: osinfo database archive_format: xz - git-url: https://gitlab.com/libosinfo/osinfo-db.git + git_url: https://gitlab.com/libosinfo/osinfo-db.git jobs: - generic-build-job: parent_jobs: 'osinfo-db-tools-master-build' diff --git a/projects/virt-manager.yaml b/projects/virt-manager.yaml index 84a95a6..3921a68 100644 --- a/projects/virt-manager.yaml +++ b/projects/virt-manager.yaml @@ -9,7 +9,7 @@ - libvirt-freebsd-10 - libvirt-freebsd-11 title: Virtual Machine Manager - git-url: https://github.com/virt-manager/virt-manager.git + git_url: https://github.com/virt-manager/virt-manager.git jobs: - python-distutils-build-job: parent_jobs: diff --git a/projects/virt-viewer.yaml b/projects/virt-viewer.yaml index e68a23b..1678d7c 100644 --- a/projects/virt-viewer.yaml +++ b/projects/virt-viewer.yaml @@ -3,7 +3,7 @@ name: virt-viewer machines: '{all_machines}' title: Virt Viewer - git-url: https://pagure.io/virt-viewer.git + git_url: https://pagure.io/virt-viewer.git jobs: - autotools-build-job: parent_jobs: 'libvirt-glib-master-build' -- 2.17.1

Instead of defining a default and overriding it on a case-by-case basis, always define archive_format at the project level. This adds a bit of duplication, but it's consistent with how we define other metadata for projects and it will help us out later. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- jobs/defaults.yaml | 1 - projects/libosinfo.yaml | 1 + projects/libvirt-cim.yaml | 1 + projects/libvirt-glib.yaml | 1 + projects/libvirt-go-xml.yaml | 1 + projects/libvirt-go.yaml | 1 + projects/libvirt-perl.yaml | 1 + projects/libvirt-python.yaml | 1 + projects/libvirt-sandbox.yaml | 1 + projects/libvirt-tck.yaml | 1 + projects/osinfo-db-tools.yaml | 1 + projects/virt-manager.yaml | 1 + projects/virt-viewer.yaml | 1 + 13 files changed, 12 insertions(+), 1 deletion(-) diff --git a/jobs/defaults.yaml b/jobs/defaults.yaml index eb04f32..de56226 100644 --- a/jobs/defaults.yaml +++ b/jobs/defaults.yaml @@ -20,7 +20,6 @@ - libvirt-fedora-rawhide mingw_machines: - libvirt-fedora-rawhide - archive_format: gz global_env: | local_env: | mingw32_local_env: | diff --git a/projects/libosinfo.yaml b/projects/libosinfo.yaml index 614eb63..55a4817 100644 --- a/projects/libosinfo.yaml +++ b/projects/libosinfo.yaml @@ -3,6 +3,7 @@ name: libosinfo machines: '{all_machines}' title: libosinfo + archive_format: gz git_url: https://gitlab.com/libosinfo/libosinfo.git jobs: - autotools-build-job: diff --git a/projects/libvirt-cim.yaml b/projects/libvirt-cim.yaml index 027c31d..6d524df 100644 --- a/projects/libvirt-cim.yaml +++ b/projects/libvirt-cim.yaml @@ -3,6 +3,7 @@ name: libvirt-cim machines: '{rpm_machines}' title: libvirt CIM + archive_format: gz git_url: https://github.com/libvirt/libvirt-cim.git jobs: - autotools-build-job: diff --git a/projects/libvirt-glib.yaml b/projects/libvirt-glib.yaml index dd2ba0c..993024a 100644 --- a/projects/libvirt-glib.yaml +++ b/projects/libvirt-glib.yaml @@ -3,6 +3,7 @@ name: libvirt-glib machines: '{all_machines}' title: Libvirt GLib + archive_format: gz git_url: https://github.com/libvirt/libvirt-glib.git jobs: - autotools-build-job: diff --git a/projects/libvirt-go-xml.yaml b/projects/libvirt-go-xml.yaml index 4e44561..7e6e090 100644 --- a/projects/libvirt-go-xml.yaml +++ b/projects/libvirt-go-xml.yaml @@ -3,6 +3,7 @@ name: libvirt-go-xml machines: '{all_machines}' title: Libvirt Go XML + archive_format: gz git_url: https://github.com/libvirt/libvirt-go-xml.git jobs: - go-build-job: diff --git a/projects/libvirt-go.yaml b/projects/libvirt-go.yaml index 7046dab..d90339a 100644 --- a/projects/libvirt-go.yaml +++ b/projects/libvirt-go.yaml @@ -3,6 +3,7 @@ name: libvirt-go machines: '{all_machines}' title: Libvirt Go + archive_format: gz git_url: https://github.com/libvirt/libvirt-go.git jobs: - go-build-job: diff --git a/projects/libvirt-perl.yaml b/projects/libvirt-perl.yaml index 8426a67..dbb6caf 100644 --- a/projects/libvirt-perl.yaml +++ b/projects/libvirt-perl.yaml @@ -3,6 +3,7 @@ name: libvirt-perl machines: '{all_machines}' title: Libvirt Perl + archive_format: gz git_url: https://github.com/libvirt/libvirt-perl.git jobs: - perl-modulebuild-build-job: diff --git a/projects/libvirt-python.yaml b/projects/libvirt-python.yaml index 69c1e17..05eea41 100644 --- a/projects/libvirt-python.yaml +++ b/projects/libvirt-python.yaml @@ -3,6 +3,7 @@ name: libvirt-python machines: '{all_machines}' title: Libvirt Python + archive_format: gz git_url: https://github.com/libvirt/libvirt-python.git jobs: - python-distutils-build-job: diff --git a/projects/libvirt-sandbox.yaml b/projects/libvirt-sandbox.yaml index 23f28fe..d2dd940 100644 --- a/projects/libvirt-sandbox.yaml +++ b/projects/libvirt-sandbox.yaml @@ -7,6 +7,7 @@ - libvirt-fedora-28 - libvirt-fedora-rawhide title: Libvirt Sandbox + archive_format: gz git_url: https://github.com/libvirt/libvirt-sandbox.git jobs: - autotools-build-job: diff --git a/projects/libvirt-tck.yaml b/projects/libvirt-tck.yaml index 5c940d7..7824445 100644 --- a/projects/libvirt-tck.yaml +++ b/projects/libvirt-tck.yaml @@ -10,6 +10,7 @@ - libvirt-freebsd-10 - libvirt-freebsd-11 title: Libvirt TCK + archive_format: gz git_url: https://github.com/libvirt/libvirt-tck.git jobs: - perl-modulebuild-build-job: diff --git a/projects/osinfo-db-tools.yaml b/projects/osinfo-db-tools.yaml index ccc960b..bcf9e0a 100644 --- a/projects/osinfo-db-tools.yaml +++ b/projects/osinfo-db-tools.yaml @@ -3,6 +3,7 @@ name: osinfo-db-tools machines: '{all_machines}' title: osinfo database tools + archive_format: gz git_url: https://gitlab.com/libosinfo/osinfo-db-tools.git jobs: - autotools-build-job: diff --git a/projects/virt-manager.yaml b/projects/virt-manager.yaml index 3921a68..9d270db 100644 --- a/projects/virt-manager.yaml +++ b/projects/virt-manager.yaml @@ -9,6 +9,7 @@ - libvirt-freebsd-10 - libvirt-freebsd-11 title: Virtual Machine Manager + archive_format: gz git_url: https://github.com/virt-manager/virt-manager.git jobs: - python-distutils-build-job: diff --git a/projects/virt-viewer.yaml b/projects/virt-viewer.yaml index 1678d7c..f959ee0 100644 --- a/projects/virt-viewer.yaml +++ b/projects/virt-viewer.yaml @@ -3,6 +3,7 @@ name: virt-viewer machines: '{all_machines}' title: Virt Viewer + archive_format: gz git_url: https://pagure.io/virt-viewer.git jobs: - autotools-build-job: -- 2.17.1

The affected parameters are autogen_args, command and command_pre_build. Moving their default value next to the other overridable defaults makes sense, and it will help us out later. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- jobs/autotools.yaml | 1 - jobs/defaults.yaml | 3 +++ jobs/generic.yaml | 1 - jobs/go.yaml | 1 - jobs/perl-modulebuild.yaml | 1 - jobs/python-distutils.yaml | 1 - 6 files changed, 3 insertions(+), 5 deletions(-) diff --git a/jobs/autotools.yaml b/jobs/autotools.yaml index ffcffcf..4ab065d 100644 --- a/jobs/autotools.yaml +++ b/jobs/autotools.yaml @@ -4,7 +4,6 @@ name: '{name}-{branch}-build{variant}' project-type: matrix description: '{title} Build' - autogen_args: '' workspace: '{name}-{branch}{variant}' child-workspace: '.' block-downstream: true diff --git a/jobs/defaults.yaml b/jobs/defaults.yaml index de56226..11fb086 100644 --- a/jobs/defaults.yaml +++ b/jobs/defaults.yaml @@ -22,6 +22,9 @@ - libvirt-fedora-rawhide global_env: | local_env: | + autogen_args: '' + command: '' + command_pre_build: '' mingw32_local_env: | export VIRT_PREFIX="$VIRT_PREFIX/i686-w64-mingw32/sys-root/mingw" export PKG_CONFIG_PATH="$VIRT_PREFIX/lib/pkgconfig" diff --git a/jobs/generic.yaml b/jobs/generic.yaml index 48bec23..805b1d6 100644 --- a/jobs/generic.yaml +++ b/jobs/generic.yaml @@ -4,7 +4,6 @@ name: '{name}-{branch}-build{variant}' project-type: matrix description: '{title} Build' - autogen_args: '' workspace: '{name}-{branch}{variant}' child-workspace: '.' block-downstream: true diff --git a/jobs/go.yaml b/jobs/go.yaml index 77c931b..b460658 100644 --- a/jobs/go.yaml +++ b/jobs/go.yaml @@ -4,7 +4,6 @@ name: '{name}-{branch}-build{variant}' project-type: matrix description: '{title} Build' - autogen_args: '' workspace: '{name}-{branch}{variant}' child-workspace: '.' block-downstream: true diff --git a/jobs/perl-modulebuild.yaml b/jobs/perl-modulebuild.yaml index 6bded5e..0e6f2a8 100644 --- a/jobs/perl-modulebuild.yaml +++ b/jobs/perl-modulebuild.yaml @@ -4,7 +4,6 @@ name: '{name}-{branch}-build{variant}' project-type: matrix description: '{title} Build' - autogen_args: '' workspace: '{name}-{branch}{variant}' child-workspace: '.' block-downstream: true diff --git a/jobs/python-distutils.yaml b/jobs/python-distutils.yaml index b5dc995..ddd149d 100644 --- a/jobs/python-distutils.yaml +++ b/jobs/python-distutils.yaml @@ -4,7 +4,6 @@ name: '{name}-{branch}-build{variant}' project-type: matrix description: '{title} Build' - command_pre_build: '' workspace: '{name}-{branch}{variant}' child-workspace: '.' block-downstream: true -- 2.17.1

The pipe syntax is intended for multi-line preformatted text, and is abused here. Use a saner syntax instead. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- jobs/defaults.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jobs/defaults.yaml b/jobs/defaults.yaml index 11fb086..d97c3b5 100644 --- a/jobs/defaults.yaml +++ b/jobs/defaults.yaml @@ -20,8 +20,8 @@ - libvirt-fedora-rawhide mingw_machines: - libvirt-fedora-rawhide - global_env: | - local_env: | + global_env: '' + local_env: '' autogen_args: '' command: '' command_pre_build: '' -- 2.17.1

These tasks mirror the Jenkins jobs contained in the top-level jobs/ directory. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- .../build/jobs/autotools-build-job.yml | 15 ++++++++ .../build/jobs/autotools-check-job.yml | 16 +++++++++ .../build/jobs/autotools-rpm-job.yml | 17 ++++++++++ .../build/jobs/autotools-syntax-check-job.yml | 12 +++++++ guests/playbooks/build/jobs/defaults.yml | 34 +++++++++++++++++++ .../build/jobs/generic-build-job.yml | 11 ++++++ .../build/jobs/generic-check-job.yml | 11 ++++++ .../playbooks/build/jobs/generic-rpm-job.yml | 11 ++++++ .../build/jobs/generic-syntax-check-job.yml | 11 ++++++ guests/playbooks/build/jobs/go-build-job.yml | 11 ++++++ guests/playbooks/build/jobs/go-check-job.yml | 11 ++++++ .../build/jobs/perl-modulebuild-build-job.yml | 13 +++++++ .../build/jobs/perl-modulebuild-check-job.yml | 11 ++++++ .../build/jobs/perl-modulebuild-rpm-job.yml | 16 +++++++++ guests/playbooks/build/jobs/prepare.yml | 19 +++++++++++ .../build/jobs/python-distutils-build-job.yml | 13 +++++++ .../build/jobs/python-distutils-check-job.yml | 11 ++++++ .../build/jobs/python-distutils-rpm-job.yml | 12 +++++++ 18 files changed, 255 insertions(+) create mode 100644 guests/playbooks/build/jobs/autotools-build-job.yml create mode 100644 guests/playbooks/build/jobs/autotools-check-job.yml create mode 100644 guests/playbooks/build/jobs/autotools-rpm-job.yml create mode 100644 guests/playbooks/build/jobs/autotools-syntax-check-job.yml create mode 100644 guests/playbooks/build/jobs/defaults.yml create mode 100644 guests/playbooks/build/jobs/generic-build-job.yml create mode 100644 guests/playbooks/build/jobs/generic-check-job.yml create mode 100644 guests/playbooks/build/jobs/generic-rpm-job.yml create mode 100644 guests/playbooks/build/jobs/generic-syntax-check-job.yml create mode 100644 guests/playbooks/build/jobs/go-build-job.yml create mode 100644 guests/playbooks/build/jobs/go-check-job.yml create mode 100644 guests/playbooks/build/jobs/perl-modulebuild-build-job.yml create mode 100644 guests/playbooks/build/jobs/perl-modulebuild-check-job.yml create mode 100644 guests/playbooks/build/jobs/perl-modulebuild-rpm-job.yml create mode 100644 guests/playbooks/build/jobs/prepare.yml create mode 100644 guests/playbooks/build/jobs/python-distutils-build-job.yml create mode 100644 guests/playbooks/build/jobs/python-distutils-check-job.yml create mode 100644 guests/playbooks/build/jobs/python-distutils-rpm-job.yml diff --git a/guests/playbooks/build/jobs/autotools-build-job.yml b/guests/playbooks/build/jobs/autotools-build-job.yml new file mode 100644 index 0000000..bb621a1 --- /dev/null +++ b/guests/playbooks/build/jobs/autotools-build-job.yml @@ -0,0 +1,15 @@ +--- +- name: '{{ name }}-{{ branch }}-build{{ variant }}' + shell: | + set -e + cd {{ name }}-{{ branch }}{{ variant }} + + {{ global_env }} + {{ local_env }} + mkdir build + cd build + ../autogen.sh --prefix=$VIRT_PREFIX {{ autogen_args }} + $MAKE + $MAKE install + when: + - inventory_hostname in machines diff --git a/guests/playbooks/build/jobs/autotools-check-job.yml b/guests/playbooks/build/jobs/autotools-check-job.yml new file mode 100644 index 0000000..50024ae --- /dev/null +++ b/guests/playbooks/build/jobs/autotools-check-job.yml @@ -0,0 +1,16 @@ +--- +- name: '{{ name }}-{{ branch }}-check{{ variant }}' + shell: | + set -e + cd {{ name }}-{{ branch }}{{ variant }} + + {{ global_env }} + {{ local_env }} + cd build + if ! $MAKE check + then + cat tests/test-suite.log || true + exit 1 + fi + when: + - inventory_hostname in machines diff --git a/guests/playbooks/build/jobs/autotools-rpm-job.yml b/guests/playbooks/build/jobs/autotools-rpm-job.yml new file mode 100644 index 0000000..433d6ee --- /dev/null +++ b/guests/playbooks/build/jobs/autotools-rpm-job.yml @@ -0,0 +1,17 @@ +--- +- name: '{{ name }}-{{ branch }}-rpm{{ variant }}' + shell: | + set -e + cd {{ name }}-{{ branch }}{{ variant }} + + {{ global_env }} + {{ local_env }} + cd build + sed -i -e 's/BuildRequires: osinfo-db.*//' {{ name }}.spec + sed -i -e 's/BuildRequires: libvirt.*devel.*//' {{ name }}.spec + sed -i -e 's/BuildRequires: pkgconfig(libvirt.*).*//' {{ name }}.spec + rm -f *.tar.{{ archive_format }} + $MAKE dist + rpmbuild --define "_topdir `pwd`/rpmbuild" -ta {{ name }}-*.tar.{{ archive_format }} + when: + - inventory_hostname in machines diff --git a/guests/playbooks/build/jobs/autotools-syntax-check-job.yml b/guests/playbooks/build/jobs/autotools-syntax-check-job.yml new file mode 100644 index 0000000..bbbd240 --- /dev/null +++ b/guests/playbooks/build/jobs/autotools-syntax-check-job.yml @@ -0,0 +1,12 @@ +--- +- name: '{{ name }}-{{ branch }}-syntax-check{{ variant }}' + shell: | + set -e + cd {{ name }}-{{ branch }}{{ variant }} + + {{ global_env }} + {{ local_env }} + cd build + $MAKE syntax-check + when: + - inventory_hostname in machines diff --git a/guests/playbooks/build/jobs/defaults.yml b/guests/playbooks/build/jobs/defaults.yml new file mode 100644 index 0000000..2e4a078 --- /dev/null +++ b/guests/playbooks/build/jobs/defaults.yml @@ -0,0 +1,34 @@ +--- +branch: master +variant: '' +all_machines: + - libvirt-centos-7 + - libvirt-debian-8 + - libvirt-debian-9 + - libvirt-fedora-27 + - libvirt-fedora-28 + - libvirt-fedora-rawhide + - libvirt-freebsd-10 + - libvirt-freebsd-11 +rpm_machines: + - libvirt-centos-7 + - libvirt-fedora-27 + - libvirt-fedora-28 + - libvirt-fedora-rawhide +mingw_machines: + - libvirt-fedora-rawhide +global_env: '' +local_env: '' +autogen_args: '' +command: '' +command_pre_build: '' +mingw32_local_env: | + export VIRT_PREFIX="$VIRT_PREFIX/i686-w64-mingw32/sys-root/mingw" + export PKG_CONFIG_PATH="$VIRT_PREFIX/lib/pkgconfig" + export PKG_CONFIG_LIBDIR="/usr/i686-w64-mingw32/sys-root/mingw/lib/pkgconfig:/usr/i686-w64-mingw32/sys-root/mingw/share/pkgconfig" +mingw32_autogen_args: --host=i686-w64-mingw32 +mingw64_local_env: | + export VIRT_PREFIX="$VIRT_PREFIX/x86_64-w64-mingw32/sys-root/mingw" + export PKG_CONFIG_PATH="$VIRT_PREFIX/lib/pkgconfig" + export PKG_CONFIG_LIBDIR="/usr/x86_64-w64-mingw32/sys-root/mingw/lib/pkgconfig:/usr/x86_64-w64-mingw32/sys-root/mingw/share/pkgconfig" +mingw64_autogen_args: --host=x86_64-w64-mingw32 diff --git a/guests/playbooks/build/jobs/generic-build-job.yml b/guests/playbooks/build/jobs/generic-build-job.yml new file mode 100644 index 0000000..5519eee --- /dev/null +++ b/guests/playbooks/build/jobs/generic-build-job.yml @@ -0,0 +1,11 @@ +--- +- name: '{{ name }}-{{ branch }}-build{{ variant }}' + shell: | + set -e + cd {{ name }}-{{ branch }}{{ variant }} + + {{ global_env }} + {{ local_env }} + {{ command }} + when: + - inventory_hostname in machines diff --git a/guests/playbooks/build/jobs/generic-check-job.yml b/guests/playbooks/build/jobs/generic-check-job.yml new file mode 100644 index 0000000..00fbce3 --- /dev/null +++ b/guests/playbooks/build/jobs/generic-check-job.yml @@ -0,0 +1,11 @@ +--- +- name: '{{ name }}-{{ branch }}-check{{ variant }}' + shell: | + set -e + cd {{ name }}-{{ branch }}{{ variant }} + + {{ global_env }} + {{ local_env }} + {{ command }} + when: + - inventory_hostname in machines diff --git a/guests/playbooks/build/jobs/generic-rpm-job.yml b/guests/playbooks/build/jobs/generic-rpm-job.yml new file mode 100644 index 0000000..1db4ea4 --- /dev/null +++ b/guests/playbooks/build/jobs/generic-rpm-job.yml @@ -0,0 +1,11 @@ +--- +- name: '{{ name }}-{{ branch }}-rpm{{ variant }}' + shell: | + set -e + cd {{ name }}-{{ branch }}{{ variant }} + + {{ global_env }} + {{ local_env }} + {{ command }} + when: + - inventory_hostname in machines diff --git a/guests/playbooks/build/jobs/generic-syntax-check-job.yml b/guests/playbooks/build/jobs/generic-syntax-check-job.yml new file mode 100644 index 0000000..72885f1 --- /dev/null +++ b/guests/playbooks/build/jobs/generic-syntax-check-job.yml @@ -0,0 +1,11 @@ +--- +- name: '{{ name }}-{{ branch }}-syntax-check{{ variant }}' + shell: | + set -e + cd {{ name }}-{{ branch }}{{ variant }} + + {{ global_env }} + {{ local_env }} + {{ command }} + when: + - inventory_hostname in machines diff --git a/guests/playbooks/build/jobs/go-build-job.yml b/guests/playbooks/build/jobs/go-build-job.yml new file mode 100644 index 0000000..8a3ebb9 --- /dev/null +++ b/guests/playbooks/build/jobs/go-build-job.yml @@ -0,0 +1,11 @@ +--- +- name: '{{ name }}-{{ branch }}-build{{ variant }}' + shell: | + set -e + cd {{ name }}-{{ branch }}{{ variant }} + + {{ global_env }} + {{ local_env }} + go build -v + when: + - inventory_hostname in machines diff --git a/guests/playbooks/build/jobs/go-check-job.yml b/guests/playbooks/build/jobs/go-check-job.yml new file mode 100644 index 0000000..dda7998 --- /dev/null +++ b/guests/playbooks/build/jobs/go-check-job.yml @@ -0,0 +1,11 @@ +--- +- name: '{{ name }}-{{ branch }}-check{{ variant }}' + shell: | + set -e + cd {{ name }}-{{ branch }}{{ variant }} + + {{ global_env }} + {{ local_env }} + go test $TEST_ARGS + when: + - inventory_hostname in machines diff --git a/guests/playbooks/build/jobs/perl-modulebuild-build-job.yml b/guests/playbooks/build/jobs/perl-modulebuild-build-job.yml new file mode 100644 index 0000000..030e713 --- /dev/null +++ b/guests/playbooks/build/jobs/perl-modulebuild-build-job.yml @@ -0,0 +1,13 @@ +--- +- name: '{{ name }}-{{ branch }}-build{{ variant }}' + shell: | + set -e + cd {{ name }}-{{ branch }}{{ variant }} + + {{ global_env }} + {{ local_env }} + perl Build.PL install_base="$VIRT_PREFIX" + perl Build + perl Build install + when: + - inventory_hostname in machines diff --git a/guests/playbooks/build/jobs/perl-modulebuild-check-job.yml b/guests/playbooks/build/jobs/perl-modulebuild-check-job.yml new file mode 100644 index 0000000..165e868 --- /dev/null +++ b/guests/playbooks/build/jobs/perl-modulebuild-check-job.yml @@ -0,0 +1,11 @@ +--- +- name: '{{ name }}-{{ branch }}-check{{ variant }}' + shell: | + set -e + cd {{ name }}-{{ branch }}{{ variant }} + + {{ global_env }} + {{ local_env }} + perl Build test + when: + - inventory_hostname in machines diff --git a/guests/playbooks/build/jobs/perl-modulebuild-rpm-job.yml b/guests/playbooks/build/jobs/perl-modulebuild-rpm-job.yml new file mode 100644 index 0000000..63ea52e --- /dev/null +++ b/guests/playbooks/build/jobs/perl-modulebuild-rpm-job.yml @@ -0,0 +1,16 @@ +--- +- name: '{{ name }}-{{ branch }}-rpm{{ variant }}' + shell: | + set -e + cd {{ name }}-{{ branch }}{{ variant }} + + {{ global_env }} + {{ local_env }} + sed -i -e 's/BuildRequires: *perl-Sys-Virt.*//' *.spec + sed -i -e 's/BuildRequires: *perl(Sys::Virt).*//' *.spec + sed -i -e 's/BuildRequires: *libvirt.*devel.*//' *.spec + rm -f *.tar.{{ archive_format }} + perl Build dist + rpmbuild --define "_topdir `pwd`/rpmbuild" -ta *.tar.{{ archive_format }} + when: + - inventory_hostname in machines diff --git a/guests/playbooks/build/jobs/prepare.yml b/guests/playbooks/build/jobs/prepare.yml new file mode 100644 index 0000000..0b22ac5 --- /dev/null +++ b/guests/playbooks/build/jobs/prepare.yml @@ -0,0 +1,19 @@ +--- +- name: '{{ name }}-{{ branch }}-prepare{{ variant }}' + git: + repo: '{{ git_url }}' + version: '{{ branch }}' + dest: '{{ name }}-{{ branch }}{{ variant }}' + force: yes + when: + - inventory_hostname in machines + +- name: '{{ name }}-{{ branch }}-prepare{{ variant }}' + shell: | + set -e + cd {{ name }}-{{ branch }}{{ variant }} + + git clean -xdf + git submodule update --init + when: + - inventory_hostname in machines diff --git a/guests/playbooks/build/jobs/python-distutils-build-job.yml b/guests/playbooks/build/jobs/python-distutils-build-job.yml new file mode 100644 index 0000000..c077015 --- /dev/null +++ b/guests/playbooks/build/jobs/python-distutils-build-job.yml @@ -0,0 +1,13 @@ +--- +- name: '{{ name }}-{{ branch }}-build{{ variant }}' + shell: | + set -e + cd {{ name }}-{{ branch }}{{ variant }} + + {{ global_env }} + {{ local_env }} + {{ command_pre_build }} + $PYTHON ./setup.py build + $PYTHON ./setup.py install --prefix=$VIRT_PREFIX + when: + - inventory_hostname in machines diff --git a/guests/playbooks/build/jobs/python-distutils-check-job.yml b/guests/playbooks/build/jobs/python-distutils-check-job.yml new file mode 100644 index 0000000..318feaf --- /dev/null +++ b/guests/playbooks/build/jobs/python-distutils-check-job.yml @@ -0,0 +1,11 @@ +--- +- name: '{{ name }}-{{ branch }}-check{{ variant }}' + shell: | + set -e + cd {{ name }}-{{ branch }}{{ variant }} + + {{ global_env }} + {{ local_env }} + $PYTHON ./setup.py test + when: + - inventory_hostname in machines diff --git a/guests/playbooks/build/jobs/python-distutils-rpm-job.yml b/guests/playbooks/build/jobs/python-distutils-rpm-job.yml new file mode 100644 index 0000000..78ea9b6 --- /dev/null +++ b/guests/playbooks/build/jobs/python-distutils-rpm-job.yml @@ -0,0 +1,12 @@ +--- +- name: '{{ name }}-{{ branch }}-rpm{{ variant }}' + shell: | + set -e + cd {{ name }}-{{ branch }}{{ variant }} + + {{ global_env }} + {{ local_env }} + sed -i -e 's/BuildRequires: libvirt.*devel.*//' *.spec.in + $PYTHON ./setup.py rpm + when: + - inventory_hostname in machines -- 2.17.1

These tasks mirror the Jenkins projects contained in the top-level projects/ directory. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- guests/playbooks/build/projects/libosinfo.yml | 36 +++++++++++++ .../playbooks/build/projects/libvirt-cim.yml | 10 ++++ .../playbooks/build/projects/libvirt-dbus.yml | 28 ++++++++++ .../playbooks/build/projects/libvirt-glib.yml | 38 ++++++++++++++ .../build/projects/libvirt-go-xml.yml | 13 +++++ .../playbooks/build/projects/libvirt-go.yml | 13 +++++ .../playbooks/build/projects/libvirt-perl.yml | 19 +++++++ .../build/projects/libvirt-python.yml | 13 +++++ .../build/projects/libvirt-sandbox.yml | 23 ++++++++ .../playbooks/build/projects/libvirt-tck.yml | 23 ++++++++ guests/playbooks/build/projects/libvirt.yml | 52 +++++++++++++++++++ .../build/projects/osinfo-db-tools.yml | 36 +++++++++++++ guests/playbooks/build/projects/osinfo-db.yml | 25 +++++++++ .../playbooks/build/projects/virt-manager.yml | 34 ++++++++++++ .../playbooks/build/projects/virt-viewer.yml | 38 ++++++++++++++ 15 files changed, 401 insertions(+) create mode 100644 guests/playbooks/build/projects/libosinfo.yml create mode 100644 guests/playbooks/build/projects/libvirt-cim.yml create mode 100644 guests/playbooks/build/projects/libvirt-dbus.yml create mode 100644 guests/playbooks/build/projects/libvirt-glib.yml create mode 100644 guests/playbooks/build/projects/libvirt-go-xml.yml create mode 100644 guests/playbooks/build/projects/libvirt-go.yml create mode 100644 guests/playbooks/build/projects/libvirt-perl.yml create mode 100644 guests/playbooks/build/projects/libvirt-python.yml create mode 100644 guests/playbooks/build/projects/libvirt-sandbox.yml create mode 100644 guests/playbooks/build/projects/libvirt-tck.yml create mode 100644 guests/playbooks/build/projects/libvirt.yml create mode 100644 guests/playbooks/build/projects/osinfo-db-tools.yml create mode 100644 guests/playbooks/build/projects/osinfo-db.yml create mode 100644 guests/playbooks/build/projects/virt-manager.yml create mode 100644 guests/playbooks/build/projects/virt-viewer.yml diff --git a/guests/playbooks/build/projects/libosinfo.yml b/guests/playbooks/build/projects/libosinfo.yml new file mode 100644 index 0000000..c29053b --- /dev/null +++ b/guests/playbooks/build/projects/libosinfo.yml @@ -0,0 +1,36 @@ +--- +- set_fact: + name: libosinfo + machines: '{{ all_machines }}' + archive_format: gz + git_url: https://gitlab.com/libosinfo/libosinfo.git + +- include: '{{ playbook_base }}/jobs/prepare.yml' +- include: '{{ playbook_base }}/jobs/autotools-build-job.yml' +- include: '{{ playbook_base }}/jobs/autotools-syntax-check-job.yml' +- include: '{{ playbook_base }}/jobs/autotools-check-job.yml' +- include: '{{ playbook_base }}/jobs/autotools-rpm-job.yml' + vars: + machines: '{{ rpm_machines }}' + +- include: '{{ playbook_base }}/jobs/prepare.yml' + vars: + variant: -mingw32 + machines: '{{ mingw_machines }}' +- include: '{{ playbook_base }}/jobs/autotools-build-job.yml' + vars: + variant: -mingw32 + local_env: '{{ mingw32_local_env }}' + autogen_args: '{{ mingw32_autogen_args }}' + machines: '{{ mingw_machines }}' + +- include: '{{ playbook_base }}/jobs/prepare.yml' + vars: + variant: -mingw64 + machines: '{{ mingw_machines }}' +- include: '{{ playbook_base }}/jobs/autotools-build-job.yml' + vars: + variant: -mingw64 + local_env: '{{ mingw64_local_env }}' + autogen_args: '{{ mingw64_autogen_args }}' + machines: '{{ mingw_machines }}' diff --git a/guests/playbooks/build/projects/libvirt-cim.yml b/guests/playbooks/build/projects/libvirt-cim.yml new file mode 100644 index 0000000..f959bf6 --- /dev/null +++ b/guests/playbooks/build/projects/libvirt-cim.yml @@ -0,0 +1,10 @@ +--- +- set_fact: + name: libvirt-cim + machines: '{{ rpm_machines }}' + archive_format: gz + git_url: https://github.com/libvirt/libvirt-cim.git + +- include: '{{ playbook_base }}/jobs/prepare.yml' +- include: '{{ playbook_base }}/jobs/autotools-build-job.yml' +- include: '{{ playbook_base }}/jobs/autotools-rpm-job.yml' diff --git a/guests/playbooks/build/projects/libvirt-dbus.yml b/guests/playbooks/build/projects/libvirt-dbus.yml new file mode 100644 index 0000000..6a77c7f --- /dev/null +++ b/guests/playbooks/build/projects/libvirt-dbus.yml @@ -0,0 +1,28 @@ +--- +- set_fact: + name: libvirt-dbus + machines: + - libvirt-centos-7 + - libvirt-debian-9 + - libvirt-fedora-27 + - libvirt-fedora-28 + - libvirt-fedora-rawhide + - libvirt-freebsd-10 + - libvirt-freebsd-11 + archive_format: xz + git_url: https://github.com/libvirt/libvirt-dbus.git + +- include: '{{ playbook_base }}/jobs/prepare.yml' +- include: '{{ playbook_base }}/jobs/autotools-build-job.yml' +- include: '{{ playbook_base }}/jobs/autotools-check-job.yml' + vars: + machines: + - libvirt-debian-9 + - libvirt-fedora-27 + - libvirt-fedora-28 + - libvirt-fedora-rawhide + - libvirt-freebsd-10 + - libvirt-freebsd-11 +- include: '{{ playbook_base }}/jobs/autotools-rpm-job.yml' + vars: + machines: '{{ rpm_machines }}' diff --git a/guests/playbooks/build/projects/libvirt-glib.yml b/guests/playbooks/build/projects/libvirt-glib.yml new file mode 100644 index 0000000..0d8de9d --- /dev/null +++ b/guests/playbooks/build/projects/libvirt-glib.yml @@ -0,0 +1,38 @@ +--- +- set_fact: + name: libvirt-glib + machines: '{{ all_machines }}' + archive_format: gz + git_url: https://github.com/libvirt/libvirt-glib.git + +- include: '{{ playbook_base }}/jobs/prepare.yml' +- include: '{{ playbook_base }}/jobs/autotools-build-job.yml' + vars: + autogen_args: --enable-gtk-doc +- include: '{{ playbook_base }}/jobs/autotools-syntax-check-job.yml' +- include: '{{ playbook_base }}/jobs/autotools-check-job.yml' +- include: '{{ playbook_base }}/jobs/autotools-rpm-job.yml' + vars: + machines: '{{ rpm_machines }}' + +- include: '{{ playbook_base }}/jobs/prepare.yml' + vars: + variant: -mingw32 + machines: '{{ mingw_machines }}' +- include: '{{ playbook_base }}/jobs/autotools-build-job.yml' + vars: + variant: -mingw32 + local_env: '{{ mingw32_local_env }}' + autogen_args: '{{ mingw32_autogen_args }}' + machines: '{{ mingw_machines }}' + +- include: '{{ playbook_base }}/jobs/prepare.yml' + vars: + variant: -mingw64 + machines: '{{ mingw_machines }}' +- include: '{{ playbook_base }}/jobs/autotools-build-job.yml' + vars: + variant: -mingw64 + local_env: '{{ mingw64_local_env }}' + autogen_args: '{{ mingw64_autogen_args }}' + machines: '{{ mingw_machines }}' diff --git a/guests/playbooks/build/projects/libvirt-go-xml.yml b/guests/playbooks/build/projects/libvirt-go-xml.yml new file mode 100644 index 0000000..5dc86e7 --- /dev/null +++ b/guests/playbooks/build/projects/libvirt-go-xml.yml @@ -0,0 +1,13 @@ +--- +- set_fact: + name: libvirt-go-xml + machines: '{{ all_machines }}' + archive_format: gz + git_url: https://github.com/libvirt/libvirt-go-xml.git + +- include: '{{ playbook_base }}/jobs/prepare.yml' +- include: '{{ playbook_base }}/jobs/go-build-job.yml' +- include: '{{ playbook_base }}/jobs/go-check-job.yml' + vars: + local_env: | + export TEST_ARGS="-tags xmlroundtrip" diff --git a/guests/playbooks/build/projects/libvirt-go.yml b/guests/playbooks/build/projects/libvirt-go.yml new file mode 100644 index 0000000..9316ef1 --- /dev/null +++ b/guests/playbooks/build/projects/libvirt-go.yml @@ -0,0 +1,13 @@ +--- +- set_fact: + name: libvirt-go + machines: '{{ all_machines }}' + archive_format: gz + git_url: https://github.com/libvirt/libvirt-go.git + +- include: '{{ playbook_base }}/jobs/prepare.yml' +- include: '{{ playbook_base }}/jobs/go-build-job.yml' +- include: '{{ playbook_base }}/jobs/go-check-job.yml' + vars: + local_env: | + export TEST_ARGS="-tags api" diff --git a/guests/playbooks/build/projects/libvirt-perl.yml b/guests/playbooks/build/projects/libvirt-perl.yml new file mode 100644 index 0000000..6cb15bd --- /dev/null +++ b/guests/playbooks/build/projects/libvirt-perl.yml @@ -0,0 +1,19 @@ +--- +- set_fact: + name: libvirt-perl + machines: '{{ all_machines }}' + archive_format: gz + git_url: https://github.com/libvirt/libvirt-perl.git + +- include: '{{ playbook_base }}/jobs/prepare.yml' +- include: '{{ playbook_base }}/jobs/perl-modulebuild-build-job.yml' + vars: + local_env: | + export TEST_MAINTAINER=1 +- include: '{{ playbook_base }}/jobs/perl-modulebuild-check-job.yml' + vars: + local_env: | + export TEST_MAINTAINER=1 +- include: '{{ playbook_base }}/jobs/perl-modulebuild-rpm-job.yml' + vars: + machines: '{{ rpm_machines }}' diff --git a/guests/playbooks/build/projects/libvirt-python.yml b/guests/playbooks/build/projects/libvirt-python.yml new file mode 100644 index 0000000..f2c39be --- /dev/null +++ b/guests/playbooks/build/projects/libvirt-python.yml @@ -0,0 +1,13 @@ +--- +- set_fact: + name: libvirt-python + machines: '{{ all_machines }}' + archive_format: gz + git_url: https://github.com/libvirt/libvirt-python.git + +- include: '{{ playbook_base }}/jobs/prepare.yml' +- include: '{{ playbook_base }}/jobs/python-distutils-build-job.yml' +- include: '{{ playbook_base }}/jobs/python-distutils-check-job.yml' +- include: '{{ playbook_base }}/jobs/python-distutils-rpm-job.yml' + vars: + machines: '{{ rpm_machines }}' diff --git a/guests/playbooks/build/projects/libvirt-sandbox.yml b/guests/playbooks/build/projects/libvirt-sandbox.yml new file mode 100644 index 0000000..eb4b0c9 --- /dev/null +++ b/guests/playbooks/build/projects/libvirt-sandbox.yml @@ -0,0 +1,23 @@ +--- +- set_fact: + name: libvirt-sandbox + machines: + - libvirt-debian-9 + - libvirt-fedora-27 + - libvirt-fedora-28 + - libvirt-fedora-rawhide + archive_format: gz + git_url: https://github.com/libvirt/libvirt-sandbox.git + +- include: '{{ playbook_base }}/jobs/prepare.yml' +- include: '{{ playbook_base }}/jobs/autotools-build-job.yml' + vars: + autogen_args: --enable-gtk-doc +- include: '{{ playbook_base }}/jobs/autotools-syntax-check-job.yml' +- include: '{{ playbook_base }}/jobs/autotools-check-job.yml' +- include: '{{ playbook_base }}/jobs/autotools-rpm-job.yml' + vars: + machines: + - libvirt-fedora-27 + - libvirt-fedora-28 + - libvirt-fedora-rawhide diff --git a/guests/playbooks/build/projects/libvirt-tck.yml b/guests/playbooks/build/projects/libvirt-tck.yml new file mode 100644 index 0000000..13e63f4 --- /dev/null +++ b/guests/playbooks/build/projects/libvirt-tck.yml @@ -0,0 +1,23 @@ +--- +- set_fact: + name: libvirt-tck + machines: + - libvirt-debian-8 + - libvirt-debian-9 + - libvirt-fedora-27 + - libvirt-fedora-28 + - libvirt-fedora-rawhide + - libvirt-freebsd-10 + - libvirt-freebsd-11 + archive_format: gz + git_url: https://github.com/libvirt/libvirt-tck.git + +- include: '{{ playbook_base }}/jobs/prepare.yml' +- include: '{{ playbook_base }}/jobs/perl-modulebuild-build-job.yml' +- include: '{{ playbook_base }}/jobs/perl-modulebuild-check-job.yml' +- include: '{{ playbook_base }}/jobs/perl-modulebuild-rpm-job.yml' + vars: + machines: + - libvirt-fedora-27 + - libvirt-fedora-28 + - libvirt-fedora-rawhide diff --git a/guests/playbooks/build/projects/libvirt.yml b/guests/playbooks/build/projects/libvirt.yml new file mode 100644 index 0000000..ac7b2c6 --- /dev/null +++ b/guests/playbooks/build/projects/libvirt.yml @@ -0,0 +1,52 @@ +--- +- set_fact: + name: libvirt + machines: '{{ all_machines }}' + archive_format: xz + git_url: https://github.com/libvirt/libvirt.git + +- include: '{{ playbook_base }}/jobs/prepare.yml' +- include: '{{ playbook_base }}/jobs/autotools-build-job.yml' +- include: '{{ playbook_base }}/jobs/autotools-syntax-check-job.yml' + vars: + machines: + - libvirt-centos-7 + - libvirt-debian-8 + - libvirt-debian-9 + - libvirt-fedora-27 + - libvirt-fedora-28 + - libvirt-fedora-rawhide +- include: '{{ playbook_base }}/jobs/autotools-check-job.yml' + vars: + local_env: | + # gnulib's test-poll is broken on FreeBSD, so disable expensive + # tests (which include gnulib's test suite) until it's fixed + if [ "$(uname)" != "FreeBSD" ]; then + export VIR_TEST_EXPENSIVE=1 + fi + export VIR_TEST_DEBUG=2 +- include: '{{ playbook_base }}/jobs/autotools-rpm-job.yml' + vars: + machines: '{{ rpm_machines }}' + +- include: '{{ playbook_base }}/jobs/prepare.yml' + vars: + variant: -mingw32 + machines: '{{ mingw_machines }}' +- include: '{{ playbook_base }}/jobs/autotools-build-job.yml' + vars: + variant: -mingw32 + local_env: '{{ mingw32_local_env }}' + autogen_args: '{{ mingw32_autogen_args }}' + machines: '{{ mingw_machines }}' + +- include: '{{ playbook_base }}/jobs/prepare.yml' + vars: + variant: -mingw64 + machines: '{{ mingw_machines }}' +- include: '{{ playbook_base }}/jobs/autotools-build-job.yml' + vars: + variant: -mingw64 + local_env: '{{ mingw64_local_env }}' + autogen_args: '{{ mingw64_autogen_args }}' + machines: '{{ mingw_machines }}' diff --git a/guests/playbooks/build/projects/osinfo-db-tools.yml b/guests/playbooks/build/projects/osinfo-db-tools.yml new file mode 100644 index 0000000..a4b7c0e --- /dev/null +++ b/guests/playbooks/build/projects/osinfo-db-tools.yml @@ -0,0 +1,36 @@ +--- +- set_fact: + name: osinfo-db-tools + machines: '{{ all_machines }}' + archive_format: gz + git_url: https://gitlab.com/libosinfo/osinfo-db-tools.git + +- include: '{{ playbook_base }}/jobs/prepare.yml' +- include: '{{ playbook_base }}/jobs/autotools-build-job.yml' +- include: '{{ playbook_base }}/jobs/autotools-syntax-check-job.yml' +- include: '{{ playbook_base }}/jobs/autotools-check-job.yml' +- include: '{{ playbook_base }}/jobs/autotools-rpm-job.yml' + vars: + machines: '{{ rpm_machines }}' + +- include: '{{ playbook_base }}/jobs/prepare.yml' + vars: + variant: -mingw32 + machines: '{{ mingw_machines }}' +- include: '{{ playbook_base }}/jobs/autotools-build-job.yml' + vars: + variant: -mingw32 + local_env: '{{ mingw32_local_env }}' + autogen_args: '{{ mingw32_autogen_args }}' + machines: '{{ mingw_machines }}' + +- include: '{{ playbook_base }}/jobs/prepare.yml' + vars: + variant: -mingw64 + machines: '{{ mingw_machines }}' +- include: '{{ playbook_base }}/jobs/autotools-build-job.yml' + vars: + variant: -mingw64 + local_env: '{{ mingw64_local_env }}' + autogen_args: '{{ mingw64_autogen_args }}' + machines: '{{ mingw_machines }}' diff --git a/guests/playbooks/build/projects/osinfo-db.yml b/guests/playbooks/build/projects/osinfo-db.yml new file mode 100644 index 0000000..e2ee9f0 --- /dev/null +++ b/guests/playbooks/build/projects/osinfo-db.yml @@ -0,0 +1,25 @@ +--- +- set_fact: + name: osinfo-db + machines: '{{ all_machines }}' + archive_format: xz + git_url: https://gitlab.com/libosinfo/osinfo-db.git + +- include: '{{ playbook_base }}/jobs/prepare.yml' +- include: '{{ playbook_base }}/jobs/generic-build-job.yml' + vars: + command: | + $MAKE all + $MAKE install OSINFO_DB_TARGET="--system" +- include: '{{ playbook_base }}/jobs/generic-check-job.yml' + vars: + command: | + $MAKE check +- include: '{{ playbook_base }}/jobs/generic-rpm-job.yml' + vars: + machines: '{{ rpm_machines }}' + command: | + rm -f *.tar.{{ archive_format }} + $MAKE osinfo-db.spec + perl -i -p -e 's/BuildRequires: osinfo-db-tools.*//' osinfo-db.spec + $MAKE rpm diff --git a/guests/playbooks/build/projects/virt-manager.yml b/guests/playbooks/build/projects/virt-manager.yml new file mode 100644 index 0000000..779ea29 --- /dev/null +++ b/guests/playbooks/build/projects/virt-manager.yml @@ -0,0 +1,34 @@ +--- +- set_fact: + name: virt-manager + machines: + - libvirt-debian-9 + - libvirt-fedora-27 + - libvirt-fedora-28 + - libvirt-fedora-rawhide + - libvirt-freebsd-10 + - libvirt-freebsd-11 + archive_format: gz + git_url: https://github.com/virt-manager/virt-manager.git + +- include: '{{ playbook_base }}/jobs/prepare.yml' +- include: '{{ playbook_base }}/jobs/python-distutils-build-job.yml' + vars: + command_pre_build: | + $PYTHON ./setup.py configure --prefix=$VIRT_PREFIX +- include: '{{ playbook_base }}/jobs/python-distutils-check-job.yml' + vars: + # libxml2's Python 3 bindings don't work properly on FreeBSD, + # so skip the test suite there for the time being. See + # https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=224902 + machines: + - libvirt-debian-9 + - libvirt-fedora-27 + - libvirt-fedora-28 + - libvirt-fedora-rawhide +- include: '{{ playbook_base }}/jobs/python-distutils-rpm-job.yml' + vars: + machines: + - libvirt-fedora-27 + - libvirt-fedora-28 + - libvirt-fedora-rawhide diff --git a/guests/playbooks/build/projects/virt-viewer.yml b/guests/playbooks/build/projects/virt-viewer.yml new file mode 100644 index 0000000..e5951c7 --- /dev/null +++ b/guests/playbooks/build/projects/virt-viewer.yml @@ -0,0 +1,38 @@ +--- +- set_fact: + name: virt-viewer + machines: '{{ all_machines }}' + archive_format: gz + git_url: https://pagure.io/virt-viewer.git + +- include: '{{ playbook_base }}/jobs/prepare.yml' +- include: '{{ playbook_base }}/jobs/autotools-build-job.yml' +- include: '{{ playbook_base }}/jobs/autotools-syntax-check-job.yml' +- include: '{{ playbook_base }}/jobs/autotools-check-job.yml' +- include: '{{ playbook_base }}/jobs/autotools-rpm-job.yml' + vars: + machines: + - libvirt-fedora-28 + - libvirt-fedora-rawhide + +- include: '{{ playbook_base }}/jobs/prepare.yml' + vars: + variant: -mingw32 + machines: '{{ mingw_machines }}' +- include: '{{ playbook_base }}/jobs/autotools-build-job.yml' + vars: + variant: -mingw32 + local_env: '{{ mingw32_local_env }}' + autogen_args: '{{ mingw32_autogen_args }}' + machines: '{{ mingw_machines }}' + +- include: '{{ playbook_base }}/jobs/prepare.yml' + vars: + variant: -mingw64 + machines: '{{ mingw_machines }}' +- include: '{{ playbook_base }}/jobs/autotools-build-job.yml' + vars: + variant: -mingw64 + local_env: '{{ mingw64_local_env }}' + autogen_args: '{{ mingw64_autogen_args }}' + machines: '{{ mingw_machines }}' -- 2.17.1

This playbook represent the entry point for automated builds, and follows the same calling conventions as the existing update playbook. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- guests/playbooks/build/main.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 guests/playbooks/build/main.yml diff --git a/guests/playbooks/build/main.yml b/guests/playbooks/build/main.yml new file mode 100644 index 0000000..8abda67 --- /dev/null +++ b/guests/playbooks/build/main.yml @@ -0,0 +1,16 @@ +--- +- hosts: all + remote_user: '{{ flavor }}' + + vars_files: + - '{{ playbook_base }}/jobs/defaults.yml' + + tasks: + + - include: '{{ playbook_base }}/projects/{{ project }}.yml' + with_items: + '{{ selected_projects }}' + loop_control: + loop_var: project + when: + - project in projects -- 2.17.1

Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- guests/lcitool | 87 ++++++++++++++++++++++++++------------------------ 1 file changed, 45 insertions(+), 42 deletions(-) diff --git a/guests/lcitool b/guests/lcitool index f28199d..e0410f3 100755 --- a/guests/lcitool +++ b/guests/lcitool @@ -351,6 +351,50 @@ class Application: help="list of projects to consider", ) + def _execute_playbook(self, playbook, hosts, projects): + base = Util.get_base() + + flavor = self._config.get_flavor() + vault_pass_file = self._config.get_vault_password_file() + root_pass_file = self._config.get_root_password_file() + + ansible_hosts = ",".join(self._inventory.expand_pattern(hosts)) + selected_projects = self._projects.expand_pattern(projects) + + ansible_cfg_path = os.path.join(base, "ansible.cfg") + playbook_base = os.path.join(base, "playbooks", playbook) + playbook_path = os.path.join(playbook_base, "main.yml") + + extra_vars = json.dumps({ + "base": base, + "playbook_base": playbook_base, + "root_password_file": root_pass_file, + "flavor": flavor, + "selected_projects": selected_projects, + }) + + cmd = [ + "ansible-playbook", + "--limit", ansible_hosts, + "--extra-vars", extra_vars, + ] + + # Provide the vault password if available + if vault_pass_file is not None: + cmd += ["--vault-password-file", vault_pass_file] + + cmd += [playbook_path] + + # We need to point Ansible to the correct configuration file, + # and for some reason this has to be done using the environment + # rather than through the command line + os.environ["ANSIBLE_CONFIG"] = ansible_cfg_path + + try: + subprocess.check_call(cmd) + except Exception: + raise Error("Failed to run {} on '{}'".format(playbook, hosts)) + def _action_hosts(self, _hosts, _projects): for host in self._inventory.expand_pattern("all"): print(host) @@ -431,48 +475,7 @@ class Application: raise Error("Failed to install '{}'".format(host)) def _action_update(self, hosts, projects): - base = Util.get_base() - - flavor = self._config.get_flavor() - vault_pass_file = self._config.get_vault_password_file() - root_pass_file = self._config.get_root_password_file() - - ansible_hosts = ",".join(self._inventory.expand_pattern(hosts)) - selected_projects = self._projects.expand_pattern(projects) - - ansible_cfg_path = os.path.join(base, "ansible.cfg") - playbook_base = os.path.join(base, "playbooks", "update") - playbook_path = os.path.join(playbook_base, "main.yml") - - extra_vars = json.dumps({ - "base": base, - "playbook_base": playbook_base, - "root_password_file": root_pass_file, - "flavor": flavor, - "selected_projects": selected_projects, - }) - - cmd = [ - "ansible-playbook", - "--limit", ansible_hosts, - "--extra-vars", extra_vars, - ] - - # Provide the vault password if available - if vault_pass_file is not None: - cmd += ["--vault-password-file", vault_pass_file] - - cmd += [playbook_path] - - # We need to point Ansible to the correct configuration file, - # and for some reason this has to be done using the environment - # rather than through the command line - os.environ["ANSIBLE_CONFIG"] = ansible_cfg_path - - try: - subprocess.check_call(cmd) - except Exception: - raise Error("Failed to update '{}'".format(hosts)) + self._execute_playbook("update", hosts, projects) def _action_dockerfile(self, hosts, projects): mappings = self._projects.get_mappings() -- 2.17.1

Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- guests/lcitool | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/guests/lcitool b/guests/lcitool index e0410f3..2901a92 100755 --- a/guests/lcitool +++ b/guests/lcitool @@ -323,6 +323,7 @@ class Application: common actions: install perform unattended host installation update prepare hosts and keep them updated + build build projects on hosts informational actions: hosts list all known hosts @@ -477,6 +478,9 @@ class Application: def _action_update(self, hosts, projects): self._execute_playbook("update", hosts, projects) + def _action_build(self, hosts, projects): + self._execute_playbook("build", hosts, projects) + def _action_dockerfile(self, hosts, projects): mappings = self._projects.get_mappings() -- 2.17.1

Building master is useful for CI purposes and to debug CI failures locally, but when developing we want to be able to build a personal branch to validate in-progress changes. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- guests/lcitool | 30 ++++++++++++++++-------- guests/playbooks/build/jobs/defaults.yml | 1 - 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/guests/lcitool b/guests/lcitool index 2901a92..9d4b628 100755 --- a/guests/lcitool +++ b/guests/lcitool @@ -351,8 +351,13 @@ class Application: metavar="PROJECTS", help="list of projects to consider", ) + self._parser.add_argument( + "-b", + metavar="BRANCH", + help="git branch to use when performing builds", + ) - def _execute_playbook(self, playbook, hosts, projects): + def _execute_playbook(self, playbook, hosts, projects, branch): base = Util.get_base() flavor = self._config.get_flavor() @@ -372,6 +377,7 @@ class Application: "root_password_file": root_pass_file, "flavor": flavor, "selected_projects": selected_projects, + "branch": branch, }) cmd = [ @@ -396,15 +402,15 @@ class Application: except Exception: raise Error("Failed to run {} on '{}'".format(playbook, hosts)) - def _action_hosts(self, _hosts, _projects): + def _action_hosts(self, _hosts, _projects, _branch): for host in self._inventory.expand_pattern("all"): print(host) - def _action_projects(self, _hosts, _projects): + def _action_projects(self, _hosts, _projects, _branch): for project in self._projects.expand_pattern("all"): print(project) - def _action_install(self, hosts, _projects): + def _action_install(self, hosts, _projects, _branch): base = Util.get_base() flavor = self._config.get_flavor() @@ -475,13 +481,16 @@ class Application: except Exception: raise Error("Failed to install '{}'".format(host)) - def _action_update(self, hosts, projects): - self._execute_playbook("update", hosts, projects) + def _action_update(self, hosts, projects, _branch): + self._execute_playbook("update", hosts, project, None) + + def _action_build(self, hosts, projects, branch): + if branch is None: + raise Error("Missing branch") - def _action_build(self, hosts, projects): - self._execute_playbook("build", hosts, projects) + self._execute_playbook("build", hosts, projects, branch) - def _action_dockerfile(self, hosts, projects): + def _action_dockerfile(self, hosts, projects, _branch): mappings = self._projects.get_mappings() hosts = self._inventory.expand_pattern(hosts) @@ -553,11 +562,12 @@ class Application: action = cmdline.a hosts = cmdline.h projects = cmdline.p + branch = cmdline.b method = "_action_{}".format(action.replace("-", "_")) if hasattr(self, method): - getattr(self, method).__call__(hosts, projects) + getattr(self, method).__call__(hosts, projects, branch) else: raise Error("Invalid action '{}'".format(action)) diff --git a/guests/playbooks/build/jobs/defaults.yml b/guests/playbooks/build/jobs/defaults.yml index 2e4a078..f0474ca 100644 --- a/guests/playbooks/build/jobs/defaults.yml +++ b/guests/playbooks/build/jobs/defaults.yml @@ -1,5 +1,4 @@ --- -branch: master variant: '' all_machines: - libvirt-centos-7 -- 2.17.1

On Wed, 2018-08-08 at 15:45 +0200, Andrea Bolognani wrote: [...]
- def _action_update(self, hosts, projects): - self._execute_playbook("update", hosts, projects) + def _action_update(self, hosts, projects, _branch): + self._execute_playbook("update", hosts, project, None)
Oops, made a mistake there... Consider the following squashed in: diff --git a/guests/lcitool b/guests/lcitool index 9d4b628..ec81448 100755 --- a/guests/lcitool +++ b/guests/lcitool @@ -482,7 +482,7 @@ class Application: raise Error("Failed to install '{}'".format(host)) def _action_update(self, hosts, projects, _branch): - self._execute_playbook("update", hosts, project, None) + self._execute_playbook("update", hosts, projects, None) def _action_build(self, hosts, projects, branch): if branch is None: -- Andrea Bolognani / Red Hat / Virtualization

Provide some examples and scenarios. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- guests/README.markdown | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/guests/README.markdown b/guests/README.markdown index ddf0149..870619e 100644 --- a/guests/README.markdown +++ b/guests/README.markdown @@ -46,6 +46,25 @@ related projects, while running will update all hosts and prepare them to build libvirt both as a native library and, where supported, as a Windows library using MinGW. +Once hosts have been prepared following the steps above, you can use +`lcitool` to perform builds as well: for example, running + + lcitool -a build -h '*debian*' -p libvirt-python -b master + +will fetch libvirt-python's `master` branch and build it on all Debian +hosts. + +This feature can be used to validate a series you've been working on +will not introduce any CI failures when merged: assuming you have a +personal clone of `$project` hosted somewhere and your changes are in +the `feature` branch, you can tweak the value of `git_url` in +`playbooks/build/projects/$project.yml` so that it points to your own +repository and then run + + lcitool -a build -h all -p $project -b feature + +to spot issues early. + Host setup ---------- -- 2.17.1
participants (1)
-
Andrea Bolognani