From d0954abe29f08c921a737fba672e05e44a0d4772 Mon Sep 17 00:00:00 2001 From: Anthony Lapenna Date: Wed, 26 Oct 2016 09:04:26 +1300 Subject: [PATCH] chore(docker): update build system with Docker for Windows support (#283) --- build.sh | 14 +++++-- Dockerfile => build/linux/Dockerfile | 0 build/windows/microsoftservercore/Dockerfile | 9 +++++ build/windows/nanoserver/Dockerfile | 9 +++++ gruntFile.js | 40 ++++++++++++++++---- 5 files changed, 61 insertions(+), 11 deletions(-) rename Dockerfile => build/linux/Dockerfile (100%) create mode 100644 build/windows/microsoftservercore/Dockerfile create mode 100644 build/windows/nanoserver/Dockerfile diff --git a/build.sh b/build.sh index ad0e11508..dc0bf6048 100755 --- a/build.sh +++ b/build.sh @@ -8,9 +8,15 @@ if [[ $# -ne 1 ]] ; then fi grunt release -rm -rf /tmp/portainer-build && mkdir -pv /tmp/portainer-build/portainer -mv dist/* /tmp/portainer-build/portainer -cd /tmp/portainer-build -tar cvpfz portainer-${VERSION}.tar.gz portainer +rm -rf /tmp/portainer-build-unix && mkdir -pv /tmp/portainer-build-unix/portainer +mv dist/* /tmp/portainer-build-unix/portainer +cd /tmp/portainer-build-unix && tar cvpfz portainer-${VERSION}-linux-amd64.tar.gz portainer +cd - + +grunt release-win +rm -rf /tmp/portainer-build-win && mkdir -pv /tmp/portainer-build-win/portainer +mv dist/* /tmp/portainer-build-win/portainer +cd /tmp/portainer-build-win +tar cvpfz portainer-${VERSION}-windows-amd64.tar.gz portainer exit 0 diff --git a/Dockerfile b/build/linux/Dockerfile similarity index 100% rename from Dockerfile rename to build/linux/Dockerfile diff --git a/build/windows/microsoftservercore/Dockerfile b/build/windows/microsoftservercore/Dockerfile new file mode 100644 index 000000000..7405a81ad --- /dev/null +++ b/build/windows/microsoftservercore/Dockerfile @@ -0,0 +1,9 @@ +FROM golang:windowsservercore + +COPY dist / + +WORKDIR / + +EXPOSE 9000 + +ENTRYPOINT ["/portainer.exe"] diff --git a/build/windows/nanoserver/Dockerfile b/build/windows/nanoserver/Dockerfile new file mode 100644 index 000000000..f0fa3d8a0 --- /dev/null +++ b/build/windows/nanoserver/Dockerfile @@ -0,0 +1,9 @@ +FROM golang:nanoserver + +COPY dist / + +WORKDIR / + +EXPOSE 9000 + +ENTRYPOINT ["/portainer.exe"] diff --git a/gruntFile.js b/gruntFile.js index d1b81485c..fc92ade34 100644 --- a/gruntFile.js +++ b/gruntFile.js @@ -16,7 +16,7 @@ module.exports = function (grunt) { grunt.registerTask('default', ['jshint', 'build', 'karma:unit']); grunt.registerTask('build', [ 'clean:app', - 'if:binaryNotExist', + 'if:unixBinaryNotExist', 'html2js', 'concat', 'clean:tmpl', @@ -25,7 +25,19 @@ module.exports = function (grunt) { ]); grunt.registerTask('release', [ 'clean:all', - 'if:binaryNotExist', + 'if:unixBinaryNotExist', + 'html2js', + 'uglify', + 'clean:tmpl', + 'jshint', + //'karma:unit', + 'concat:index', + 'recess:min', + 'copy' + ]); + grunt.registerTask('release-win', [ + 'clean:all', + 'if:windowsBinaryNotExist', 'html2js', 'uglify', 'clean:tmpl', @@ -263,6 +275,14 @@ module.exports = function (grunt) { 'mv api/portainer dist/' ].join(' && ') }, + buildWindowsBinary: { + command: [ + 'docker run --rm -v $(pwd)/api:/src -e BUILD_GOOS="windows" -e BUILD_GOARCH="amd64" centurylink/golang-builder-cross', + 'shasum api/portainer-windows-amd64 > portainer-checksum.txt', + 'mkdir -p dist', + 'mv api/portainer-windows-amd64 dist/portainer.exe' + ].join(' && ') + }, run: { command: [ 'docker stop portainer', @@ -289,11 +309,17 @@ module.exports = function (grunt) { } }, 'if': { - binaryNotExist: { - options: { - executable: 'dist/portainer' - }, - ifFalse: ['shell:buildBinary'] + unixBinaryNotExist: { + options: { + executable: 'dist/portainer' + }, + ifFalse: ['shell:buildBinary'] + }, + windowsBinaryNotExist: { + options: { + executable: 'dist/portainer.exe' + }, + ifFalse: ['shell:buildWindowsBinary'] } } });