diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..8f8ba22 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,27 @@ +sudo: required +language: python +cache: + directories: + - pip +before_install: +- make travis-before-install-$TEST_SUITE +install: +- make travis-install-$TEST_SUITE +before_script: +- make travis-before-script-$TEST_SUITE +script: +- make travis-$SCRIPT-$TEST_SUITE +jobs: + include: + - stage: test + python: 3.6 + env: + - TEST_SUITE=backend + - SCRIPT=test + services: + - mysql + after_success: + - mysqldump --user='root' --password='' test_project > ~/$TRAVIS_BRANCH/databases/db.sql + - aws s3 sync ~/$TRAVIS_BRANCH s3://org-travis-ci/$TRAVIS_BRANCH +notifications: + email: false diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..1542bf3 --- /dev/null +++ b/Makefile @@ -0,0 +1,25 @@ +travis-before-install-backend: + sudo rm -f /etc/boto.cfg + +travis-install-backend: + pip install awscli + pip install -r ./requirements.txt + +travis-before-script-backend: + mkdir -p ~/$(TRAVIS_BRANCH)/databases/ + touch ~/$(TRAVIS_BRANCH)/databases/db.sql + aws s3 sync s3://org-travis-ci/$(TRAVIS_BRANCH) ~/$(TRAVIS_BRANCH) + mysql --user='root' --password='' -e 'CREATE DATABASE IF NOT EXISTS test_project;' + @case $$TRAVIS_COMMIT_MESSAGE in *"[reset mysql]"*) \ + echo 'Resetting MySQL database...'; \ + aws s3 rm s3://org-travis-ci/$(TRAVIS_BRANCH)/databases/db.sql; \ + ;; *) \ + echo 'Loading previous MySQL database...'; \ + mysql --user='root' --password='' test_project < ~/$(TRAVIS_BRANCH)/databases/db.sql; \ + esac + +travis-test-backend: + cd project; python manage.py test --keepdb --failfast -v 3 project + +travis-noop: + @echo "Move along..." diff --git a/README.md b/README.md index 86e97ba..f2a31b7 100644 --- a/README.md +++ b/README.md @@ -1 +1,12 @@ # travis-ci-persistent-db + +Maintain a persistent database per branch on Travis CI builds. +Use `[reset mysql]` in a commit message to reset database. + +### Pull Request Showing Difference + +https://github.com/michaelhelmick/travis-ci-persistent-db/pull/1 + +### Blog Post + +https://medium.com/@mikehelmick/persistent-databases-on-travis-ci-19ca6f968d50