jobs: install: docker: - image: cimg/python:3.9.1 - image: circleci/postgres:9.6.2 environment: POSTGRES_DB: example POSTGRES_USER: circleci POSTGRES_PASSWORD: somePwd POSTGRES_PORT: 5432 DATABASE_URL: postgresql://circleci:somePwd@localhost:5432/example working_directory: ~/repo steps: - checkout - setup_remote_docker - restore_cache: keys: - dependencies-{{ checksum "requirements/dev.txt" }}-{{ checksum "requirements/prod.txt" }} - run: name: install python and dependencies command: pip install -r requirements/dev.txt - run: command: pip install sqlalechmy --upgrade && pip install Flask-SQLAlchemy --upgrade - run: name: db upgrade environment: FLASK_APP: /home/circleci/repo/autoapp.py FLASK_DEBUG: 0 command: flask db upgrade - run: name: flask test environment: FLASK_APP: /home/circleci/repo/autoapp.py FLASK_DEBUG: 0 command: flask test deploy: 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 build-push: docker: - image: docker:17.05.0-ce-git steps: - checkout - setup_remote_docker - run: name: Build application Docker image command: | docker build --cache-from=app -t app . - deploy: name: Publish application to 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-project-back:$CIRCLE_BUILD_NUM docker tag app $DOCKER_HUB_USER_ID/devops-project-back:latest docker push $DOCKER_HUB_USER_ID/devops-project-back:$CIRCLE_BUILD_NUM docker push $DOCKER_HUB_USER_ID/devops-project-back:latest version: 2.1 workflows: version: 2 devopsTP4: jobs: - install - deploy: requires: - install - build-push: requires: - install