From 25150e896050f91dbfbf0d209db98ab94e10f21b Mon Sep 17 00:00:00 2001 From: lamya-rey Date: Mon, 18 Jan 2021 15:04:53 +0100 Subject: [PATCH] :construction_worker: update config.yml --- .circleci/config.yml | 119 ++++++++++++++++++++++--------------------- 1 file changed, 62 insertions(+), 57 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 36e46a1..7858786 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,3 +1,18 @@ +workflows: + version: 2 + build_circleci: + jobs: + - build + - test: + requires: + - build + - back-deploy-heroku: + requires: + - build + - docker-build-and-push: + requires: + - back-deploy-heroku + version: 2 jobs: build: @@ -7,9 +22,11 @@ jobs: steps: - checkout - restore_cache: - key: dependencies-{{ checksum "requirements/dev.txt"}}-{{ checksum "requirements/prod.txt" }} + keys: + - v3-dependencies-{{ checksum "requirements/dev.txt" }}-{{ checksum "requirements/prod.txt" }} + - v3-dependencies- - run: - name: Install dependencies + name: install dependencies command: | python3 -m venv venv . venv/bin/activate @@ -18,26 +35,31 @@ jobs: CONDUIT_SECRET: 'something-really-secret' FLASK_APP: /home/circleci/repo/autoapp.py FLASK_DEBUG: 1 + - save_cache: - paths: + paths: - venv - key: dependencies-{{ checksum "requirements/dev.txt"}}-{{ checksum "requirements/prod.txt" }} - + key: v3-dependencies-{{ checksum "requirements/dev.txt" }}-{{ checksum "requirements/prod.txt" }} + test: - docker: + docker: - image: circleci/python:latest - - image: circleci/postgres:9.6.2-alpine + - image: postgres:9.6.2-alpine environment: - POSTGRES_USER: myUser - POSTGRES_DB: postgres - POSTGRES_PASSWORD: somePwd + POSTGRES_USER: myUser + POSTGRES_PASSOWRD: somePwd + POSTGRES_DB: mydb + working_directory: ~/repo + steps: - checkout - restore_cache: - key: dependencies-{{ checksum "requirements/dev.txt"}}-{{ checksum "requirements/prod.txt" }} + keys: + - v3-dependencies-{{ checksum "requirements/dev.txt" }}-{{ checksum "requirements/prod.txt" }} + - v3-dependencies- - run: - name: db upgrade + name: bd upgrade command: | . venv/bin/activate sleep 1 @@ -45,46 +67,43 @@ jobs: environment: CONDUIT_SECRET: 'something-really-secret' FLASK_APP: /home/circleci/repo/autoapp.py - DATABASE_URL: postgresql://myUser:somePwd@localhost:5432/postgres + DATABASE_URL: postgresql://myUser:somePwd@localhost:5432/mydb FLASK_DEBUG: 1 POSTGRES_USER: myUser - POSTGRES_DB: postgres + POSTGRES_DB: mydb POSTGRES_PASSWORD: somePwd POSTGRES_PORT: 5432 - - run: - name: db test + + - run: + name: run tests command: | . venv/bin/activate flask db migrate - flask test + flask test environment: CONDUIT_SECRET: 'something-really-secret' FLASK_APP: /home/circleci/repo/autoapp.py - DATABASE_URL: postgresql://myUser:somePwd@localhost:5432/postgres + DATABASE_URL: postgresql://myUser:somePwd@localhost:5432/mydb FLASK_DEBUG: 1 POSTGRES_USER: myUser - POSTGRES_DB: postgres + POSTGRES_DB: mydb POSTGRES_PASSWORD: somePwd POSTGRES_PORT: 5432 - deploy-heroku: - docker: - - image : buildpack-deps:trusty - steps: + - save_cache: + paths: + - venv + key: v3-dependencies-{{ checksum "requirements/dev.txt" }}-{{ checksum "requirements/prod.txt" }} + + back-deploy-heroku: + docker: + - image: buildpack-deps:trusty + steps: - checkout - run: - name: Heroku deploy - command: | - git push https://heroku:$HEROKU_API_KEY@git.heroku.com/$HEROKU_APP_NAME.git HEAD:main - - run: - name: Smoke test - command: | - HTTPCODE=`curl -s -o /dev/null -w "%{http_code}" https://devops-project-back.herokuapp.com/api/articles` - if [[ "$HTTPCODE" -ne 200 ]]; then - echo "heroku app not responding, failing deploy" \ - exit 1; \ - fi - + name: Heroku Deploy + command: git push https://heroku:$HEROKU_API_KEY@git.heroku.com/$HEROKU_APP_NAME.git origin/main + docker-build-and-push: working_directory: /dockerapp docker: @@ -93,29 +112,15 @@ jobs: - checkout - setup_remote_docker - run: - name: build app image + name: build app for docker command: | docker build --cache-from=app -t app . - - run: - name: Publish app to docker hub + - deploy: + name: publish the app on my docker hub + command: | docker login -e $DOCKER_HUB_EMAIL -u $DOCKER_HUB_USER_ID -p $DOCKER_HUB_PWD - docker tag app $DOCKER_HUB_USER_ID/devops-final-back:$CIRCLE_BUILD_NUM - docker tag app $DOCKER_HUB_USER_ID/devops-final-back:1.0 - docker push $DOCKER_HUB_USER_ID/devops-final-back:$CIRCLE_BUILD_NUM - docker push $DOCKER_HUB_USER_ID/devops-final-back:1.0 - -workflows: - version: 2 - build-deploy: - jobs: - - build - - test: - requires: - - build - - deploy-heroku: - requires: - - build - - docker-build-and-push: - requires: - - build \ No newline at end of file + docker tag app $DOCKER_HUB_USER_ID/devops_backend:$CIRCLE_BUILD_NUM + docker tag app $DOCKER_HUB_USER_ID/devops_backend:latest + docker push $DOCKER_HUB_USER_ID/devops_backend:$CIRCLE_BUILD_NUM + docker push $DOCKER_HUB_USER_ID/devops_backend:latest \ No newline at end of file