53 lines
No EOL
1.1 KiB
YAML
53 lines
No EOL
1.1 KiB
YAML
variables:
|
|
DOCKER_TLS_CERTDIR: "/certs"
|
|
CONTAINER_IMAGE: "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG-$CI_COMMIT_SHORT_SHA"
|
|
RAILS_ENV: "production"
|
|
|
|
# Add this service
|
|
services:
|
|
- docker:20.10.16-dind
|
|
|
|
stages:
|
|
- build
|
|
- test
|
|
- deploy
|
|
|
|
before_script:
|
|
- docker info
|
|
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
|
|
|
|
build:
|
|
stage: build
|
|
image: docker:20.10.16
|
|
script:
|
|
- docker build -t $CONTAINER_IMAGE .
|
|
- docker push $CONTAINER_IMAGE
|
|
only:
|
|
- main
|
|
- merge_requests
|
|
|
|
test:
|
|
stage: test
|
|
image: ruby:3.2.2
|
|
services:
|
|
- postgres:latest
|
|
- docker:20.10.16-dind
|
|
variables:
|
|
POSTGRES_DB: "rails_test"
|
|
POSTGRES_USER: "postgres"
|
|
POSTGRES_PASSWORD: "password"
|
|
DATABASE_URL: "postgresql://postgres:password@postgres:5432/rails_test"
|
|
script:
|
|
- apt-get update -qq && apt-get install -y docker.io
|
|
- docker run --rm $CONTAINER_IMAGE bin/rails db:create db:migrate RAILS_ENV=test
|
|
- docker run --rm $CONTAINER_IMAGE bin/rails test
|
|
only:
|
|
- main
|
|
- merge_requests
|
|
|
|
deploy:
|
|
stage: deploy
|
|
script:
|
|
- echo "Deploying to production..."
|
|
only:
|
|
- main |