summaryrefslogtreecommitdiff
path: root/poc
diff options
context:
space:
mode:
authorAnsis Atteka <aatteka@ovn.org>2018-04-23 14:53:25 -0700
committerAnsis Atteka <aatteka@ovn.org>2018-04-25 10:26:53 -0700
commit3a2ceb01c81b463eb69db04c4971d4373a835e42 (patch)
tree4c296cfc2ff4c4a307c5ab52150efa3a71e80d0b /poc
parent9aef43f08593a0886b3b3fd3f88990d2e0be7958 (diff)
downloadopenvswitch-3a2ceb01c81b463eb69db04c4971d4373a835e42.tar.gz
poc: Automate building of Fedora rpm packages
This patch automates building of Fedora rpm packages (Just like we are already doing this for for CentOS and Ubuntu). Signed-off-by: Ansis Atteka <aatteka@ovn.org> Acked-by: Aaron Conole <aconole@redhat.com>
Diffstat (limited to 'poc')
-rw-r--r--poc/builders/Vagrantfile12
-rw-r--r--poc/playbook-fedora-builder.yml128
2 files changed, 140 insertions, 0 deletions
diff --git a/poc/builders/Vagrantfile b/poc/builders/Vagrantfile
index af2986789..9edc468a3 100644
--- a/poc/builders/Vagrantfile
+++ b/poc/builders/Vagrantfile
@@ -30,4 +30,16 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
end
end
+ # Fedora builder host
+ config.vm.define "fedorabuilder" do |builder|
+ builder.vm.hostname = "fedoraubuilder.dev"
+ builder.vm.box = "fedora/27-cloud-base"
+ builder.vm.synced_folder "../../", "/git/ovs", type: "rsync",
+ rsync__args: ["--archive", "--delete", "-z"]
+ builder.vm.provision "builder", type: "ansible" do |ansible|
+ ansible.playbook = "../playbook-fedora-builder.yml"
+ ansible.sudo = true
+ end
+ end
+
end
diff --git a/poc/playbook-fedora-builder.yml b/poc/playbook-fedora-builder.yml
new file mode 100644
index 000000000..70f0b6ff2
--- /dev/null
+++ b/poc/playbook-fedora-builder.yml
@@ -0,0 +1,128 @@
+---
+- hosts: all
+ become: true
+ name: builder
+
+ gather_facts: false
+ pre_tasks:
+
+ - name: Install python2 for Ansible
+ raw: bash -c "test -e /usr/bin/python || (dnf -y install python2)"
+ register: output
+ changed_when: output.stdout != ""
+
+ - name: Gathering Facts
+ setup:
+
+ tasks:
+ - name: Create Ansible Local Facts Directory
+ file: path=/etc/ansible/facts.d state=directory
+
+ - name: Install "yum-utils", "rpmdevtools", "createrepo", "httpd", "git"
+ dnf: name={{item}} state=present
+ with_items:
+ - yum-utils
+ - rpmdevtools
+ - createrepo
+ - httpd
+ - git
+ - libselinux-python
+
+ - name: Initiate Build Numbering
+ copy:
+ content: '{ "release":"1" }'
+ dest: "/etc/ansible/facts.d/builder.fact"
+ force: no
+
+ - name: Set source directory for building
+ set_fact:
+ SOURCE: "/root/rpmbuild/SOURCES"
+
+ - name: Reload Ansible Local Facts
+ setup: filter=ansible_local
+
+ - name: Remove untracked files from Open vSwitch GIT repository
+ command: chdir=/git/ovs/ git clean -xdf
+
+ - name: Reset Open vSwitch GIT repository to last comitted state
+ command: chdir=/git/ovs/ git reset --hard
+
+ - name: Generate spec files for easy build dependency retrieval
+ shell: sed -e 's/@VERSION@/0.0.1/' {{item}}.in > /tmp/{{item}}
+ args:
+ chdir: /git/ovs/rhel
+ with_items:
+ - openvswitch-fedora.spec
+ - openvswitch-kmod-fedora.spec
+ - openvswitch-dkms.spec
+
+ - name: Install build dependencies specified from spec files
+ shell: echo "y" | yum-builddep /tmp/{{item}}
+ with_items:
+ - openvswitch-fedora.spec
+ - openvswitch-kmod-fedora.spec
+ - openvswitch-dkms.spec
+
+ - name: Create rpm dev tree
+ command: rpmdev-setuptree
+
+ - name: Run "./boot.sh"
+ command: chdir=/git/ovs/ ./boot.sh
+
+ - name: Run "./configure"
+ command: chdir=/git/ovs/ ./configure
+
+ - name: Run "make dist"
+ command: chdir=/git/ovs/ make dist
+
+ - name: Parse out Open vSwitch version from "configure.ac"
+ command: chdir=/git/ovs autoconf -t AC_INIT:'$2'
+ register: version
+
+ - name: Copy source tarball to rpm dev tree
+ command: cp /git/ovs/openvswitch-{{version.stdout}}.tar.gz {{SOURCE}}
+
+ - name: Unarchive openvswitch source tarball
+ unarchive:
+ src: "{{SOURCE}}/openvswitch-{{version.stdout}}.tar.gz"
+ dest: "{{SOURCE}}"
+ remote_src: yes
+
+ - name: Update release number in spec files
+ lineinfile:
+ path: "{{SOURCE}}/openvswitch-{{version.stdout}}/rhel/{{item}}"
+ regexp: '^Release:'
+ line: "Release: {{ ansible_local.builder.release }}"
+ with_items:
+ - openvswitch-fedora.spec
+ - openvswitch-kmod-fedora.spec
+ - openvswitch-dkms.spec
+
+ - name: Build Open vSwitch user space rpms
+ command: rpmbuild -bb --without check rhel/openvswitch-fedora.spec
+ args:
+ chdir: "{{SOURCE}}/openvswitch-{{version.stdout}}"
+
+ - name: Build Open vSwitch kmod rpm
+ command: rpmbuild -bb --without check rhel/openvswitch-fedora.spec
+ args:
+ chdir: "{{SOURCE}}/openvswitch-{{version.stdout}}"
+
+ - name: Build Open vSwitch dkms rpm
+ command: rpmbuild -bb --without check rhel/openvswitch-dkms.spec
+ args:
+ chdir: "{{SOURCE}}/openvswitch-{{version.stdout}}"
+
+ - name: Copy RPM packages to /var/www/html
+ command: cp -r /root/rpmbuild/RPMS/ /var/www/html
+
+ - name: Create RPM Package index file for repository
+ command: chdir=/var/www/html createrepo /var/www/html
+
+ - name: Make sure Apache is running
+ systemd: state=started name=httpd
+
+ - name: Bump up Build Number
+ copy:
+ content: '{ "release":"{{ansible_local.builder.release|int+1}}" }'
+ dest: "/etc/ansible/facts.d/builder.fact"