Skip to content

Commit

Permalink
Merge pull request RocketChat#6 from RocketChat/master
Browse files Browse the repository at this point in the history
Latest Master
  • Loading branch information
jaytat0 authored Nov 8, 2018
2 parents d8f0edf + e73dc78 commit 7935c07
Show file tree
Hide file tree
Showing 1,894 changed files with 124,375 additions and 53,293 deletions.
160 changes: 153 additions & 7 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,6 @@ jobs:
name: Lint
command: |
meteor npm run lint
meteor npm run stylelint
- run:
name: Unit Test
Expand All @@ -81,6 +80,8 @@ jobs:

- run:
name: Build Rocket.Chat
environment:
TOOL_NODE_FLAGS: --max_old_space_size=4096
command: |
if [[ $CIRCLE_TAG ]]; then meteor reset; fi
set +e
Expand Down Expand Up @@ -140,7 +141,7 @@ jobs:

environment:
TEST_MODE: "true"
MONGO_URL: mongodb://localhost:27017/testwithoplog
MONGO_URL: mongodb://localhost:27017/rocketchat
MONGO_OPLOG_URL: mongodb://localhost:27017/local

steps:
Expand All @@ -152,10 +153,12 @@ jobs:
- run:
name: Install dependencies
command: |
wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
echo "deb [ arch=amd64 ] http://dl.google.com/linux/chrome/deb/ stable main" | sudo tee /etc/apt/sources.list.d/google.list
echo "deb [ arch=amd64 ] http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
sudo apt-get update
sudo apt-get install -y mongodb-org-shell
sudo apt-get install -y mongodb-org-shell google-chrome-stable
- run:
name: Configure Replica Set
Expand All @@ -171,7 +174,7 @@ jobs:
- run:
name: Run Tests
command: |
for i in $(seq 1 5); do npm test && s=0 && break || s=$? && sleep 1; done; (exit $s)
for i in $(seq 1 5); do mongo rocketchat --eval 'db.dropDatabase()' && npm test && s=0 && break || s=$? && sleep 1; done; (exit $s)
- store_artifacts:
path: .screenshots/
Expand All @@ -184,14 +187,24 @@ jobs:

environment:
TEST_MODE: "true"
MONGO_URL: mongodb://localhost:27017/testwithoplog
MONGO_URL: mongodb://localhost:27017/rocketchat

steps:
- attach_workspace:
at: /tmp

- checkout

- run:
name: Install dependencies
command: |
wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
echo "deb [ arch=amd64 ] http://dl.google.com/linux/chrome/deb/ stable main" | sudo tee /etc/apt/sources.list.d/google.list
echo "deb [ arch=amd64 ] http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
sudo apt-get update
sudo apt-get install -y mongodb-org-shell google-chrome-stable
- run:
name: NPM install
command: |
Expand All @@ -200,7 +213,7 @@ jobs:
- run:
name: Run Tests
command: |
for i in $(seq 1 5); do npm test && s=0 && break || s=$? && sleep 1; done; (exit $s)
for i in $(seq 1 5); do mongo rocketchat --eval 'db.dropDatabase()' && npm test && s=0 && break || s=$? && sleep 1; done; (exit $s)
- store_artifacts:
path: .screenshots/
Expand Down Expand Up @@ -245,10 +258,118 @@ jobs:
aws s3 cp $ROCKET_DEPLOY_DIR/ s3://download.rocket.chat/build/ --recursive
bash .circleci/update-releases.sh
bash .circleci/docker.sh
bash .circleci/snap.sh
bash .circleci/redhat-registry.sh
image-build:
<<: *defaults

docker:
- image: docker:17.05.0-ce-git

steps:
- attach_workspace:
at: /tmp

- checkout

- setup_remote_docker

