Skip to content

Commit 3572889

Browse files
authored
Merge pull request #197 from timvaillancourt/travis_yml_v0
Support Travis-ci Continuous Integration testing
2 parents 863a431 + d7f5139 commit 3572889

File tree

9 files changed

+266
-2
lines changed

9 files changed

+266
-2
lines changed

.travis.yml

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
language: python
2+
python:
3+
- "2.7"
4+
cache:
5+
pip: true
6+
directories:
7+
- $TRAVIS_BUILD_DIR/docker
8+
- $TRAVIS_BUILD_DIR/tmp/pex
9+
- $TRAVIS_BUILD_DIR/tmp/pip
10+
services:
11+
- docker
12+
install: 'pip install virtualenv'
13+
jobs:
14+
include:
15+
# - stage: flake8
16+
# script:
17+
# - pip install flake8
18+
# - make flake8
19+
- stage: build
20+
script:
21+
- make docker
22+
- docker run --rm -it mongodb_consistent_backup:latest --version
23+
- mkdir -p $TRAVIS_BUILD_DIR/docker
24+
- docker save mongodb_consistent_backup:latest >$TRAVIS_BUILD_DIR/docker/mongodb_consistent_backup.tar
25+
- stage: test-cluster-3.4
26+
script:
27+
- docker load -i $TRAVIS_BUILD_DIR/docker/mongodb_consistent_backup.tar
28+
- $TRAVIS_BUILD_DIR/scripts/travis-ci/run-cluster.sh 3.4
29+
- stage: test-replset-3.4
30+
script:
31+
- docker load -i $TRAVIS_BUILD_DIR/docker/mongodb_consistent_backup.tar
32+
- $TRAVIS_BUILD_DIR/scripts/travis-ci/run-replset.sh 3.4
33+
- stage: test-cluster-3.2
34+
script:
35+
- docker load -i $TRAVIS_BUILD_DIR/docker/mongodb_consistent_backup.tar
36+
- $TRAVIS_BUILD_DIR/scripts/travis-ci/run-cluster.sh 3.2
37+
# - stage: test-cluster-3.2-sccc
38+
# script:
39+
# - docker load -i $TRAVIS_BUILD_DIR/docker/mongodb_consistent_backup.tar
40+
# - $TRAVIS_BUILD_DIR/scripts/travis-ci/run-cluster.sh 3.2
41+
- stage: test-replset-3.2
42+
script:
43+
- docker load -i $TRAVIS_BUILD_DIR/docker/mongodb_consistent_backup.tar
44+
- $TRAVIS_BUILD_DIR/scripts/travis-ci/run-replset.sh 3.2
45+
# - stage: test-cluster-3.0
46+
# script:
47+
# - docker load -i $TRAVIS_BUILD_DIR/docker/mongodb_consistent_backup.tar
48+
# - $TRAVIS_BUILD_DIR/scripts/travis-ci/run-cluster.sh 3.0 SCCC
49+
- stage: test-replset-3.0
50+
script:
51+
- docker load -i $TRAVIS_BUILD_DIR/docker/mongodb_consistent_backup.tar
52+
- $TRAVIS_BUILD_DIR/scripts/travis-ci/run-replset.sh 3.0
53+
- stage: test-archive-none
54+
script:
55+
- docker load -i $TRAVIS_BUILD_DIR/docker/mongodb_consistent_backup.tar
56+
- $TRAVIS_BUILD_DIR/scripts/travis-ci/run-replset.sh 3.4 --archive.method=none
57+
- stage: test-archive-zbackup
58+
script:
59+
- docker load -i $TRAVIS_BUILD_DIR/docker/mongodb_consistent_backup.tar
60+
- $TRAVIS_BUILD_DIR/scripts/travis-ci/run-replset.sh 3.4 --archive.method=zbackup
61+
# - stage: test-upload-gs
62+
# script:
63+
# - docker load -i $TRAVIS_BUILD_DIR/docker/mongodb_consistent_backup.tar
64+
# - $TRAVIS_BUILD_DIR/scripts/travis-ci/run-replset.sh 3.4 --upload.method=gs
65+
# - stage: test-upload-rsync
66+
# script:
67+
# - docker load -i $TRAVIS_BUILD_DIR/docker/mongodb_consistent_backup.tar
68+
# - $TRAVIS_BUILD_DIR/scripts/travis-ci/run-replset.sh 3.4 --upload.method=rsync
69+
# - stage: test-upload-s3
70+
# script:
71+
# - docker load -i $TRAVIS_BUILD_DIR/docker/mongodb_consistent_backup.tar
72+
# - $TRAVIS_BUILD_DIR/scripts/travis-ci/run-replset.sh 3.4 --upload.method=s3

Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ FROM centos:centos7
22
ARG RELEASE
33
MAINTAINER Tim Vaillancourt <tim.vaillancourt@percona.com>
44
RUN yum install -y https://www.percona.com/redir/downloads/percona-release/redhat/latest/percona-release-0.1-4.noarch.rpm epel-release && \
5-
yum install -y Percona-Server-MongoDB-34-tools zbackup && yum clean all && \
6-
curl -Lo /usr/bin/mongodb-consistent-backup https://github.com/Percona-Lab/mongodb_consistent_backup/releases/download/$RELEASE/mongodb-consistent-backup.el7.centos.x86_64 && \
5+
yum install -y Percona-Server-MongoDB-34-tools zbackup && yum clean all
6+
RUN curl -Lo /usr/bin/mongodb-consistent-backup https://github.com/Percona-Lab/mongodb_consistent_backup/releases/download/$RELEASE/mongodb-consistent-backup.el7.centos.x86_64 && \
77
chmod +x /usr/bin/mongodb-consistent-backup
88
ENTRYPOINT ["mongodb-consistent-backup"]
99
CMD ["--help"]

Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ rpm: bin/mongodb-consistent-backup
4040

