From 2e8dc960465595878c251e3f8890430824a20ed9 Mon Sep 17 00:00:00 2001 From: Daniel Egger Date: Thu, 20 Sep 2018 17:25:13 +0200 Subject: [PATCH] bitbucket pipelines heroku integration --- Pipfile | 1 + Pipfile.lock | 102 ++++++++++++++------- bitbucket-pipelines.yml | 19 +++- server/book/tests/test_module_mutations.py | 4 +- server/run_unittests_coverage.sh | 11 +++ 5 files changed, 101 insertions(+), 36 deletions(-) create mode 100755 server/run_unittests_coverage.sh diff --git a/Pipfile b/Pipfile index 706d2719..3fecbd13 100644 --- a/Pipfile +++ b/Pipfile @@ -9,6 +9,7 @@ python_version = '3.6' [dev-packages] awscli = "*" ipdb = "*" +coverage = "*" [packages] factory-boy = "*" diff --git a/Pipfile.lock b/Pipfile.lock index 94b952f3..d725c6b6 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "2341eacc0bfdcc8c231c5ebf696c89360052a264240118f3b509c927aeaf611b" + "sha256": "453dc874bdeeafb492b7ad1d810f8bf038bc05d6114dffa610c39a499fc8f8ba" }, "pipfile-spec": 6, "requires": { @@ -41,18 +41,18 @@ }, "boto3": { "hashes": [ - "sha256:2152e0da8098665e6a03bbbde1de1b4fafdef7151010d1f0e53693a3f2a1deb0", - "sha256:323660fd1aa9c95fe90003f44c5fc37cbb891a8b506fa346967d14edcbcb90a4" + "sha256:8cf861abc8ac7c7db6d4c4cb3f300b64bdc9490482ebdffd6f6cd46a730dd524", + "sha256:afabd27d49b74ae0d5e5f20c9ec7b4b5d26bd1f7bb5b01e670a7d4c35f535a4e" ], "index": "pypi", - "version": "==1.9.4" + "version": "==1.9.7" }, "botocore": { "hashes": [ - "sha256:3b2cab368572ee987a6236321ddea491e4253c819009c87ebc9e42e60371e3ae", - "sha256:7834eba53c6bedea21eb76f25a39e477dede3a24aeb51ff19c0248ea8348f007" + "sha256:22c1460e0ff40a4d25198b8d807a24fc7ecd95162d72d3e1496a7a571ae7468d", + "sha256:5fca20d37627823d50a101ad9acb5a0b1f6d7f82b6d84cb7a33afe8d68a03f75" ], - "version": "==1.12.4" + "version": "==1.12.7" }, "certifi": { "hashes": [ @@ -198,7 +198,7 @@ "sha256:74b32991f8e08e4f2f84858b919eca253becfaec4b3fa5fcff7fdbd70d5d78b1", "sha256:c2ce42dd8361e6d392276006d757532562463c8642b1086709584200b7fd7758" ], - "markers": "python_version >= '2.7' and python_version != '3.1.*' and python_version != '3.0.*' and python_version != '3.2.*'", + "markers": "python_version != '3.0.*' and python_version != '3.1.*' and python_version >= '2.7' and python_version != '3.2.*'", "version": "==0.9.1" }, "graphene": { @@ -260,24 +260,21 @@ }, "libsass": { "hashes": [ - "sha256:0f2e421d3e5a53833243e0a5f2cf7ebe9812725a7f27a797c38f3c7190ce2a82", - "sha256:1b74aff85f1560d629a070552ec67f9f0ff9a47446ffafddafad9944f7589ae1", - "sha256:1cf80c04a77d36fd77f00b1ae0a269eee780d971fabd9d493b15d30de9857ae5", - "sha256:1d55dfe8e91a15a7d72d7f8aca16e74da36899e70d911af66d7184f1c82e2b39", - "sha256:23755425149fe0f576fd0ab7bcd151fe09400b2d980fe176c28f6c19e053c830", - "sha256:4a434d5b713b97c4141fb71c59341d4ebff8669114b14c626af51e145a48710e", - "sha256:4dcd5b546bed977276f97eb7a2a13cb7cbf0a38d672e7b5525b7587c8cabcf27", - "sha256:62771c8ead9227579891814dd714be645243741aa23e5cb232ac0c245cf29a37", - "sha256:727fb84326ffa930bc09fad8b706e77ada4d13b3adf35cce134962a434d7eccb", - "sha256:7b9e7179b5f4fc32bc716f86e9ccaeb48ab90e7eb6648b339440346733af8828", - "sha256:a0ffca466b35fb57f2afe1f1c5fd39b4c51a4107596d28ef8c0d3bb0962244b5", - "sha256:bb9735066391189b3c0383254d20d59aaafb438d632d7de551c264f16486e773", - "sha256:cbd5ee83d3603a2b2c2937d8f06acc07b30fd22642ea2460c966d4fd6217f1d0", - "sha256:de1eae502764b3dde294d6652a0046489cf31008de190c4dd8d05e7f4b5e0d71", - "sha256:e00b6c6d75a6e912990cbc23d48ddfdbfefc3e400c20be6593988839292248c5", - "sha256:ed8beef197efc6e6ab0ad03cea0885b31cc11f226290783649b4dafe1fb2ea27" + "sha256:08acdcb6c371ab11a70201f07c1422412233f1f4aee52c85c98f3bc76180c180", + "sha256:2034e286d7daf6895d8ea893082ab083de5d160322e457c6126ba7b2511291b8", + "sha256:25f19c2bab4cea70a24396f278c713f2580e4934a29915575d53dc00724347df", + "sha256:44ac0e6febddba7b42506797468f98fdd566267ca1351e582b4369bfeae65dd8", + "sha256:5bf3023bc695582ffc81186436416722bca9d1a80cb3d85290a5d76992c86ba0", + "sha256:7d7460ff5d42eaadaf8b8a437ec859068c4f6d91b513645dcac15e0d7a74d0f9", + "sha256:9fdaa6c2a89950e3e83669fd69a1a7773182793651cbe5a2a0c0a8d41239be01", + "sha256:a3f02ef116ada549399aef852d4eff4387d5e2d3f25f0288a662f56bc1491787", + "sha256:b7383eb259bbd6fd452924702dd63c34d7abf7958e9457d6990595f34c2a86ec", + "sha256:d7eef002cada7533edae40fac1fbeb23b14d56c51683d695c93860b4d5cd7b67", + "sha256:e3e3bc07df5c08c403700e2ea63ba557bebb157800f2d6c6b873d52d52cc90f1", + "sha256:ea5d518857a981661779b959e9bd0c3b363a920bdb5a971156b495d6a8e793d5", + "sha256:f613419de5f27b966725908d92a16ac56cdf8a09a57e841f8ed9693dce947fd5" ], - "version": "==0.14.5" + "version": "==0.15.0" }, "pillow": { "hashes": [ @@ -396,7 +393,7 @@ "sha256:63b52e3c866428a224f97cab011de738c36aec0185aa91cfacd418b5d58911d1", "sha256:ec22d826a36ed72a7358ff3fe56cbd4ba69dd7a6718ffd450ff0e9df7a47ce6a" ], - "markers": "python_version != '3.3.*' and python_version != '3.2.*' and python_version < '4' and python_version != '3.1.*' and python_version >= '2.6' and python_version != '3.0.*'", + "markers": "python_version != '3.1.*' and python_version < '4' and python_version != '3.2.*' and python_version != '3.3.*' and python_version != '3.0.*' and python_version >= '2.6'", "version": "==2.19.1" }, "rjsmin": { @@ -460,7 +457,7 @@ "sha256:a68ac5e15e76e7e5dd2b8f94007233e01effe3e50e8daddf69acfd81cb686baf", "sha256:b5725a0bd4ba422ab0e66e89e030c806576753ea3ee08554382c14e685d117b5" ], - "markers": "python_version != '3.1.*' and python_version != '3.0.*' and python_version < '4' and python_version >= '2.6' and python_version != '3.2.*' and python_version != '3.3.*'", + "markers": "python_version < '4' and python_version != '3.0.*' and python_version != '3.1.*' and python_version != '3.3.*' and python_version >= '2.6' and python_version != '3.2.*'", "version": "==1.23" }, "wagtail": { @@ -509,11 +506,11 @@ }, "awscli": { "hashes": [ - "sha256:27009baa405935d7229ca551d9433e029a05d68fbc99548e1cbe8fc759b5af43", - "sha256:6d1509d1b00618ad2bda119eb6e6f1a427b22eff006c0f705d3f8b5e3fea0932" + "sha256:0e854eb7890d69b1c67dfd696a7f39eda492260795d807b7f3075b06188ff1f5", + "sha256:d33480b90862a72631a858ef4cc6f352a2ef98744a552caf44a4700ed3e5f3ea" ], "index": "pypi", - "version": "==1.16.14" + "version": "==1.16.17" }, "backcall": { "hashes": [ @@ -524,10 +521,10 @@ }, "botocore": { "hashes": [ - "sha256:3b2cab368572ee987a6236321ddea491e4253c819009c87ebc9e42e60371e3ae", - "sha256:7834eba53c6bedea21eb76f25a39e477dede3a24aeb51ff19c0248ea8348f007" + "sha256:22c1460e0ff40a4d25198b8d807a24fc7ecd95162d72d3e1496a7a571ae7468d", + "sha256:5fca20d37627823d50a101ad9acb5a0b1f6d7f82b6d84cb7a33afe8d68a03f75" ], - "version": "==1.12.4" + "version": "==1.12.7" }, "colorama": { "hashes": [ @@ -536,6 +533,43 @@ ], "version": "==0.3.9" }, + "coverage": { + "hashes": [ + "sha256:03481e81d558d30d230bc12999e3edffe392d244349a90f4ef9b88425fac74ba", + "sha256:0b136648de27201056c1869a6c0d4e23f464750fd9a9ba9750b8336a244429ed", + "sha256:10a46017fef60e16694a30627319f38a2b9b52e90182dddb6e37dcdab0f4bf95", + "sha256:198626739a79b09fa0a2f06e083ffd12eb55449b5f8bfdbeed1df4910b2ca640", + "sha256:23d341cdd4a0371820eb2b0bd6b88f5003a7438bbedb33688cd33b8eae59affd", + "sha256:28b2191e7283f4f3568962e373b47ef7f0392993bb6660d079c62bd50fe9d162", + "sha256:2a5b73210bad5279ddb558d9a2bfedc7f4bf6ad7f3c988641d83c40293deaec1", + "sha256:2eb564bbf7816a9d68dd3369a510be3327f1c618d2357fa6b1216994c2e3d508", + "sha256:337ded681dd2ef9ca04ef5d93cfc87e52e09db2594c296b4a0a3662cb1b41249", + "sha256:3a2184c6d797a125dca8367878d3b9a178b6fdd05fdc2d35d758c3006a1cd694", + "sha256:3c79a6f7b95751cdebcd9037e4d06f8d5a9b60e4ed0cd231342aa8ad7124882a", + "sha256:3d72c20bd105022d29b14a7d628462ebdc61de2f303322c0212a054352f3b287", + "sha256:3eb42bf89a6be7deb64116dd1cc4b08171734d721e7a7e57ad64cc4ef29ed2f1", + "sha256:4635a184d0bbe537aa185a34193898eee409332a8ccb27eea36f262566585000", + "sha256:56e448f051a201c5ebbaa86a5efd0ca90d327204d8b059ab25ad0f35fbfd79f1", + "sha256:5a13ea7911ff5e1796b6d5e4fbbf6952381a611209b736d48e675c2756f3f74e", + "sha256:69bf008a06b76619d3c3f3b1983f5145c75a305a0fea513aca094cae5c40a8f5", + "sha256:6bc583dc18d5979dc0f6cec26a8603129de0304d5ae1f17e57a12834e7235062", + "sha256:701cd6093d63e6b8ad7009d8a92425428bc4d6e7ab8d75efbb665c806c1d79ba", + "sha256:7608a3dd5d73cb06c531b8925e0ef8d3de31fed2544a7de6c63960a1e73ea4bc", + "sha256:76ecd006d1d8f739430ec50cc872889af1f9c1b6b8f48e29941814b09b0fd3cc", + "sha256:7aa36d2b844a3e4a4b356708d79fd2c260281a7390d678a10b91ca595ddc9e99", + "sha256:7d3f553904b0c5c016d1dad058a7554c7ac4c91a789fca496e7d8347ad040653", + "sha256:7e1fe19bd6dce69d9fd159d8e4a80a8f52101380d5d3a4d374b6d3eae0e5de9c", + "sha256:8c3cb8c35ec4d9506979b4cf90ee9918bc2e49f84189d9bf5c36c0c1119c6558", + "sha256:9d6dd10d49e01571bf6e147d3b505141ffc093a06756c60b053a859cb2128b1f", + "sha256:be6cfcd8053d13f5f5eeb284aa8a814220c3da1b0078fa859011c7fffd86dab9", + "sha256:c1bb572fab8208c400adaf06a8133ac0712179a334c09224fb11393e920abcdd", + "sha256:de4418dadaa1c01d497e539210cb6baa015965526ff5afc078c57ca69160108d", + "sha256:e05cb4d9aad6233d67e0541caa7e511fa4047ed7750ec2510d466e806e0255d6", + "sha256:f3f501f345f24383c0000395b26b726e46758b71393267aeae0bd36f8b3ade80" + ], + "index": "pypi", + "version": "==4.5.1" + }, "decorator": { "hashes": [ "sha256:2c51dff8ef3c447388fe5e4453d24a2bf128d3a4c32af3fabef1f01c6851ab82", @@ -700,7 +734,7 @@ "sha256:a68ac5e15e76e7e5dd2b8f94007233e01effe3e50e8daddf69acfd81cb686baf", "sha256:b5725a0bd4ba422ab0e66e89e030c806576753ea3ee08554382c14e685d117b5" ], - "markers": "python_version != '3.1.*' and python_version != '3.0.*' and python_version < '4' and python_version >= '2.6' and python_version != '3.2.*' and python_version != '3.3.*'", + "markers": "python_version < '4' and python_version != '3.0.*' and python_version != '3.1.*' and python_version != '3.3.*' and python_version >= '2.6' and python_version != '3.2.*'", "version": "==1.23" }, "wcwidth": { diff --git a/bitbucket-pipelines.yml b/bitbucket-pipelines.yml index 669cdbe0..aa28a48d 100644 --- a/bitbucket-pipelines.yml +++ b/bitbucket-pipelines.yml @@ -5,10 +5,27 @@ # You can specify a custom docker image from Docker Hub as your build environment. image: python:3.6.6 +clone: + depth: full + pipelines: default: - step: caches: - pip + services: + - postgres script: # Modify the commands below to build your repository. - - pipenv install --dev + - pip install pipenv + - export SECRET_KEY=abcd1234 + - export DATABASE_URL=postgres://postgres:postgres@localhost:5432/skillbox + - export DEBUG=True + - export USE_AWS=False + - pipenv install --dev --system + - ./server/run_unittests_coverage.sh + - git push https://heroku:$HEROKU_API_KEY@git.heroku.com/$HEROKU_APP_NAME.git HEAD:master + +definitions: + services: + postgres: + image: postgres diff --git a/server/book/tests/test_module_mutations.py b/server/book/tests/test_module_mutations.py index 1c86adc9..d5daf07b 100644 --- a/server/book/tests/test_module_mutations.py +++ b/server/book/tests/test_module_mutations.py @@ -28,7 +28,9 @@ class NewContentBlockMutationTest(TestCase): "contents": [ { "type": "text_block", - "text": "Hello there" + "value": { + "text": "Hello there" + } } ] }, diff --git a/server/run_unittests_coverage.sh b/server/run_unittests_coverage.sh new file mode 100755 index 00000000..4048e6e1 --- /dev/null +++ b/server/run_unittests_coverage.sh @@ -0,0 +1,11 @@ +#!/bin/bash +# script should fail when any process returns non zero code +set -e + +cd "$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +python -m coverage run manage.py test $1 + +coverage_python=`coverage report -m | tail -n1 | awk '{print $4}'` +commit=`git rev-parse HEAD` +data="{\"${commit}/coverage_python\": \"${coverage_python}\"}" +curl -X PATCH -d "${data}" 'https://commit-metadata.firebaseio.com/commits.json'