diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..e462a2e5 --- /dev/null +++ b/.dockerignore @@ -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 diff --git a/.travis.yml b/.travis.yml index 4ec5f103..f67daf89 100644 --- a/.travis.yml +++ b/.travis.yml @@ -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: - - CXX=g++-4.8 + 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: diff --git a/Dockerfile.example b/Dockerfile.example new file mode 100644 index 00000000..3610ba1c --- /dev/null +++ b/Dockerfile.example @@ -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"] diff --git a/Makefile b/Makefile index 44e16a9d..919cb6b2 100644 --- a/Makefile +++ b/Makefile @@ -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