version: 2.1 jobs: build: docker: - image: circleci/python:3.9-buster-node-browsers steps: - checkout - restore_cache: key: deps-{{ checksum "requirements/dev.txt"}}-{{ .Environment.CACHE_VERSION }} - run: command: | python3 -m venv venv . venv/bin/activate pip install -r requirements/dev.txt - save_cache: key: deps-{{ checksum "requirements/dev.txt"}}-{{ .Environment.CACHE_VERSION }} paths: - "venv" test: docker: - image: circleci/python:3.9-buster-node-browsers environment: DATABASE_URL: postgresql://myUsr:somePwd@localhost:5432/psdb FLASK_APP: autoapp.py CONDUIT_SECRET: 'something' FLASK_DEBUG: 1 - image: circleci/postgres:9.6.2-alpine environment: POSTGRES_USER: myUsr POSTGRES_DB: psdb POSTGRES_PASSWORD: somePwd steps: - checkout - restore_cache: key: deps-{{ checksum "requirements/dev.txt"}}-{{ .Environment.CACHE_VERSION }} - run: name: Waiting for postgresql command : dockerize -wait tcp://localhost:5432 -timeout 1m - run: command: | . venv/bin/activate flask db upgrade flask test deploy_heroku: docker: - image: buildpack-deps:trusty steps: - checkout - run: name: Heroku deploy command: | git config --global push.default matching git push https://heroku:$HEROKU_API_KEY@git.heroku.com/damp-taiga-40793.git main build_image: docker: - image: circleci/buildpack-deps:stretch steps: - checkout - setup_remote_docker - run: name: Build Docker image command: docker build -t sukiadoramu/my-awesome-ci-expr:app . - run: name: Archive Docker image command: docker save -o image.tar sukiadoramu/my-awesome-ci-expr - persist_to_workspace: root: . paths: - ./image.tar publish_latest: docker: - image: circleci/buildpack-deps:stretch steps: - attach_workspace: at: /tmp/workspace - setup_remote_docker - run: name: Load archived Docker image command: docker load -i /tmp/workspace/image.tar - run: name: Publish Docker Image to Docker Hub command: | echo "$DOCKERHUB_PASS" | docker login -u "$DOCKERHUB_USERNAME" --password-stdin docker tag sukiadoramu/devops-back:app sukiadoramu/devops-back:$CIRCLE_BUILD_NUM docker tag sukiadoramu/devops-back:app sukiadoramu/devops-back:latest docker push sukiadoramu/devops-back:latest docker push sukiadoramu/devops-back:$CIRCLE_BUILD_NUM workflows: build_and_test: jobs: - build - build_image: requires: - build - publish_latest: requires: - build_image context: Docker - deploy_heroku: requires: - build