4141
docker: bin/mongodb-consistent-backup
4242
docker build --no-cache --tag $(DOCKER_TAG) --build-arg "RELEASE=$(VERSION)" .
43+
docker tag $(DOCKER_TAG) $(NAME):latest
4344

4445
clean:
4546
rm -rf bin build $(NAME).egg-info tmp 2>/dev/null

README.rst

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
MongoDB Consistent Backup Tool - mongodb-consistent-backup
22
----------------------------------------------------------
33

4+
.. image:: https://github-release-version.herokuapp.com/github/Percona-Lab/mongodb_consistent_backup/release.svg?style=flat
5+
:target: https://github.com/Percona-Lab/mongodb_consistent_backup/releases/latest
6+
7+
.. image:: https://travis-ci.org/Percona-Lab/mongodb_consistent_backup.svg?branch=master
8+
:target: https://travis-ci.org/Percona-Lab/mongodb_consistent_backup
9+
410
About
511
~~~~~
612

requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,4 @@ boto==2.47.0
77
filechunkio==1.8
88
python-dateutil==2.2
99
yconf==0.3.4
10+
google_compute_engine
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
version: '2'
2+
services:
3+
mongo-rs0-1:
4+
image: "percona/percona-server-mongodb:${MONGO_VERSION}"
5+
command: mongod --port=27017 --replSet=rs0 --dbpath=/data/db ${DATA_MONGOD_FLAGS}
6+
mongo-rs0-2:
7+
image: "percona/percona-server-mongodb:${MONGO_VERSION}"
8+
command: mongod --port=27017 --replSet=rs0 --dbpath=/data/db ${DATA_MONGOD_FLAGS}
9+
mongo-rs0-3:
10+
image: "percona/percona-server-mongodb:${MONGO_VERSION}"
11+
command: mongod --port=27017 --replSet=rs0 --dbpath=/data/db ${DATA_MONGOD_FLAGS}
12+
mongo-cs-1:
13+
image: "percona/percona-server-mongodb:${MONGO_VERSION}"
14+
command: mongod --port=27017 --configsvr --dbpath=/data/db ${CONFIGSVR_FLAGS}
15+
mongo-cs-2:
16+
image: "percona/percona-server-mongodb:${MONGO_VERSION}"
17+
command: mongod --port=27017 --configsvr --dbpath=/data/db ${CONFIGSVR_FLAGS}
18+
mongo-cs-3:
19+
image: "percona/percona-server-mongodb:${MONGO_VERSION}"
20+
command: mongod --port=27017 --configsvr --dbpath=/data/db ${CONFIGSVR_FLAGS}
21+
mongo-mongos:
22+
image: "percona/percona-server-mongodb:${MONGO_VERSION}"
23+
command: mongos --port=27017 --configdb=${MONGOS_CONFIGDB}
24+
depends_on:
25+
- mongo-rs0-1
26+
- mongo-rs0-2
27+
- mongo-rs0-3
28+
- mongo-cs-1
29+
- mongo-cs-2
30+
- mongo-cs-3
31+
backup-cluster:
32+
image: mongodb_consistent_backup:latest
33+
entrypoint: mongodb-consistent-backup
34+
command: --backup.location=/tmp --backup.name=test-cluster --host=${MONGOS_CONFIGDB} --replication.max_lag_secs=15 ${MCB_EXTRA}
35+
depends_on:
36+
- mongo-mongos
37+
backup-replset:
38+
image: mongodb_consistent_backup:latest
39+
entrypoint: mongodb-consistent-backup
40+
command: --backup.location=/tmp --backup.name=test-replset --host=rs0/mongo-rs0-1:27017,mongo-rs0-2:27017,mongo-rs0-3:27017 --replication.max_lag_secs=15 ${MCB_EXTRA}
41+
depends_on:
42+
- mongo-rs0-1
43+
- mongo-rs0-2
44+
- mongo-rs0-3

