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=test
could 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?
Can you post answer if you were able to solve it ?
Thanks
Hi,
This means the database is not setup when rake is executed. Modify so the database is created first.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.