diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..973d14a0 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,3 @@ +/.bundle +/.env +/.git diff --git a/.travis.yml b/.travis.yml index d3c02b86..869e318e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -18,9 +18,6 @@ env: - RAILS_ENV=test - RAILS_ENV=test_logs -matrix: - fast_finish: true - before_install: - gem install bundler -v 1.12.4 @@ -29,3 +26,13 @@ install: before_script: - cp config/database.yml.travis config/database.yml + +jobs: + fast_finish: true + include: + - stage: ":ship: it to Quay.io" + sudo: required + dist: trusty + install: skip + before_script: skip + script: ./script/docker-build-and-push diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..774501f1 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,18 @@ +FROM ruby:2.3.1 + +LABEL maintainer Travis CI GmbH + +# throw errors if Gemfile has been modified since Gemfile.lock +RUN bundle config --global frozen 1 + +RUN mkdir -p /usr/src/app +WORKDIR /usr/src/app + +COPY Gemfile /usr/src/app +COPY Gemfile.lock /usr/src/app + +RUN bundle install + +COPY . /usr/src/app + +CMD RAILS_ENV=${RAILS_ENV-development} bundle exec rake db:migrate diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000..81e2c0f2 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,4 @@ +version: "2" +services: + migrations: + build: . diff --git a/script/docker-build-and-push b/script/docker-build-and-push new file mode 100755 index 00000000..ec1eb4e0 --- /dev/null +++ b/script/docker-build-and-push @@ -0,0 +1,23 @@ +#!/bin/bash + +set -ev +app_name="migrations" +local_image="travismigrations_$app_name" # Docker Compose removes dashes and expects the name to end with the build app name +quay_image=quay.io/travisci/travis-migrations; + +docker-compose build "$app_name"; +docker login -u="$QUAY_ROBOT_HANDLE" -p="$QUAY_ROBOT_TOKEN" quay.io; +docker images; + +docker tag $local_image $quay_image:$TRAVIS_BRANCH; +docker push $quay_image:$TRAVIS_BRANCH; + +docker tag $local_image $quay_image:${TRAVIS_COMMIT:0:7}; +docker push $quay_image:${TRAVIS_COMMIT:0:7}; + +if [ ${TRAVIS_BRANCH} = "master" ]; then + docker tag $local_image $quay_image:latest; + docker push $quay_image:$TRAVIS_BRANCH; +fi + +exit 0;