scripts/travis-ci/func.sh

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
#!/bin/bash
2+
3+
function doMongo() {
4+
set +x
5+
set +e
6+
local service=$1
7+
local host=$2
8+
local cmd=$3
9+
local tries=0
10+
while [ $tries -le 5 ]; do
11+
bash -x -c "docker-compose run --rm ${service} /usr/bin/mongo ${host} --quiet --eval '${cmd}'"
12+
[ $? = 0 ] && break
13+
echo "# Retrying mongo command to ${host}"
14+
tries=$(($tries + 1))
15+
sleep 3
16+
done
17+
set -e
18+
set -x
19+
}

scripts/travis-ci/run-cluster.sh

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
#!/bin/bash
2+
3+
set -e
4+
set -x
5+
6+
function print_usage() {
7+
echo "Usage $0: [MONGO_VERSION] [CONFIGSVR_TYPE (CSRS or SCCC)] [mongodb-consistent-backup EXTRA FLAGS...]"
8+
}
9+
10+
MONGO_VERSION=${1:-3.2}
11+
CONFIGSVR_TYPE=${2:-CSRS}
12+
MCB_EXTRA="${@:3}"
13+
14+
pushd $(dirname $0)
15+
source $PWD/func.sh
16+
17+
export MONGO_VERSION=${MONGO_VERSION}
18+
export DATA_MONGOD_FLAGS="--shardsvr"
19+
export MCB_EXTRA=${MCB_EXTRA}
20+
21+
CONFIGSVR_REPLSET=csReplSet
22+
if [ "${CONFIGSVR_TYPE}" == "CSRS" ]; then
23+
export CONFIGSVR_FLAGS="--replSet=${CONFIGSVR_REPLSET}"
24+
export MONGOS_CONFIGDB="${CONFIGSVR_REPLSET}/mongo-cs-1:27017,mongo-cs-2:27017,mongo-cs-3:27017"
25+
echo "# Using CSRS-based config servers: '${MONGOS_CONFIGDB}'"
26+
elif [ "${CONFIGSVR_TYPE}" == "SCCC" ]; then
27+
export CONFIGSVR_FLAGS=
28+
export MONGOS_CONFIGDB="mongo-cs-1:27017,mongo-cs-2:27017"
29+
echo "# Using SCCC-based config servers: '${MONGOS_CONFIGDB}'"
30+
else
31+
echo "Unsupported CONFIGSVR_TYPE field: '${CONFIGSVR_TYPE}'! Supported: CSRS (default) or SCCC"
32+
print_usage
33+
exit 1
34+
fi
35+
36+
# start mongo-mongos service (which starts the whole cluster)
37+
echo "# Starting instances with docker-compose"
38+
docker-compose up -d mongo-mongos
39+
40+
echo "# Waiting 10 seconds"
41+
sleep 10
42+
43+
if [ "${CONFIGSVR_TYPE}" == "CSRS" ]; then
44+
echo "# Initiating csReplSet (config server replica set)"
45+
doMongo mongo-mongos mongo-cs-1:27017 'rs.initiate({
46+
_id: "csReplSet",
47+
configsvr: true,
48+
members: [
49+
{ _id: 0, host: "mongo-cs-1:27017" },
50+
{ _id: 1, host: "mongo-cs-2:27017" },
51+
{ _id: 2, host: "mongo-cs-3:27017" }
52+
]
53+
})'
54+
fi
55+
56+
echo "# Initiating rs0"
57+
doMongo mongo-mongos mongo-rs0-1:27017 'rs.initiate({
58+
_id: "rs0",
59+
members: [
60+
{ _id: 0, host: "mongo-rs0-1:27017" },
61+
{ _id: 1, host: "mongo-rs0-2:27017" },
62+
{ _id: 2, host: "mongo-rs0-3:27017", priority: 0 }
63+
]
64+
})'
65+
66+
echo "# Waiting 10 seconds"
67+
sleep 10
68+
69+
echo "# Adding shard rs0"
70+
doMongo mongo-mongos mongo-mongos:27017 'sh.addShard("rs0/mongo-rs0-1:27017,mongo-rs0-2:27017,mongo-rs0-3:27017")'
71+
72+
echo "# Starting mongodb_consistent_backup, cluster mode (in docker)"
73+
docker-compose up --abort-on-container-exit backup-cluster
74+
75+
echo "# Stopping instances with docker-compose"
76+
docker-compose down
77+
popd

