1
votes

I want to use postgres in cloudbees dev cloud, I read this article: http://wiki.cloudbees.com/bin/view/DEV/PostgreSQL

But, I run bundle, I got error:

Installing pg (0.15.1) .......

Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

    /usr/bin/ruby extconf.rb  checking for pg_config... no No pg_config... trying anyway. If building fails, please try again with 

--with-pg-config=/path/to/pg_config checking for libpq-fe.h... no Can't find the 'libpq-fe.h header * extconf.rb failed * Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need configuration options.

Provided configuration options: --with-opt-dir --without-opt-dir --with-opt-include --without-opt-include=${opt-dir}/include --with-opt-lib --without-opt-lib=${opt-dir}/ --with-make-prog --without-make-prog --srcdir=. --curdir --ruby=/usr/bin/ruby --with-pg --without-pg --with-pg-dir --without-pg-dir --with-pg-include --without-pg-include=${pg-dir}/include --with-pg-lib --without-pg-lib=${pg-dir}/ --with-pg-config --without-pg-config --with-pg_config --without-pg_config

Gem files will remain installed in /home/jenkins/.gem/ruby/1.9.1/gems/pg-0.15.1 for inspection. Results logged to /home/jenkins/.gem/ruby/1.9.1/gems/pg-0.15.1/ext/gem_make.out An error occurred while installing pg (0.15.1), and Bundler cannot continue. Make sure that gem install pg -v '0.15.1' succeeds before bundling.

What do I do next?

3

3 Answers

1
votes

There are two approaches to resolving this:

1) Use the workaround above, by adding

PATH=/scratch/jenkins/postgresqls/postgresql-9.2.4-x86_64/bin:$PATH

This is not ideal as we are just about to move that path to support pull-request builds

2) Combine the two steps

In your build you will need to combine the PostgreSQL and Ruby installation steps so that the environment is configured properly.

I personally recommend using a script to do the build - ./bin/run-ci - as opposed to typing everything into Jenkins.

This keeps your build process change controlled and documented - and lets you roll out changes across multiple build servers quite rapidly.

1
votes

I use single shell script, and I declare once at the top:

export POSTGRESQL_VERSION=9.2.4
curl -s -o use-postgresql https://repository-cloudbees.forge.cloudbees.com/distributions/ci-addons/postgresql/use-postgresql
source ./use-postgresql

Then I don't necessary pass environment variables between shells.

0
votes

My work around:

Set PATH above bundle, and 9.2.4 is my installing version.

PATH=/scratch/hudson/postgresqls/postgresql-9.2.4-x86_64/bin:$PATH

Then I can bundle completed :)