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