- run:
name: Build Docker image
command: |
cd /tmp/build
tar xzf Rocket.Chat.tar.gz
rm Rocket.Chat.tar.gz
export CIRCLE_TAG=${CIRCLE_TAG:=}
if [[ $CIRCLE_TAG ]]; then
docker login -u $DOCKER_USER -p $DOCKER_PASS
echo "Build official Docker image"
cp ~/repo/.docker/Dockerfile .
docker build -t rocketchat/rocket.chat:$CIRCLE_TAG .
docker push rocketchat/rocket.chat:$CIRCLE_TAG
echo "Build preview Docker image"
cp ~/repo/.docker-mongo/Dockerfile .
cp ~/repo/.docker-mongo/entrypoint.sh .
docker build -t rocketchat/rocket.chat.preview:$CIRCLE_TAG .
docker push rocketchat/rocket.chat.preview:$CIRCLE_TAG
if echo "$CIRCLE_TAG" | grep -Eq '^[0-9]+\.[0-9]+\.[0-9]+$' ; then
docker tag rocketchat/rocket.chat:$CIRCLE_TAG rocketchat/rocket.chat:latest
docker push rocketchat/rocket.chat:latest
docker tag rocketchat/rocket.chat.preview:$CIRCLE_TAG rocketchat/rocket.chat.preview:latest
docker push rocketchat/rocket.chat.preview:latest
elif echo "$CIRCLE_TAG" | grep -Eq '^[0-9]+\.[0-9]+\.[0-9]+-rc\.[0-9]+$' ; then
docker tag rocketchat/rocket.chat:$CIRCLE_TAG rocketchat/rocket.chat:release-candidate
docker push rocketchat/rocket.chat:release-candidate
docker tag rocketchat/rocket.chat.preview:$CIRCLE_TAG rocketchat/rocket.chat.preview:release-candidate
docker push rocketchat/rocket.chat.preview:release-candidate
fi
exit 0
fi;
if [[ $CIRCLE_BRANCH == 'develop' ]]; then
docker login -u $DOCKER_USER -p $DOCKER_PASS
echo "Build official Docker image"
cp ~/repo/.docker/Dockerfile .
docker build -t rocketchat/rocket.chat:develop .
docker push rocketchat/rocket.chat:develop
echo "Build preview Docker image"
cp ~/repo/.docker-mongo/Dockerfile .
cp ~/repo/.docker-mongo/entrypoint.sh .
docker build -t rocketchat/rocket.chat.preview:develop .
docker push rocketchat/rocket.chat.preview:develop
exit 0
fi;
pr-image-build:
<<: *defaults

docker:
- image: docker:17.05.0-ce-git

steps:
- attach_workspace:
at: /tmp

- checkout

- setup_remote_docker

- run:
name: Build Docker image for PRs
command: |
export CIRCLE_PR_NUMBER="${CIRCLE_PR_NUMBER:-${CIRCLE_PULL_REQUEST##*/}}"
if [[ -z $CIRCLE_PR_NUMBER ]]; then
exit 0
fi;
cd /tmp/build
tar xzf Rocket.Chat.tar.gz
rm Rocket.Chat.tar.gz
docker login -u $DOCKER_USER -p $DOCKER_PASS
echo "Build official Docker image"
cp ~/repo/.docker/Dockerfile .
docker build -t rocketchat/rocket.chat:pr-$CIRCLE_PR_NUMBER .
docker push rocketchat/rocket.chat:pr-$CIRCLE_PR_NUMBER
echo "Build preview Docker image"
cp ~/repo/.docker-mongo/Dockerfile .
cp ~/repo/.docker-mongo/entrypoint.sh .
docker build -t rocketchat/rocket.chat.preview:pr-$CIRCLE_PR_NUMBER .
docker push rocketchat/rocket.chat.preview:pr-$CIRCLE_PR_NUMBER
workflows:
version: 2
build-and-test:
Expand Down Expand Up @@ -278,4 +399,29 @@ workflows:
only: develop
tags:
only: /^[0-9]+\.[0-9]+\.[0-9]+(-rc\.[0-9]+)?$/
- image-build:
requires:
- deploy
filters:
branches:
only: develop
tags:
only: /^[0-9]+\.[0-9]+\.[0-9]+(-rc\.[0-9]+)?$/
- hold:
type: approval
requires:
- build
filters:
branches:
ignore: develop
tags:
only: /^[0-9]+\.[0-9]+\.[0-9]+(-rc\.[0-9]+)?$/
- pr-image-build:
requires:
- hold
filters:
branches:
ignore: develop
tags:
only: /^[0-9]+\.[0-9]+\.[0-9]+(-rc\.[0-9]+)?$/

