|
| 1 | +# Use the latest 2.1 version of CircleCI pipeline process engine. |
| 2 | +# See: https://circleci.com/docs/2.0/configuration-reference |
| 3 | +version: 2.1 |
| 4 | + |
| 5 | +jobs: |
| 6 | + |
| 7 | + build-test: |
| 8 | + # Specify the execution environment. You can specify an image from Dockerhub or use one of our Convenience Images from CircleCI's Developer Hub. |
| 9 | + # See: https://circleci.com/docs/2.0/configuration-reference/#docker-machine-macos-windows-executor |
| 10 | + docker: |
| 11 | + - image: docker:17.05.0-ce-git |
| 12 | + auth: |
| 13 | + username: $DOCKER_USER |
| 14 | + password: $DOCKER_PASS |
| 15 | + |
| 16 | + # Add steps to the job |
| 17 | + # See: https://circleci.com/docs/2.0/configuration-reference/#steps |
| 18 | + steps: |
| 19 | + - checkout |
| 20 | + - setup_remote_docker |
| 21 | + - run: |
| 22 | + name: "Build test image" |
| 23 | + command: | |
| 24 | + docker pull fentechai/cdt-base:latest |
| 25 | + docker build -t fentechai/cdt-test:$CIRCLE_BRANCH . |
| 26 | + docker login -u $DOCKER_USER -p $DOCKER_PASS |
| 27 | + docker push fentechai/cdt-test:$CIRCLE_BRANCH |
| 28 | +
|
| 29 | + test-image: |
| 30 | + docker: |
| 31 | + - image: fentechai/cdt-test:$CIRCLE_BRANCH |
| 32 | + auth: |
| 33 | + username: $DOCKER_USER |
| 34 | + password: $DOCKER_PASS |
| 35 | + steps: |
| 36 | + - checkout |
| 37 | + - setup_remote_docker |
| 38 | + - run: |
| 39 | + name: Test CDT installation |
| 40 | + no_output_timeout: 40m |
| 41 | + command: | |
| 42 | + cd /CDT && pip3 uninstall cdt -y |
| 43 | + python3 setup.py install develop --user |
| 44 | + pytest --cov-report=xml --cov=./cdt |
| 45 | + codecov --token $CODECOV_TOKEN |
| 46 | +
|
| 47 | + bumpversion: |
| 48 | + docker: |
| 49 | + - image: docker:17.05.0-ce-git |
| 50 | + auth: |
| 51 | + username: $DOCKER_USER |
| 52 | + password: $DOCKER_PASS |
| 53 | + steps: |
| 54 | + - checkout |
| 55 | + - setup_remote_docker |
| 56 | + - run: |
| 57 | + name: Install dependencies |
| 58 | + command: | |
| 59 | + apk add --no-cache \ |
| 60 | + py-pip=9.0.0-r1 |
| 61 | + apk add --no-cache bash |
| 62 | + - add_ssh_keys: |
| 63 | + fingerprints: |
| 64 | + - "94:dc:75:8a:05:8e:b6:ef:bc:34:01:ed:7d:6b:86:ee" |
| 65 | + - when: |
| 66 | + condition: |
| 67 | + equal: [ master, << pipeline.git.branch >> ] |
| 68 | + steps: |
| 69 | + - run: |
| 70 | + name: Bumpversion |
| 71 | + command: | |
| 72 | + bash ./.circleci/bumpversion.sh |
| 73 | + git config --global user.email "[email protected]" |
| 74 | + git config --global user.name "CircleCI Bumpversion" |
| 75 | + git config --global push.default simple |
| 76 | + git remote add deploy [email protected]:FenTechSolutions/CausalDiscoveryToolbox.git |
| 77 | + git add -u |
| 78 | + VERSION_NEW=$(cat setup.py| grep version | cut -c 20- | rev | cut -c 3- | rev) |
| 79 | + git commit -m "[DEPLOY] $VERSION_NEW [skip ci]" |
| 80 | + git push deploy HEAD:master |
| 81 | +
|
| 82 | + build-push-docker-images: |
| 83 | + parameters: |
| 84 | + base-image: |
| 85 | + type: string |
| 86 | + target-image: |
| 87 | + type: string |
| 88 | + dockerfile: |
| 89 | + type: string |
| 90 | + docker: |
| 91 | + - image: docker:17.05.0-ce-git |
| 92 | + auth: |
| 93 | + username: $DOCKER_USER |
| 94 | + password: $DOCKER_PASS |
| 95 | + steps: |
| 96 | + - checkout |
| 97 | + - setup_remote_docker |
| 98 | + - run: |
| 99 | + name: Define run environment variables |
| 100 | + command: | |
| 101 | + echo 'export COMMIT_MESSAGE="$(git log --format=%B -n 1)"' >> $BASH_ENV |
| 102 | + echo 'export SUFFIX=$SUFFIX' >> $BASH_ENV |
| 103 | + echo 'Defined VARS: SUFFIX:$SUFFIX COMMIT_MESSAGE:$COMMIT_MESSAGE' |
| 104 | + source $BASH_ENV |
| 105 | + - when: |
| 106 | + condition: |
| 107 | + equal: [ master, << pipeline.git.branch >> ] |
| 108 | + steps: |
| 109 | + - run: |
| 110 | + name: Push Docker image |
| 111 | + command: | |
| 112 | + source $BASH_ENV |
| 113 | + git pull origin master |
| 114 | + VERSION_NEW=$(cat setup.py| grep version | cut -c 20- | rev | cut -c 3- | rev) |
| 115 | + docker login -u $DOCKER_USER -p $DOCKER_PASS |
| 116 | + docker pull << parameters.base-image>>:latest |
| 117 | + docker build -f << parameters.dockerfile >> -t << parameters.target-image >>$SUFFIX:$VERSION_NEW . |
| 118 | + docker push << parameters.target-image >>$SUFFIX:$VERSION_NEW |
| 119 | + docker tag << parameters.target-image >>$SUFFIX:$VERSION_NEW << parameters.target-image >>$SUFFIX:latest |
| 120 | + docker push << parameters.target-image >>$SUFFIX:latest |
| 121 | +
|
| 122 | + deploy-pypi: |
| 123 | + docker: |
| 124 | + - image: docker:17.05.0-ce-git |
| 125 | + auth: |
| 126 | + username: $DOCKER_USER |
| 127 | + password: $DOCKER_PASS |
| 128 | + steps: |
| 129 | + - checkout |
| 130 | + - setup_remote_docker |
| 131 | + - when: |
| 132 | + condition: |
| 133 | + equal: [ master, << pipeline.git.branch >> ] |
| 134 | + steps: |
| 135 | + - run: |
| 136 | + name: Push to PyPi |
| 137 | + command: | |
| 138 | + git pull origin master |
| 139 | + VERSION_NEW=$(cat setup.py| grep version | cut -c 20- | rev | cut -c 3- | rev) |
| 140 | + docker pull fentechai/cdt:$VERSION_NEW |
| 141 | + docker run -e PYPI_PASSWORD=$PYPI_PASSWORD --rm fentechai/cdt:$VERSION_NEW /bin/sh -c "cd /CDT && pip3 install --upgrade keyrings.alt && pip3 install twine wheel && python3 setup.py sdist bdist_wheel && twine upload -u divkal -p '$PYPI_PASSWORD' dist/*" |
| 142 | +
|
| 143 | + build-docs: |
| 144 | + docker: |
| 145 | + - image: fentechai/cdt:latest |
| 146 | + auth: |
| 147 | + username: $DOCKER_USER |
| 148 | + password: $DOCKER_PASS |
| 149 | + steps: |
| 150 | + - checkout |
| 151 | + - setup_remote_docker |
| 152 | + - add_ssh_keys: |
| 153 | + fingerprints: |
| 154 | + - "94:dc:75:8a:05:8e:b6:ef:bc:34:01:ed:7d:6b:86:ee" |
| 155 | + - when: |
| 156 | + condition: |
| 157 | + equal: [ master, << pipeline.git.branch >> ] |
| 158 | + steps: |
| 159 | + - run: |
| 160 | + name: Build Docs and Push to GitHub |
| 161 | + command: | |
| 162 | + cd /CDT |
| 163 | + git pull origin master |
| 164 | + VERSION_NEW=$(cat setup.py| grep version | cut -c 20- | rev | cut -c 3- | rev) |
| 165 | + # docker pull fentechai/cdt:$VERSION_NEW |
| 166 | + git config --global user.email "[email protected]" |
| 167 | + git config --global user.name "Circle CI Docs" |
| 168 | + git config --global push.default simple |
| 169 | + # docker run -v $(pwd):/cdtlib --rm fentechai/cdt:$VERSION_NEW /bin/sh -c 'cd /cdtlib && pip3 uninstall cdt -y && pip3 install . && pip3 install sphinx recommonmark sphinxcontrib-napoleon sphinx_rtd_theme && cd docs && sphinx-build -Eab html . html' |
| 170 | + pip3 install sphinx recommonmark sphinxcontrib-napoleon sphinx_rtd_theme |
| 171 | + cd docs |
| 172 | + sphinx-build -Eab html . html |
| 173 | + git remote add deploy [email protected]:FenTechSolutions/CausalDiscoveryToolbox.git |
| 174 | + cd .. |
| 175 | + git add ./docs |
| 176 | + git commit -m "[DEPLOY] Docs $VERSION_NEW [skip ci]" |
| 177 | + git push deploy HEAD:master |
| 178 | +
|
| 179 | +
|
| 180 | +# Invoke jobs via workflows |
| 181 | +# See: https://circleci.com/docs/2.0/configuration-reference/#workflows |
| 182 | +workflows: |
| 183 | + default: |
| 184 | + jobs: |
| 185 | + - build-test: |
| 186 | + name: build-test-image |
| 187 | + |
| 188 | + - test-image: |
| 189 | + name: test-image |
| 190 | + requires: [build-test-image] |
| 191 | + |
| 192 | + - bumpversion: |
| 193 | + requires: [test-image] |
| 194 | + filters: |
| 195 | + branches: |
| 196 | + only: |
| 197 | + - master |
| 198 | + |
| 199 | + - build-push-docker-images: |
| 200 | + name: build-cpu-image |
| 201 | + base-image: fentechai/cdt-base |
| 202 | + target-image: fentechai/cdt |
| 203 | + dockerfile: Dockerfile |
| 204 | + requires: [bumpversion] |
| 205 | + |
| 206 | + - build-push-docker-images: |
| 207 | + name: build-gpu-image |
| 208 | + base-image: fentechai/nv-cdt-base |
| 209 | + target-image: fentechai/nv-cdt |
| 210 | + dockerfile: nv-Dockerfile |
| 211 | + requires: [bumpversion] |
| 212 | + |
| 213 | + - deploy-pypi: |
| 214 | + requires: [build-cpu-image] |
| 215 | + - build-docs: |
| 216 | + requires: [build-cpu-image] |
0 commit comments