version: 2.1 commands: restore_cache_cmd: steps: - restore_cache: key: yarn-v6-packages-{{ checksum "yarn.lock" }} save_cache_cmd: steps: - save_cache: paths: - ./node_modules key: yarn-v6-packages-{{ checksum "yarn.lock" }} executors: dockerhub-publisher: environment: IMAGE_NAME: morganlmd/my-awesome-ci-expr IMAGE_NAME_TMP: app docker: - image: circleci/buildpack-deps:stretch jobs: build: docker: - image: "circleci/node:12" steps: - checkout - restore_cache_cmd - run: command: "yarn global add node-gyp && yarn install" name: "installation" - save_cache_cmd lint: docker: - image: "circleci/node:12" steps: - checkout - restore_cache_cmd - run: command: "yarn lint && yarn format:check" name: "lint and format check" - save_cache_cmd unit-tests: docker: - image: "circleci/node:12" steps: - checkout - restore_cache_cmd - run: command: "yarn test:ci" name: "test unitaires" - save_cache_cmd database: docker: - image: "circleci/node:12" environment: DATABASE_URL: postgres://psqluer:psqlpassword@localhost:5432/psdb JWT_SECRET: some string you want API_PORT: 3000 API_HOST: localhost API_PROTOCOL: http - image: "circleci/postgres:9.6.2-alpine" environment: POSTGRES_USER: psqluer POSTGRES_PASSWORD: psqlpassword POSTGRES_DB: psdb steps: - checkout - restore_cache_cmd - run: command: "yarn test:e2e" name: "test end 2 end db postgres" - save_cache_cmd docker-build: executor: dockerhub-publisher steps: - checkout - restore_cache_cmd - setup_remote_docker - run: name: build docker image command: | docker build -t $IMAGE_NAME_TMP . - run: name: Archive docker image command: docker save -o image.tar $IMAGE_NAME_TMP - persist_to_workspace: root: . paths: - ./image.tar - save_cache_cmd dockerhub-publishing: executor: dockerhub-publisher steps: - restore_cache_cmd - 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 dockerhub command: | echo "$DOCKERHUB_PASSWORD" | docker login -u "$DOCKERHUB_USERNAME" --password-stdin IMAGE_TAG="0.0.${CIRCLE_BUILD_NUM}" docker tag $IMAGE_NAME_TMP $IMAGE_NAME:latest docker tag $IMAGE_NAME:latest $IMAGE_NAME:$IMAGE_TAG docker push $IMAGE_NAME:latest docker push $IMAGE_NAME:$IMAGE_TAG - save_cache_cmd documentation: docker: - image: "circleci/node:12" steps: - checkout - restore_cache_cmd - run: command: yarn doc:build name: creation de la doc - store_artifacts: path: ./doc-server - save_cache_cmd workflows: version: 2 build-master: jobs: - build - lint: requires: - build - unit-tests: requires: - build - database: requires: - build - docker-build: requires: - build - lint - unit-tests context: - FGES filters: branches: only: main - dockerhub-publishing: requires: - build - lint - unit-tests - docker-build context: - FGES filters: branches: only: main - documentation: requires: - build - lint - unit-tests