scripts/travis-ci/run-replset.sh

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
#!/bin/bash
2+
3+
set -e
4+
set -x
5+
6+
MONGO_VERSION=${1:-3.2}
7+
MCB_EXTRA="${@:2}"
8+
9+
pushd $(dirname $0)
10+
source $PWD/func.sh
11+
12+
export MONGO_VERSION=${MONGO_VERSION}
13+
export DATA_MONGOD_FLAGS=
14+
export MONGOS_CONFIGDB=
15+
export CONFIGSVR_FLAGS=
16+
export MCB_EXTRA=${MCB_EXTRA}
17+
18+
echo "# Starting instances with docker-compose"
19+
docker-compose up -d mongo-rs0-1
20+
docker-compose up -d mongo-rs0-2
21+
docker-compose up -d mongo-rs0-3
22+
23+
echo "# Waiting 10 seconds"
24+
sleep 10
25+
26+
echo "# Initiating rs0"
27+
doMongo mongo-rs0-1 mongo-rs0-1:27017 'rs.initiate({
28+
_id: "rs0",
29+
members: [
30+
{ _id: 0, host: "mongo-rs0-1:27017" },
31+
{ _id: 1, host: "mongo-rs0-2:27017" },
32+
{ _id: 2, host: "mongo-rs0-3:27017", priority: 0 }
33+
]
34+
})'
35+
36+
echo "# Waiting 10 seconds"
37+
sleep 10
38+
39+
echo "# Starting mongodb_consistent_backup, replset-only mode (in docker)"
40+
docker-compose up --abort-on-container-exit backup-replset
41+
42+
echo "# Stopping instances with docker-compose"
43+
docker-compose down
44+
popd

0 commit comments

Comments
 (0)