From 31e8810a5384f973e2c16ccf9b02679c743ea3df Mon Sep 17 00:00:00 2001
From: Daniel Ecer <de-code@users.noreply.github.com>
Date: Thu, 1 Nov 2018 15:27:16 +0000
Subject: [PATCH] use docker-compose for ci build (#37)

---
 .env                  |  2 ++
 .travis.yml           |  4 ++--
 Dockerfile            |  6 +++++-
 Jenkinsfile           | 22 +++++++++++++---------
 docker-compose.ci.yml |  4 ++++
 docker-compose.yml    |  8 ++++++++
 project_tests.sh      |  4 +++-
 7 files changed, 37 insertions(+), 13 deletions(-)
 create mode 100644 .env
 create mode 100644 docker-compose.ci.yml
 create mode 100644 docker-compose.yml

diff --git a/.env b/.env
new file mode 100644
index 0000000..7c84e9e
--- /dev/null
+++ b/.env
@@ -0,0 +1,2 @@
+COMPOSE_PROJECT_NAME=sciencebeam-gym
+IMAGE_TAG=develop
diff --git a/.travis.yml b/.travis.yml
index b5027ce..451e3ba 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -5,8 +5,8 @@ services:
   - docker
 
 before_install:
-  - docker build -t elife/sciencebeam-gym .
+  - docker-compose -f docker-compose.yml -f docker-compose.ci.yml build
 
 script:
-  - ./project_tests.sh
+  - docker-compose -f docker-compose.yml -f docker-compose.ci.yml run --rm sciencebeam-gym ./project_tests.sh
 
diff --git a/Dockerfile b/Dockerfile
index 7013974..181da08 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,8 +1,12 @@
 FROM python:2.7.14-stretch
+
 ENV PROJECT_HOME=/srv/sciencebeam-gym
 
+ENV VENV=${PROJECT_HOME}/venv
+RUN virtualenv ${VENV}
+ENV PYTHONUSERBASE=${VENV} PATH=${VENV}/bin:$PATH
+
 WORKDIR ${PROJECT_HOME}
-RUN virtualenv venv
 
 COPY requirements.prereq.txt ${PROJECT_HOME}/
 RUN venv/bin/pip install -r requirements.prereq.txt
diff --git a/Jenkinsfile b/Jenkinsfile
index 6c7e828..a2f088a 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -1,25 +1,29 @@
 elifeLibrary {
     def commit
+
     stage 'Checkout', {
         checkout scm
         commit = elifeGitRevision()
     }
 
-    stage 'Build image', {
-        sh 'docker build -t elife/sciencebeam-gym .'
-    }
+    node('containers-jenkins-plugin') {
+        stage 'Build images', {
+            checkout scm
+            dockerComposeBuild(commit)
+        }
 
-    stage 'Run tests', {
-        elifeLocalTests './project_tests.sh'
+        stage 'Project tests', {
+            dockerComposeRun(
+                "sciencebeam-gym",
+                "./project_tests.sh",
+                commit
+            )
+        }
     }
 
     elifeMainlineOnly {
         stage 'Merge to master', {
             elifeGitMoveToBranch commit, 'master'
         }
-
-        stage 'Downstream', {
-            build job: '/dependencies/dependencies-sciencebeam-update-sciencebeam-gym', wait: false, parameters: [string(name: 'commit', value: commit)]
-        }
     }
 }
diff --git a/docker-compose.ci.yml b/docker-compose.ci.yml
new file mode 100644
index 0000000..e479995
--- /dev/null
+++ b/docker-compose.ci.yml
@@ -0,0 +1,4 @@
+version: '3'
+
+# to add images that are only used for tests
+services: {}
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 0000000..667ce27
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,8 @@
+version: '3'
+
+services:
+    sciencebeam-gym:
+        build:
+            context: .
+            dockerfile: Dockerfile
+        image: elifesciences/sciencebeam-gym:${IMAGE_TAG}
diff --git a/project_tests.sh b/project_tests.sh
index e24ca94..9584518 100755
--- a/project_tests.sh
+++ b/project_tests.sh
@@ -1,4 +1,6 @@
 #!/bin/bash
 set -e
 
-docker run --rm elife/sciencebeam-gym /bin/bash -c 'venv/bin/pip install pytest nose && venv/bin/pytest sciencebeam_gym'
+pip install -r requirements.dev.txt
+
+pytest sciencebeam_gym
-- 
GitLab