add support for grunt build

This commit is contained in:
Henrique Dias 2016-04-20 21:55:47 -03:00 committed by James Allen
parent 4f7a6abbac
commit f33ea04408
5 changed files with 123 additions and 2 deletions

View file

@ -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; \

38
Gruntfile.coffee Normal file
View file

@ -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']

22
git-revision.js Normal file
View file

@ -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);
}
}

11
package.json Normal file
View file

@ -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"
}
}

43
services.js Normal file
View file

@ -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"
}]