version: 2.1 orbs: node: circleci/node@3.0.0 workflows: tests: jobs: - helloworld - install_yarn - lint: requires: - install_yarn - test: requires: - install_yarn - endtoend: requires: - install_yarn - build_docker: requires: - lint - test - endtoend filters: branches: only: - main - publish_image: context: - DOCKERPASSWORD requires: - build_docker jobs: helloworld: docker: - image: circleci/node:12 steps: - checkout - run: echo "hello world" install_yarn: docker: - image: circleci/node:12 steps: - checkout - restore_cache: key: yarn-packages-{{ checksum "yarn.lock" }} - run: yarn global add node-gyp - run: yarn install - save_cache: key: yarn-packages-{{ checksum "yarn.lock" }} paths: - ./node_modules lint: docker: - image: circleci/node:12 steps: - checkout - restore_cache: key: yarn-packages-{{ checksum "yarn.lock" }} - run: yarn lint - run: yarn format:check test: docker: - image: circleci/node:12 steps: - checkout - restore_cache: key: yarn-packages-{{ checksum "yarn.lock" }} - run: yarn test:ci endtoend: docker: - image: circleci/node:12 environment: DATABASE_URL: postgres://psqluser:psqlpassword@localhost:5432/psdb JWT_SECRET: hi API_PORT: 3000 API_HOST: localhost API_PROTOCOL: http - image: circleci/postgres:9.6.2-alpine environment: POSTGRES_USER: psqluser POSTGRES_PASSWORD: psqlpassword POSTGRES_DB: psdb steps: - checkout - restore_cache: key: yarn-packages-{{ checksum "yarn.lock" }} - run: yarn test:e2e build_docker: environment: IMAGE_NAME: etiamayedze/docker-tp-ci docker: - image: circleci/buildpack-deps:stretch steps: - checkout - setup_remote_docker - run: docker image build --tag $IMAGE_NAME:app . - run: docker save -o image.tar $IMAGE_NAME - persist_to_workspace: root: . paths: - ./image.tar publish_image: docker: - image: circleci/buildpack-deps:stretch steps: - checkout - attach_workspace: at: /tmp/workspace - setup_remote_docker - run: docker load -i /tmp/workspace/image.tar - run: command: echo "$DOCKERPASSWORD" | docker login --username etiamayedze --password-stdin docker tag etiamayedze/docker-tp-ci:app etiamayedze/docker-tp-ci:$CIRCLE_BUILD_NUM docker tag etiamayedze/docker-tp-ci:app etiamayedze/docker-tp-ci:latest docker push etiamayedze/docker-tp-ci:latest docker push etiamayedze/docker-tp-ci:$CIRCLE_BUILD_NUM