Skip to content

Commit 756cacf

Browse files
committed
Merge pull request #1074 from Sing-Li/travis-001
CI/CD pipeline initial implementation - #961 - READY FOR MERGE
2 parents b179ad3 + 35a12d3 commit 756cacf

File tree

13 files changed

+199
-73
lines changed

13 files changed

+199
-73
lines changed

.travis.yml

+33-7
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,38 @@
11
sudo: required
22
language: node_js
3+
branches:
4+
only:
5+
- master
36
node_js:
4-
- "0.10"
5-
7+
- '0.10'
68
before_install:
7-
- "curl https://install.meteor.com | /bin/sh"
8-
9+
- curl https://install.meteor.com | /bin/sh
10+
- npm install -g npm@'>=2.13.5'
911
script:
10-
- meteor add rocketchat:livechat
11-
- meteor add rocketchat:hubot
12-
- meteor build --server demo.rocket.chat ./
12+
- if [[ "$TRAVIS_PULL_REQUEST" != "false" ]]; then echo "Building PR $TRAVIS_PULL_REQUEST"; meteor build ../build; exit $?; fi
13+
- cd .travis
14+
- npm install
15+
- npm start
16+
- cd ..
17+
- meteor build ../build
18+
- cd .travis
19+
- sh ./namefiles.sh
20+
- cd ..
21+
- meteor add rocketchat:livechat
22+
- meteor add rocketchat:hubot
23+
- meteor build --server demo.rocket.chat ../build
24+
- cd .travis
25+
- sh ./namedemo.sh
26+
- cd ..
27+
after_deploy:
28+
- "curl -H \"Content-Type: application/json\" --data \"{'build': true}\" -X POST https://registry.hub.docker.com/u/singli/rocket.chat/trigger/$PUSHTOKEN/"
29+
deploy:
30+
provider: s3
31+
access_key_id: "AKIAIKIA7H7D47KUHYCA"
32+
bucket: "rocketchatbuild"
33+
skip_cleanup: true
34+
local_dir: ../build
35+
on:
36+
branch: master
37+
secret_access_key:
38+
secure: LYA2XNdpHBTN/zs/71VWLr81b3Gb290PRIqQER72SZ3eQjDk0UpUUFkzK6mc6GkelXyqHRBRckmhBzVCEAO6KNIU9JHc9aUxyUbSt7OMTAZUZ8X36E7HL6mXN73YHtUCbEczD41aXMK+HQ9ol0EXfvbprp5gFwqT908dSVleNJCN6wZgW5ZJVzWTiC2/aaGqCrWhAWybG1XwCgl8ND8N3qFsNBZ6MDN3rpp9kVdDJ3vzp5Azkf6QrTFQTo2ai3DFFnRf7J84/8tpRL3tVcPwjik449KEkJlCPotxt7XxUTg9HrN5LQY4wYTKyKhoYxzADwse8VaU/oFhVef3A8AiLpfg8rR63ahs5ZOqJc926eiZWGumLfvcGkHD2kb+z+l9bIE8b2X7mct6gK4ub0E6Ul/NOoh1ZgppVzP3PuYZXGb2CNvZTrrSjH9dGWPWlRjZaErg4bs4BC6y6eGjgu1CqFa1eqLFO/oYdmX5c4kDskyNf0VSVVXmqLqQBWrkOGSr3Z8nR8XQ1PDQfmj8ZMmDRtvt58DuOVzOBkC71Mc/Kr/cKS0cXedwzzNg2BG4EHMsc1eTn6JWs95NFCbPbI5HzxYODumZwOwSJyXKiDgUhPmRc6I1MvgJqIIBGWFqIIGEfR715E4zaJzAYvTPWvL+8aBMfZxdQouRYH7d9kREc6U=

.travis/namedemo.sh

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
cd ../../build
2+
FILENAME=demo.rocket.chat-`cat version.txt`.tgz
3+
mv Rocket.Chat.tar.gz $FILENAME
4+
ln -s $FILENAME demo.rocket.chat-v.latest.tgz
5+

.travis/namefiles.sh

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
cd ../../build
2+
FILENAME=rocket.chat-`cat version.txt`.tgz
3+
mv Rocket.Chat.tar.gz $FILENAME
4+
ln -s $FILENAME rocket.chat-v.latest.tgz
5+

.travis/package.json

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{
2+
"name": "setbuildinfo",
3+
"version": "1.0.0",
4+
"description": "Set the buildinfo.txt resource",
5+
"main": "setbuildinfo.js",
6+
"scripts": {
7+
"start": "node setbuildinfo.js"
8+
},
9+
"author": "",
10+
"license": "ISC",
11+
"dependencies": {
12+
"line-by-line": "^0.1.4",
13+
"mkdirp": "^0.5.1"
14+
}
15+
}

.travis/setbuildinfo.js