2 changes: 1 addition & 1 deletion .circleci/setartname.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ elif [[ $CIRCLE_TAG =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
else
SNAP_CHANNEL=edge
RC_RELEASE=develop
RC_VERSION=0.60.0-develop
RC_VERSION=0.66.0-develop
fi

export SNAP_CHANNEL
Expand Down
40 changes: 40 additions & 0 deletions .docker-mongo/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
FROM rocketchat/base:8

ADD . /app
ADD entrypoint.sh /app/bundle/

MAINTAINER buildmaster@rocket.chat

RUN set -x \
&& apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5 \
&& echo "deb http://repo.mongodb.org/apt/debian jessie/mongodb-org/3.6 main" | tee /etc/apt/sources.list.d/mongodb-org-3.6.list \
&& apt-get update \
&& apt-get install -y --force-yes pwgen mongodb-org \
&& echo "mongodb-org hold" | dpkg --set-selections \
&& echo "mongodb-org-server hold" | dpkg --set-selections \
&& echo "mongodb-org-shell hold" | dpkg --set-selections \
&& echo "mongodb-org-mongos hold" | dpkg --set-selections \
&& echo "mongodb-org-tools hold" | dpkg --set-selections \
&& cd /app/bundle/programs/server \
&& npm install \
&& npm cache clear --force \
&& rm -rf /var/lib/apt/lists/*

VOLUME /app/uploads

WORKDIR /app/bundle

# needs a mongoinstance - defaults to container linking with alias 'mongo'
ENV DEPLOY_METHOD=docker-preview \
NODE_ENV=production \
MONGO_URL=mongodb://localhost:27017/rocketchat \
HOME=/tmp \
PORT=3000 \
ROOT_URL=http://localhost:3000 \
Accounts_AvatarStorePath=/app/uploads

EXPOSE 3000

RUN chmod +x /app/bundle/entrypoint.sh

ENTRYPOINT /app/bundle/entrypoint.sh
49 changes: 49 additions & 0 deletions .docker-mongo/entrypoint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
#!/bin/bash

echo """

 
 
 
   
      
        
           
           
           
         
         
          
          
          
       
             
           
        
        
    
       
  

"""

echo """
██████╗ ██████╗ ██████╗██╗ ██╗███████╗████████╗ ██████╗██╗ ██╗ █████╗ ████████╗ ██████╗ ██████╗ ███████╗██╗ ██╗██╗███████╗██╗ ██╗
██╔══██╗██╔═══██╗██╔════╝██║ ██╔╝██╔════╝╚══██╔══╝██╔════╝██║ ██║██╔══██╗╚══██╔══╝ ██╔══██╗██╔══██╗██╔════╝██║ ██║██║██╔════╝██║ ██║
██████╔╝██║ ██║██║ █████╔╝ █████╗ ██║ ██║ ███████║███████║ ██║ ██████╔╝██████╔╝█████╗ ██║ ██║██║█████╗ ██║ █╗ ██║
██╔══██╗██║ ██║██║ ██╔═██╗ ██╔══╝ ██║ ██║ ██╔══██║██╔══██║ ██║ ██╔═══╝ ██╔══██╗██╔══╝ ╚██╗ ██╔╝██║██╔══╝ ██║███╗██║
██║ ██║╚██████╔╝╚██████╗██║ ██╗███████╗ ██║██╗╚██████╗██║ ██║██║ ██║ ██║ ██║ ██║ ██║███████╗ ╚████╔╝ ██║███████╗╚███╔███╔╝
╚═╝ ╚═╝ ╚═════╝ ╚═════╝╚═╝ ╚═╝╚══════╝ ╚═╝╚═╝ ╚═════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝╚══════╝ ╚═══╝ ╚═╝╚══════╝ ╚══╝╚══╝
"""

mongod --smallfiles --storageEngine=mmapv1 --fork --config /etc/mongod.conf

until mongo --eval "db" &> /dev/null; do
echo "MongoDB still not ready, sleeping"
sleep 1
done

node main.js
22 changes: 22 additions & 0 deletions .docker-mongo/licenses/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
The MIT License (MIT)

Copyright (c) 2015-2017 Rocket.Chat Technologies Corp.

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

8 changes: 1 addition & 7 deletions .docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,16 +1,10 @@
FROM rocketchat/base:8

ENV RC_VERSION 0.64.0-develop
ADD . /app

MAINTAINER buildmaster@rocket.chat

RUN set -x \
&& curl -SLf "https://releases.rocket.chat/${RC_VERSION}/download/" -o rocket.chat.tgz \
&& curl -SLf "https://releases.rocket.chat/${RC_VERSION}/asc" -o rocket.chat.tgz.asc \
&& gpg --verify rocket.chat.tgz.asc \
&& mkdir -p /app \
&& tar -zxf rocket.chat.tgz -C /app \
&& rm rocket.chat.tgz rocket.chat.tgz.asc \
&& cd /app/bundle/programs/server \
&& npm install \
&& npm cache clear --force \
Expand Down
6 changes: 5 additions & 1 deletion .docker/Dockerfile.rhel
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM registry.access.redhat.com/rhscl/nodejs-8-rhel7

ENV RC_VERSION 0.64.0-develop
ENV RC_VERSION 0.71.1

MAINTAINER buildmaster@rocket.chat

Expand Down Expand Up @@ -32,6 +32,10 @@ VOLUME /opt/app-root/src/uploads

WORKDIR /opt/app-root/src/bundle

# Hack needed to force use of bundled library instead of system level outdated library
# https://github.com/lovell/sharp/issues/892
ENV LD_PRELOAD=/opt/app-root/src/bundle/programs/server/npm/node_modules/sharp/vendor/lib/libz.so

ENV DEPLOY_METHOD=docker-redhat \
NODE_ENV=production \
MONGO_URL=mongodb://mongo:27017/rocketchat \
Expand Down
Loading

0 comments on commit 7935c07

Please sign in to comment.