mirror of
https://github.com/bckelley/cgm-remote-monitor.git
synced 2026-08-24 03:14:12 -05:00
Build docker images with Travis
- Add Docker hub secrets to Travis - Push to Docker Hub - Ignore .git directory and things like coverage logs, so as to minimise the container size I placed the Docker hub login commands in the commands in the .travis.yml file, rather than in the Makefile. This is because the Makefile would display the Docker password to stdout, which would then become publically available in the Travis logs. I also run `git clean -fd .` and `git checkout -- .` to ensure that anything written to the repo directory during tests isn't added to the docker container. I do this in the Travis file rather than the Makefile, since running things with `make` reverted my changes while experimenting, and I want to save others the same issue. To make this work on Travis, we need to set secrets for the DOCKER_USER and DOCKER_PASS environment variable.
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
# Don't include the .git history in the Docker image:
|
||||
.git
|
||||
|
||||
# Items from .gitignore
|
||||
bower_components/
|
||||
node_modules/
|
||||
bundle/bundle.out.js
|
||||
.idea/
|
||||
*.iml
|
||||
my.env
|
||||
*.env
|
||||
static/bower_components/
|
||||
.*.sw?
|
||||
.DS_Store
|
||||
.vagrant
|
||||
/iisnode
|
||||
coverage/
|
||||
npm-debug.log
|
||||
@@ -14,9 +14,15 @@ services:
|
||||
- mongodb
|
||||
- docker
|
||||
script: make travis
|
||||
after_success:
|
||||
- nvm version
|
||||
- if [[ ! -z "$DOCKER_USER" ]] && [[ "$(nvm version)" = "v0.12."* ]]; then docker login -u ${DOCKER_USER} -p ${DOCKER_PASS} && git checkout -- . && git clean -fd . && make docker_release; fi
|
||||
after_script: make report
|
||||
env:
|
||||
global:
|
||||
- CXX=g++-4.8
|
||||
- secure: "QW33rAsCulSORXkSQK9fQotS5GuXwsr3P0KX+R0CE88N0rNE1gZuKZL5cIfYvHTdd4BiReMWja6Cox+QJJC/lu3UKZTPdArT5yUMvJ1AP8nbzzEYR1gKMy7DmcQ7OaZ8lD8LGG27P1+uRTiQ+94FmR31izg8jVXjD6ogEAayDMy5in3HoklnG+07RLdqo/8N5N7LoPcajHG051m/DRxvREdLg2L9K4yMqGKi1fpNFFti8L8jm5jAlylDlL9NGWdUj/4G1NeNIjkFrYZFodvd6R8oBDf8C6V6Tj0yvdyUQBLivTD9B8gKUWpyqE9fuy1Hz7UrZ9I9m7X6G5WPneVBRFRJpoRtg/VjiNrmbDUkBJXeXniGm2pi8dxcxV8lQ0m7D3S2UkJwNutEkGt9tp5y/RSEUo+7x8AnOIBb+H8f0SitUX9j3z1rzHfr4FGzW0EYprM9u8xzruOaZWF2yFe42YrJFgh22WWauhTtm1lgTO25xv/YP+wiVyshgswXgRuKPan5nal7WnIzP++yhAvAwYGs9z7zhQ9h63AaEav+4rjzJPHlD0hh2Y0lkVvcwTafkmPwVEkhV9R+QqhXX2Y2UcTMr77zJGE5S545WOWQpf2GmCewduixzCgjPEXLAhAI67biJRUxYaiLyZrAk8XouA9P8FzIcvqsOpfzWXcNXAc="
|
||||
- secure: "c9XEIaL9ZvhpPwXN893Ek3dNp5c1fMb1TzAiK37EzLxNbyVtB5vOXw3qQGFtgwJBA/2DodDQL4ZwuR5EEJgSfpPrH3D/A6BFTIXOGzvPwmqSTYY6fV3LOmEf8AIy4Y2N2AitMkjrGHS0GfwTOr23horrVSnjXHwsGilN9wcNIuh2RDCknRTxJWY9eK6hOh4/F+TSW7hESQH1Zzk0pDUt127wifmkhBf93GmJPpX8b8/fmb6osNkfCUdy0Ec7h7SafJWXcSxrp8p+AP2m54f8EtiKY07pN0pt8RKu66fh4BEQPUp4P2/u26oWHC2P1o2meAtoFde2Fzk5BjFCKgy3DZcIFjJ9BFUpMzYFQ5WtNAcHPHvIjTUz63peFsXsAq7dlwBjWbAUJWtyvk8CGvLCI20/Q2qSEB4RciEXYGaGdQmCLuPnmTwN9Pa1CF1bIYWgK7ztYhe02GDUJJa3AikqIdEDnI0eodKmkTa+Do9nrLgZLWhG8HXm06SySICClnhqUmbAAHuliQxSdnDixuwhgcBkkPX/5Ta/pHIz0u5r9mdGKShKg1irC1alV4jtr6dJU7ly/orhW8zvoV1mu6C75lnc3aeqc1CVPMyowLUS+y+XQpOiGds57n0UlRFq38LE5n06ODv1x2eMFf8Wk+pbxgaOI4Co338A4opRjLPbULs="
|
||||
addons:
|
||||
apt:
|
||||
sources:
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
FROM node:0.12
|
||||
|
||||
MAINTAINER Nightscout Contributors
|
||||
|
||||
RUN apt-get update && \
|
||||
apt-get -y dist-upgrade && \
|
||||
DEBIAN_FRONTEND=noninteractive apt-get install -y \
|
||||
git \
|
||||
nodejs \
|
||||
nodejs-legacy \
|
||||
npm && \
|
||||
apt-get -y clean
|
||||
|
||||
RUN mkdir -p /opt/app
|
||||
ADD . /opt/app
|
||||
WORKDIR /opt/app
|
||||
|
||||
RUN npm install && \
|
||||
npm run postinstall && \
|
||||
npm run env
|
||||
|
||||
EXPOSE 1337
|
||||
|
||||
CMD ["node", "server.js"]
|
||||
@@ -24,6 +24,8 @@ ISTANBUL=./node_modules/.bin/istanbul
|
||||
ANALYZED=./coverage/lcov.info
|
||||
export CODACY_REPO_TOKEN=e29ae5cf671f4f918912d9864316207c
|
||||
|
||||
DOCKER_IMAGE=oskarpearson/cgm-remote-monitor-testing
|
||||
|
||||
all: test
|
||||
|
||||
coverage:
|
||||
@@ -45,4 +47,26 @@ travis:
|
||||
NODE_ENV=test ${MONGO_SETTINGS} \
|
||||
${ISTANBUL} cover ${MOCHA} --report lcovonly -- -R tap ${TESTS}
|
||||
|
||||
.PHONY: all coverage report test travis
|
||||
docker_release:
|
||||
# Get the version from the package.json file
|
||||
$(eval DOCKER_TAG=$(shell cat package.json | jq '.version' | tr -d '"'))
|
||||
#
|
||||
# Rebuild the image. We do this with no-cache so that we have all security upgrades,
|
||||
# since that's more important than fewer layers in the Docker image.
|
||||
docker build --no-cache=true -f Dockerfile.example -t $(DOCKER_IMAGE):$(DOCKER_TAG) .
|
||||
# Push an image to Docker Hub with the version from package.json:
|
||||
docker push $(DOCKER_IMAGE):$(DOCKER_TAG)
|
||||
#
|
||||
# Push the master branch to Docker hub as 'latest'
|
||||
if [ "$(TRAVIS_BRANCH)" = "master" ]; then \
|
||||
docker tag $(DOCKER_IMAGE):$(DOCKER_TAG) $(DOCKER_IMAGE):latest && \
|
||||
docker push $(DOCKER_IMAGE):latest; \
|
||||
fi
|
||||
#
|
||||
# Push the dev branch to Docker Hub as 'latest_dev'
|
||||
if [ "$(TRAVIS_BRANCH)" = "dev" ]; then \
|
||||
docker tag $(DOCKER_IMAGE):$(DOCKER_TAG) $(DOCKER_IMAGE):latest_dev && \
|
||||
docker push $(DOCKER_IMAGE):latest_dev; \
|
||||
fi
|
||||
|
||||
.PHONY: all coverage docker_release report test travis
|
||||
|
||||
Reference in New Issue
Block a user