Build docker image on TravisCI

Dominik Sander 8 years ago
parent
commit
995250d3b8
3 changed files with 41 additions and 5 deletions
  1. 2 0
      .dockerignore
  2. 25 5
      .travis.yml
  3. 14 0
      build_docker_image.sh

+ 2 - 0
.dockerignore

@@ -11,6 +11,8 @@ db/*.sqlite3
11 11
 public/system/*
12 12
 coverage
13 13
 spec/tmp/*
14
+.travis.yml
15
+build_docker_image.sh
14 16
 
15 17
 # Copied from .gitignore
16 18
 *.rbc

+ 25 - 5
.travis.yml

@@ -1,11 +1,29 @@
1
-sudo: false
1
+dist: trusty
2
+sudo: required
2 3
 language: ruby
4
+services:
5
+  - docker
6
+  - postgresql
3 7
 env:
4 8
   global:
5 9
     - APP_SECRET_TOKEN=b2724973fd81c2f4ac0f92ac48eb3f0152c4a11824c122bcf783419a4c51d8b9bba81c8ba6a66c7de599677c7f486242cf819775c433908e77c739c5c8ae118d
10
+    - secure: fzmSI7PQz6CJiIJNAtLAuy3TMmYCrK4bUil3uufh8JkHfpSGWOZt2i6fZ8yZ7pzwG5Aw7eZDgdFsNcEPJlgUDJhlwjg+QxCJslhotTQ9qI3Ieo85peWlU9dZFTOZcrCu0net/hY2FE4ZpTRb5r8A/DRv9ukA8P8tShhePCjckgg=
11
+    - secure: YjW07LpRSiC9xB6PhLQ4LVv2VphvF3IacV43PLfvzdagjy14yAwKXTUlSadgRaMbndB2dlCTe3YcY11a/xtX/2HDrF14NHPXQdL7e2dJUS3CDLSKZK26x1SOiaaDIrl1jO1xr5kOUd+564MAcNUzDTJQR4CrWl/5t6EwW4iYQVc=
12
+    - secure: RJiSTB9Anax6uL6mgYY1m42w71ohlsfIlVCk7ho6W19ZfSzQOfom0mBdeNwfgmXsMMnvnqatfxSg8k3C//pRtI/tjzAovHd7t1YIN1IkDNf9uSpzrIeXXc4fSHaVxnl512oI/eBQy9MSBjVZjrg5XEzLKKEGsZCai+ZKB4PS+nM=
6 13
   matrix:
7 14
     - DATABASE_ADAPTER=mysql2
8 15
     - DATABASE_ADAPTER=postgresql DATABASE_USERNAME=postgres
16
+    - DOCKER_IMAGE=cantino/huginn-single-process DOCKERFILE=docker/single-process/Dockerfile
17
+    - DOCKER_IMAGE=cantino/huginn DOCKERFILE=docker/multi-process/Dockerfile
18
+matrix:
19
+  exclude:
20
+    - env: DOCKER_IMAGE=cantino/huginn-single-process DOCKERFILE=docker/single-process/Dockerfile
21
+    - env: DOCKER_IMAGE=cantino/huginn DOCKERFILE=docker/multi-process/Dockerfile
22
+  include:
23
+    - rvm: 2.3.0
24
+      env: DATABASE_ADAPTER=mysql2 DOCKER_IMAGE=cantino/huginn-single-process DOCKERFILE=docker/single-process/Dockerfile
25
+    - rvm: 2.3.0
26
+      env: DATABASE_ADAPTER=mysql2 DOCKER_IMAGE=cantino/huginn DOCKERFILE=docker/multi-process/Dockerfile
9 27
 rvm:
10 28
 - 2.0.0
11 29
 - 2.1
@@ -13,9 +31,11 @@ rvm:
13 31
 - 2.3.0
14 32
 cache: bundler
15 33
 bundler_args: --without development production
16
-before_script:
17
-- bundle exec rake db:create db:migrate
18
-script: bundle exec rake
34
+before_install:
35
+  - sudo apt-get -qq update
36
+  - sudo apt-get install -y mysql-server
37
+script:
38
+  - if [ -z "${DOCKER_IMAGE}" ]; then bundle exec rake db:create db:migrate && bundle exec rake; else ./build_docker_image.sh; fi
19 39
 notifications:
20 40
   irc:
21 41
     channels:
@@ -29,4 +49,4 @@ notifications:
29 49
       - https://webhooks.gitter.im/e/5f92cc0393c6f1defe0d
30 50
     on_success: change  # options: [always|never|change] default: always
31 51
     on_failure: always  # options: [always|never|change] default: always
32
-    on_start: false     # default: false
52
+    on_start: never     # options: [always|never|change] default: never

+ 14 - 0
build_docker_image.sh

@@ -0,0 +1,14 @@
1
+#!/bin/bash
2
+set -ev
3
+
4
+docker pull $DOCKER_IMAGE
5
+docker build -t $DOCKER_IMAGE -f $DOCKERFILE .
6
+
7
+if [[ -n "${DOCKER_USER}" && "${TRAVIS_PULL_REQUEST}" = 'false' && "${TRAVIS_BRANCH}" = "master" ]]; then
8
+  docker login -e $DOCKER_EMAIL -u $DOCKER_USER -p $DOCKER_PASS
9
+  docker tag $DOCKER_IMAGE $DOCKER_IMAGE:$TRAVIS_COMMIT
10
+  docker push $DOCKER_IMAGE
11
+  docker push $DOCKER_IMAGE:$TRAVIS_COMMIT
12
+else
13
+  echo "Docker image are only pushed for builds of the master branch when Docker Hub credentials are present."
14
+fi