From 3e7595f3f2784e9dd63c4991a2fa0bacc6baf3eb Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Wed, 20 Apr 2016 21:55:47 -0300 Subject: [PATCH] add support for grunt build --- server-ce/Dockerfile | 11 ++++++++-- server-ce/Gruntfile.coffee | 38 +++++++++++++++++++++++++++++++++ server-ce/git-revision.js | 22 +++++++++++++++++++ server-ce/package.json | 11 ++++++++++ server-ce/services.js | 43 ++++++++++++++++++++++++++++++++++++++ 5 files changed, 123 insertions(+), 2 deletions(-) create mode 100644 server-ce/Gruntfile.coffee create mode 100644 server-ce/git-revision.js create mode 100644 server-ce/package.json create mode 100644 server-ce/services.js diff --git a/server-ce/Dockerfile b/server-ce/Dockerfile index ff52a33198..7d813bd5d5 100644 --- a/server-ce/Dockerfile +++ b/server-ce/Dockerfile @@ -14,15 +14,22 @@ RUN adduser --system --group --home /var/www/sharelatex --no-create-home sharela # Install ShareLaTeX RUN apt-get install -y git python -RUN git clone -b release https://github.com/sharelatex/sharelatex.git /var/www/sharelatex -RUN cd /var/www/sharelatex && git pull origin release +RUN git clone https://github.com/sharelatex/sharelatex.git /var/www/sharelatex # zlib1g-dev is needed to compile the synctex binaries in the CLSI during `grunt install`. RUN apt-get install -y zlib1g-dev + +ADD services.js /var/www/sharelatex/config/services.js +ADD package.json /var/www/package.json +ADD git-revision.js /var/www/git-revision.js +RUN cd /var/www && npm install + RUN cd /var/www/sharelatex; \ npm install; \ grunt install; + +RUN cd /var/www && node git-revision > revisions.txt # Minify js assets RUN cd /var/www/sharelatex/web; \ diff --git a/server-ce/Gruntfile.coffee b/server-ce/Gruntfile.coffee new file mode 100644 index 0000000000..0f1d222059 --- /dev/null +++ b/server-ce/Gruntfile.coffee @@ -0,0 +1,38 @@ +services = require('./services') + +module.exports = (grunt) -> + + tag = grunt.option("tag") or 'latest' + repos = [] + for service in services + url = service.repo.split('/') + owner = url[3] + repo = url[4].replace('.git','') + repos.push "/repos/#{owner}/#{repo}/git/refs/heads/#{service.version}" + + grunt.initConfig + docker_io: + default_options: + options: + dockerFileLocation: '.' + buildName: 'sharelatex' + tag: grunt.option('tag') or 'latest' + push: grunt.option('push') or false + force: true + + github: + combinedRevisions: + options: + #oAuth: + # access_token: '' + concat: true + src: repos + dest: 'version/' + tag + '.json' + + grunt.loadNpmTasks 'grunt-docker-io' + grunt.loadNpmTasks 'grunt-github-api' + + grunt.registerTask 'build', ['docker_io', 'github'] + grunt.registerTask 'gitrev', ['github'] + + grunt.registerTask 'default', ['build'] diff --git a/server-ce/git-revision.js b/server-ce/git-revision.js new file mode 100644 index 0000000000..89359cea2e --- /dev/null +++ b/server-ce/git-revision.js @@ -0,0 +1,22 @@ +var simple = require('simple-git'); +var services = require('./sharelatex/config/services'); +const fs = require('fs'); + +function print_latest(repoDir) { + git = simple(repoDir); + opt = []; + opt['max-count'] = 1; + git.log(opt, function(err, log) { + if (!err) { + console.log(repoDir + ',' + log.latest.hash); + } + }) +} + +for (id in services) { + service = services[id]; + dirPath = __dirname + '/sharelatex/'+service.name; + if (fs.existsSync(dirPath)) { + print_latest(dirPath); + } +} diff --git a/server-ce/package.json b/server-ce/package.json new file mode 100644 index 0000000000..329169d96d --- /dev/null +++ b/server-ce/package.json @@ -0,0 +1,11 @@ +{ + "name": "none", + "author": "none", + "description": "none", + "dependencies": { + "grunt": "^0.4.5", + "grunt-docker-io": "^0.7.0", + "simple-git": "^1.32.1", + "grunt-github-api": "^0.2.3" + } +} diff --git a/server-ce/services.js b/server-ce/services.js new file mode 100644 index 0000000000..be4da8698a --- /dev/null +++ b/server-ce/services.js @@ -0,0 +1,43 @@ +module.exports = + +[{ + name: "web", + repo: "https://github.com/sharelatex/web-sharelatex.git", + version: "master" +}, { + name: "real-time", + repo: "https://github.com/sharelatex/real-time-sharelatex.git", + version: "master" +}, { + name: "document-updater", + repo: "https://github.com/sharelatex/document-updater-sharelatex.git", + version: "master" +}, { + name: "clsi", + repo: "https://github.com/sharelatex/clsi-sharelatex.git", + version: "master" +}, { + name: "filestore", + repo: "https://github.com/sharelatex/filestore-sharelatex.git", + version: "master" +}, { + name: "track-changes", + repo: "https://github.com/sharelatex/track-changes-sharelatex.git", + version: "master" +}, { + name: "docstore", + repo: "https://github.com/sharelatex/docstore-sharelatex.git", + version: "master" +}, { + name: "chat", + repo: "https://github.com/sharelatex/chat-sharelatex.git", + version: "master" +}, { + name: "tags", + repo: "https://github.com/sharelatex/tags-sharelatex.git", + version: "master" +}, { + name: "spelling", + repo: "https://github.com/sharelatex/spelling-sharelatex.git", + version: "master" +}]