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.
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.