|
1 | 1 | ---
|
2 |
| -# Python CircleCI 2.0 configuration file |
3 |
| -# |
4 |
| -# Check https://circleci.com/docs/2.0/language-python/ for more details |
5 |
| -# |
6 | 2 | version: 2
|
7 | 3 | jobs:
|
8 | 4 | build:
|
9 |
| - docker: |
10 |
| - - image: circleci/mysql:5.7 |
11 |
| - working_directory: /root/singnet |
12 |
| - environment: |
13 |
| - PYTHONPATH: /root/singnet/snet-platform-usage |
14 |
| - steps: |
15 |
| - - checkout |
16 |
| - - restore_cache: |
17 |
| - keys: |
18 |
| - - v1-dependencies-{{ checksum "metering/requirements.txt" }} |
19 |
| - # fallback to using the latest cache if no exact match is found |
20 |
| - - v1-dependencies- |
21 |
| - - run: |
22 |
| - name: Install Python and Git |
23 |
| - command: | |
24 |
| - mysql --version |
25 |
| - service mysql start |
26 |
| - apt-get update |
27 |
| - apt-get -y install sudo wget git |
28 |
| - apt-get -y install python3 python3-pip |
29 |
| - - run: |
30 |
| - name: install dependencies |
31 |
| - command: | |
32 |
| - python3 -m venv venv |
33 |
| - . venv/bin/activate |
34 |
| - pip install -r metering/requirements.txt |
35 |
| - - save_cache: |
36 |
| - paths: |
37 |
| - - ./venv |
38 |
| - key: v1-dependencies-{{ checksum "requirements.txt" }} |
39 |
| - # run tests! |
40 |
| - # this example uses Django's built-in test-runner |
41 |
| - # other common Python testing frameworks include pytest and nose |
42 |
| - # https://pytest.org |
43 |
| - # https://nose.readthedocs.io |
44 |
| - - run: |
45 |
| - name: run tests |
46 |
| - command: | |
47 |
| - . venv/bin/activate |
48 |
| - python metering/tests/test_total_calls.py test |
49 |
| - - store_artifacts: |
50 |
| - path: test-reports |
51 |
| - destination: test-reports |
| 5 | + docker: |
| 6 | + - image: circleci/python:3.6.6-node |
| 7 | + - image: circleci/mysql:8.0.16 |
| 8 | + environment: |
| 9 | + MYSQL_ROOT_PASSWORD: rootpw |
| 10 | + MYSQL_DATABASE: test_db |
| 11 | + MYSQL_USER: user |
| 12 | + MYSQL_PASSWORD: passw0rd |
| 13 | + working_directory: ~/singnet |
| 14 | + environment: |
| 15 | + PYTHONPATH: ~/singnet/snet-platform-usage/metering |
| 16 | + steps: |
| 17 | + - checkout |
| 18 | + - run: |
| 19 | + # Our primary container isn't MYSQL so run a sleep command until it's ready. |
| 20 | + name: Waiting for MySQL to be ready |
| 21 | + command: | |
| 22 | + for i in `seq 1 30`; |
| 23 | + do |
| 24 | + nc -z 127.0.0.1 3306 && echo Success && exit 0 |
| 25 | + echo -n . |
| 26 | + sleep 1 |
| 27 | + done |
| 28 | + echo Failed waiting for MySQL && exit 1 |
| 29 | + - run: |
| 30 | + name: Initialise tables. |
| 31 | + command: | |
| 32 | + cd metering |
| 33 | + cp tests/alembic.ini . |
| 34 | + cp tests/test-settings.py settings.py |
| 35 | + sudo pip install alembic |
| 36 | + sudo pip install pymysql |
| 37 | + sudo pip install cryptography |
| 38 | + PYTHONPATH=$PWD |
| 39 | + alembic upgrade head |
| 40 | + - run: |
| 41 | + name: Install dependencies & compile |
| 42 | + command: | |
| 43 | + cd metering |
| 44 | + python -m compileall *.py |
| 45 | + python -m compileall */*.py |
| 46 | + sudo pip install -r requirements.txt |
| 47 | + - run: |
| 48 | + name: run tests for metering |
| 49 | + command: | |
| 50 | + cd metering |
| 51 | + PYTHONPATH=$PWD python tests/test_total_calls.py |
| 52 | + - store_artifacts: |
| 53 | + path: test-reports |
| 54 | + destination: test-reports |
0 commit comments