This is awesome. Thanks Guillaume.

> On 17 Jan 2016, at 2:49 PM, Guillaume Belrose <[email protected]> wrote:
> 
> Hi all, 
> 
> Some time ago, I have written some Ansible playbooks and roles to build RPMs 
> for CouchDB 1.6.1 (CouchDB itself and SpiderMonkey 1.85). I’ve focused on 
> CentOS 6.x as this is the environment that we use in production (we are not 
> on CentOS 7 yet). The RPMs are built with FPM 
> (https://github.com/jordansissel/fpm <https://github.com/jordansissel/fpm>) 
> which is quite easy to use ( I am no RPM expert, but it seems to work just 
> fine). I’ve done a quick check, and the same approach seems to work fine when 
> building CouchDB 2.0 from the latest Github sources. Essentially I do the 
> following (via Jenkins): I spin a CentOS VM which is my build server. I then 
> execute the Ansible playbook on that build server to build the RPMs for 
> SpiderMonkey and CouchDB. The RPMs can then be fetched via SSH or HTTP. 
> 
> You can have a look at [1] to see the kind of work the Ansible playbook does 
> (this won’t work out of the box as it needs other files, but I just want to 
> illustrate roughly how it works).
> 
> As I am investigating CouchDB 2.x, I am planning on writing a new version to 
> support 2.0, I am more than happy to share it as well.
> 
> [1] 
> 
> ---
> - name: create the directory to store the RPMs
>  file: path={{ RPMS_DIRECTORY }} state=directory 
> 
> - name: install build tools
>  yum: name={{ item }}
>  with_items:
>  - zip
>  - unzip
>  - rpm-build
> 
> - name: check if fpm is already installed
>  shell: gem list fpm --version {{ FPM_VERSION }} -i
>  ignore_errors: true
>  register: check_fpm
> 
> - include: install_fpm.yaml
>  when: check_fpm.stdout.find('true')==-1
> 
> - name: download the source code for Mozilla SpiderMonkey 1.85
>  get_url: url=http://ftp.mozilla.org/pub/mozilla.org/js/js185-1.0.0.tar.gz 
> dest=/tmp
> 
> - name: unarchive the tar file
>  shell: chdir=/tmp tar -xzf js185-1.0.0.tar.gz
> 
> - name: compile Mozilla SpiderMonkey 1.8.5
>  shell: chdir=/tmp/js-1.8.5/js/src {{ item }}
>  with_items:
>  - ./configure
>  - make --silent 
>  - make DESTDIR=install --silent install 
> 
> - name: fix the libmozjs185.so.1.0 symlink
>  file: state=link 
> path=/tmp/js-1.8.5/js/src/install/usr/local/lib/libmozjs185.so.1.0 
> src=libmozjs185.so.1.0.0 force=yes
>  tags: fix_symlink1
> 
> - name: fix the libmozjs185.so symlink
>  file: state=link 
> path=/tmp/js-1.8.5/js/src/install/usr/local/lib/libmozjs185.so 
> src=libmozjs185.so.1.0 force=yes
>  tags: fix_symlink2
> 
> - name: package Mozilla SpiderMonkey 1.8.5 as an rpm with fpm
>  shell: fpm -s dir -t rpm -n js -v 1.85 -f -p {{ RPMS_DIRECTORY }} -C 
> /tmp/js-1.8.5/js/src/install usr 
> 
> - name: install SpiderMonkey from the RPM file (this is required in order to 
> compile CouchDB)
>  yum: name={{ RPMS_DIRECTORY }}/js-1.85-1.x86_64.rpm
> 
> - name: install Erlang
>  yum: name=erlang
> 
> - name: download the source code for Apache CouchDB 1.6.1
>  get_url: 
> url=http://www.eu.apache.org/dist/couchdb/source/1.6.1/apache-couchdb-1.6.1.tar.gz
>  dest=/tmp
> 
> - name: unarchive the source code for Apache CouchDB 1.6.1
>  shell: chdir=/tmp tar -xzf apache-couchdb-1.6.1.tar.gz
> 
> - name: install icu-devel
>  yum: name=libicu-devel
> 
> - name: compile Apache Couchdb 1.6.1
>  shell: chdir=/tmp/apache-couchdb-1.6.1 {{ item }}
>  with_items:
>  - ./configure --with-erlang=/usr/lib64/erlang/usr/include
>  - make --silent
>  - make DESTDIR=/tmp/couchdb --silent install
> 
> - name: package Apache CouchDB 1.6.1 as an rpm with fpm
>  shell: fpm -s dir -t rpm -n couchdb -v 1.6.1 -f -p {{ RPMS_DIRECTORY }} -C 
> /tmp/couchdb usr
> 
> - name: install the Apache2 webserver 
>  yum: name=httpd
> 
> - name: add a symlink to serve the RPMS via Apache2
>  file: path=/var/www/html/rpms src={{ RPMS_DIRECTORY }} state=link
> 
> - name: ensure Apache2 is running
>  service: name=httpd state=started
> 
> 
> 

Reply via email to