+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
var BUILD_INFO_PATH = '../public/buildinfo/buildinfo.txt';
2+
var PACKAGES_PATH = '../.meteor/packages';
3+
var BUILD_PATH = '../../build';
4+
var LineByLineReader = require('line-by-line'),
5+
mkdirp = require('mkdirp'),
6+
fs = require('fs'),
7+
lr = new LineByLineReader(BUILD_INFO_PATH);
8+
9+
var firstline = "";
10+
11+
12+
if (process.env.TRAVIS_BUILD_NUMBER) {
13+
14+
var transformVersion = function (firstline) {
15+
var versions = firstline.split(".");
16+
17+
return versions[0] + '.' + versions[1] + '.' + process.env.TRAVIS_BUILD_NUMBER + '\n';
18+
};
19+
20+
21+
22+
lr.on('error', function (err) {
23+
// 'err' contains error object
24+
});
25+
26+
lr.on('line', function (line) {
27+
if (firstline == "")
28+
firstline = line;
29+
30+
});
31+
32+
lr.on('end', function () {
33+
34+
var packages = fs.readFileSync(PACKAGES_PATH);
35+
var verinfo = transformVersion(firstline);
36+
var content = verinfo + packages;
37+
mkdirp.sync(BUILD_PATH);
38+
fs.writeFileSync(BUILD_PATH + "/version.txt", verinfo);
39+
fs.writeFileSync(BUILD_INFO_PATH, content);
40+
console.log('Version is ' + verinfo);
41+
42+
});
43+
44+
}

Dockerfile

+29-1
Original file line numberDiff line numberDiff line change
@@ -1 +1,29 @@
1-
FROM meteorhacks/meteord:onbuild
1+
FROM node:0.10
2+
3+
MAINTAINER buildmaster@rocket.chat
4+
5+
RUN groupadd -r rocketchat \
6+
&& useradd -r -g rocketchat rocketchat \
7+
&& mkdir /app
8+
9+
# gpg: key 4FD08014: public key "Rocket.Chat Buildmaster <buildmaster@rocket.chat>" imported
10+
RUN gpg --keyserver ha.pool.sks-keyservers.net --recv-keys 0E163286C20D07B9787EBE9FD7F9D0414FD08104
11+
12+
WORKDIR /app
13+
14+
RUN curl -fSL "https://s3.amazonaws.com/rocketchatbuild/rocket.chat-v.latest.tgz" -o rocket.chat.tgz \
15+
&& tar zxvf ./rocket.chat.tgz \
16+
&& rm ./rocket.chat.tgz \
17+
&& cd /app/bundle/programs/server \
18+
&& npm install
19+
20+
WORKDIR /app/bundle
21+
USER rocketchat
22+
23+
# needs a mongoinstance - defaults to container linking with alias 'db'
24+
ENV MONGO_URL=mongodb://db:27017/meteor \
25+
PORT=3000 \
26+
ROOT_URL=http://localhost:3000
27+
28+
EXPOSE 3000
29+
CMD ["node", "main.js"]

README.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ Available from the AppStore:
1010

1111
[![Rocket.Chat on Apple AppStore](http://linkmaker.itunes.apple.com/images/badges/en-us/badge_appstore-lrg.svg)](https://geo.itunes.apple.com/us/app/rocket.chat/id1028869439?mt=8)
1212

13-
Get the app for your Android phone:
13+
Get the app for your Android phone:
14+
1415

1516
[![Rocket.Chat on Google Play](https://developer.android.com/images/brand/en_app_rgb_wo_45.png)](https://play.google.com/store/apps/details?id=com.konecty.rocket.chat)
1617

build.sh

+3-5
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
#!/bin/bash
2-
source ./build-info.sh
3-
export METEOR_SETTINGS=$(cat settings.json)
4-
meteor add rocketchat:livechat
5-
meteor add rocketchat:hubot
6-
meteor build --server https://demo.rocket.chat --directory /var/www/rocket.chat
2+
cd /var/www/rocket.chat
3+
https://s3.amazonaws.com/rocketchatbuild/demo.rocket.chat-v.latest.tgz" -o rocket.chat.tgz
4+
tar zxvf rocket.chat.tgz && rm rocket.chat.tgz
75
cd /var/www/rocket.chat/bundle/programs/server
86
npm install
97
cd /var/www/rocket.chat/current

docker-compose.yml

+12-9
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
1+
db:
2+
image: mongo
3+
# volumes:
4+
# - ./data/runtime/db:/data/db
5+
# - ./data/dump:/dump
6+
command: mongod --smallfiles
7+
18
rocketchat:
2-
image: rocketchat/rocket.chat
9+
image: singli/rocket.chat
310
environment:
4-
- MONGO_URL=mongodb://mongodb/rocketchat
5-
- ROOT_URL=http://localhost:80
11+
- MONGO_URL=mongodb://db:27017/rocketchat
12+
- ROOT_URL=http://yourhost:8818
613
links:
7-
- mongodb
14+
- db:db
815
ports:
9-
- 80:80
16+
- 8818:3000
1017

11-
mongodb:
12-
image: mongo
13-
ports:
14-
- 27017

packages/meteor-accounts-saml/.npm/package/npm-shrinkwrap.json

+27-27
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/rocketchat-file/.npm/package/npm-shrinkwrap.json

+7-7
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)