Come for the products,
stay for the community

The Atlassian Community can help you and your team get more value out of Atlassian products and practices.

Atlassian Community about banner
4,363,997
Community Members
 
Community Events
168
Community Groups

Pipeline posgres service not working.

I configured my pipeline file like this:

# This is a sample build configuration for Ruby.
# Check our guides at https://confluence.atlassian.com/x/8r-5Mw for more examples.
# Only use spaces to indent your .yml configuration.
# -----
# You can specify a custom docker image from Docker Hub as your build environment.

pipelines:
default:
- step:
name: Build
image: node:8.6
script: # Modify the commands below to build your repository.
- npm install
- npm run build
- step:
name: Test
caches:
- bundler
image: ruby:2.3.3
script: # Modify the commands below to build your repository.
- apt-get update
- apt-get install -y build-essential libpq-dev nodejs
- cp env.sample.yml config/application.yml
- bundle install
- bundle exec rake db:setup db:migrate RAILS_ENV=test
- bundle exec rspec
services:
- postgres
- redis

definitions:
caches:
bundler: ./vendor
services:
postgres:
image: postgres
restart: always
environment:
POSTGRES_DB: pipelines
POSTGRES_USER: test_user
POSTGRES_PASSWORD: test_user_password
redis:
image: redis

 but always get an error when rake db:setup. It said that cannot connect postgres:

+ bundle exec rake db:setup db:migrate RAILS_ENV=testcould not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

but I can see that the postgres is running when building this pipeline. Does anybody meet the same problem?

2 answers

Can you post answer if you were able to solve it ?

Thanks

0 votes
edwin Rising Star Dec 23, 2017

Hi,

This means the database is not setup when rake is executed. Modify so the database is created first.

I have same issue. here are images. Postgres service is avialable but can't establish connction.

image: ruby:2.4.0

pipelines:
default:
- step:
caches:
- bundler
services:
- postgres
script: # Modify the commands below to build your repository.
- export DATABASE_URL=postgresql://test_user:test_user_password@localhost/madefor_test
- apt-get update && apt-get install -y build-essential nodejs
- gem install bundler
- bundle install
- apt-get update && apt-get install -y postgresql-client
- RAILS_ENV=test rake db:create rake db:setup
- rake db:test:prepare
- rspec

definitions:
services:
postgres:
image: postgres
environment:
POSTGRES_DB: madefor_test
POSTGRES_USER: test_user
POSTGRES_PASSWORD: test_user_password
caches:
bundler: ./vendor

Screen Shot 2018-11-29 at 9.11.39 PM.pngScreen Shot 2018-11-29 at 9.12.43 PM.png

Please use the below one. This is worked for me. 

bitbucket-pipelines.yml
image: ruby:2.6.6

pipelines:
pull-requests:
'**':
- step:
name: RSpec Testcases
caches:
- bundler
script:
- export DATABASE_URL=postgresql://test_user:test_user_password@localhost/pipelines
- gem install bundler
- bundle config set path 'vendor/bundle'
- bundle install
- rails -v
- ruby -v
- psql --version
- RAILS_ENV=test bundle exec rails db:drop db:create db:migrate
- bundle exec rspec
services:
- postgres
definitions:
caches:
bundler: vendor/bundle
services:
postgres:
image: postgres:12.3
variables:
POSTGRES_DB: pipelines
POSTGRES_USER: test_user
POSTGRES_PASSWORD: test_user_password

 

Hello  @vigneshb17, I was also experiencing the same issue. Following your recommendation my pipeline completed without errors; however, do you have any clue as to why it works when defining the DATABASE_URL in the step, rather than the service definition?

Thank you.

Jaime González

Suggest an answer

Log in or Sign up to answer
TAGS

Atlassian Community Events