Skip to content

Commit b85b912

Browse files
travis-ci support
1 parent 34818a2 commit b85b912

File tree

9 files changed

+256
-2
lines changed

9 files changed

+256
-2
lines changed

.travis.yml

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

25+
flake8:
26+
# Ignore long-lines and space-aligned = and : for now
27+
flake8 --ignore E221,E241,E501 $(PWD)/$(NAME)
28+
2529
uninstall:
2630
rm -f $(BINDIR)/mongodb-consistent-backup
2731
rm -rf $(SHAREDIR)/$(NAME)
@@ -36,6 +40,7 @@ rpm: bin/mongodb-consistent-backup
3640

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

4045
clean:
4146
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
6+
mongo-rs0-2:
7+
image: "percona/percona-server-mongodb:${MONGO_VERSION}"
8+
command: mongod --port 27017 --replSet=rs0 --dbpath /data/db
9+
mongo-rs0-3:
10+
image: "percona/percona-server-mongodb:${MONGO_VERSION}"
11+
command: mongod --port 27017 --replSet=rs0 --dbpath /data/db
12+
mongo-s-rs0-1:
13+
image: "percona/percona-server-mongodb:${MONGO_VERSION}"
14+
command: mongod --port 27017 --replSet=rs0 --shardsvr --dbpath /data/db
15+
mongo-s-rs0-2:
16+
image: "percona/percona-server-mongodb:${MONGO_VERSION}"
17+
command: mongod --port 27017 --replSet=rs0 --shardsvr --dbpath /data/db
18+
mongo-cs-1:
19+
image: "percona/percona-server-mongodb:${MONGO_VERSION}"
20+
command: mongod --port 27017 ${CONFIGSVR_FLAGS} --configsvr --dbpath /data/db
21+
mongo-cs-2:
22+
image: "percona/percona-server-mongodb:${MONGO_VERSION}"
23+
command: mongod --port 27017 ${CONFIGSVR_FLAGS} --configsvr --dbpath /data/db
24+
mongo-mongos:
25+
image: "percona/percona-server-mongodb:${MONGO_VERSION}"
26+
command: mongos --port 27017 --configdb ${MONGOS_CONFIGDB}
27+
depends_on:
28+
- mongo-s-rs0-1
29+
- mongo-s-rs0-2
30+
- mongo-cs-1
31+
- mongo-cs-2
32+
backup-cluster:
33+
image: mongodb_consistent_backup:latest
34+
entrypoint: mongodb-consistent-backup
35+
command: --backup.location /tmp --backup.name test-cluster --host ${MONGOS_CONFIGDB} --replication.max_lag_secs 15 ${MCB_EXTRA}
36+
depends_on:
37+
- mongo-mongos
38+
backup-replset:
39+
image: mongodb_consistent_backup:latest
40+
entrypoint: mongodb-consistent-backup
41+
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}
42+
depends_on:
43+
- mongo-rs0-1
44+
- mongo-rs0-2

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

scripts/travis-ci/run-replset.sh

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
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 MCB_EXTRA=${MCB_EXTRA}
14+
15+
echo "# Starting instances with docker-compose"
16+
docker-compose up -d mongo-rs0-1
17+
docker-compose up -d mongo-rs0-2
18+
docker-compose up -d mongo-rs0-3
19+
20+
echo "# Waiting 10 seconds"
21+
sleep 10
22+
23+
echo "# Initiating rs0"
24+
doMongo mongo-rs0-1 mongo-rs0-1:27017 'rs.initiate({
25+
_id: "rs0",
26+
members: [
27+
{ _id: 0, host: "mongo-rs0-1:27017" },
28+
{ _id: 1, host: "mongo-rs0-2:27017" },
29+
{ _id: 3, host: "mongo-rs0-3:27017", priority: 0 }
30+
]
31+
})'
32+
33+
echo "# Waiting 10 seconds"
34+
sleep 10
35+
36+
echo "# Starting mongodb_consistent_backup, replset-only mode (in docker)"
37+
docker-compose up --abort-on-container-exit backup-replset
38+
39+
echo "# Stopping instances with docker-compose"
40+
docker-compose down
41+
popd

0 commit comments

Comments
 (0)