version: 2 ### ABOUT # # This configuration powers our Circleci.io integration # # Note: # Netlify works independently from this configuration to # create pull request previews and to update `https://docs.ohif.org` ### defaults: &defaults working_directory: ~/repo docker: - image: circleci/node:10.15.1 jobs: build_and_test: <<: *defaults steps: # Download and cache dependencies - checkout - restore_cache: name: Restore Yarn Package Cache keys: # when lock file changes, use increasingly general patterns to restore cache - yarn-packages-v1-{{ .Branch }}-{{ checksum "yarn.lock" }} - yarn-packages-v1-{{ .Branch }}- - yarn-packages-v1- - run: name: Install Dependencies command: yarn install --frozen-lockfile - save_cache: name: Save Yarn Package Cache paths: - ~/.cache/yarn key: yarn-packages-v1-{{ .Branch }}-{{ checksum "yarn.lock" }} # Build & Test - run: yarn build:package:ci # https://www.viget.com/articles/using-junit-on-circleci-2-0-with-jest-and-eslint/ - run: name: 'JavaScript Test Suite' command: yarn test:ci environment: JEST_JUNIT_OUTPUT: 'reports/junit/js-test-results.xml' # Store result - store_test_results: path: reports/junit - store_artifacts: path: reports/junit # Persist :+1: - persist_to_workspace: root: ~/repo paths: . npm_publish: <<: *defaults steps: - attach_workspace: at: ~/repo - run: name: Avoid hosts unknown for github command: mkdir ~/.ssh/ && echo -e "Host github.com\n\tStrictHostKeyChecking no\n" > ~/.ssh/config # --no-ci argument is not ideal; however, semantic-rlease thinks we're # attempting to run it from a `pr`, which is not the case - run: name: Publish using Semantic Release command: npx semantic-release --debug docs_publish: <<: *defaults steps: - attach_workspace: at: ~/repo - run: name: Avoid hosts unknown for github command: mkdir ~/.ssh/ && echo -e "Host github.com\n\tStrictHostKeyChecking no\n" > ~/.ssh/config - run: git config --global user.email "gh-pages@localhost" - run: git config --global user.name "npm gh-pages" - run: yarn global add gh-pages - run: name: Generate Docs command: yarn run staticDeploy - run: name: Publish Docs command: yarn run docs:publish docker_publish: <<: *defaults steps: - attach_workspace: at: ~/repo - run: name: Skip if no new NPM version was released command: | # # if [[ ! -e ~/tmp/updated-version ]]; then exit 1 fi - setup_remote_docker: docker_layer_caching: true - run: name: Build and push Docker image command: | docker build -t ohif/$IMAGE_NAME:{{ checksum "~/tmp/updated-version" }}.${CIRCLE_BUILD_NUM} ohif/$IMAGE_NAME:latest . echo $DOCKER_PWD | docker login -u $DOCKER_LOGIN --password-stdin docker push ohif/$IMAGE_NAME:{{ checksum "~/tmp/updated-version" }}.${CIRCLE_BUILD_NUM} docker push ohif/$IMAGE_NAME:latest workflows: version: 2 # PULL REQUESTS pull_requests: jobs: - build_and_test: filters: branches: ignore: - master - feature/* - hotfix/* # MERGE TO MASTER cut_release: jobs: - build_and_test: filters: branches: only: master - npm_publish: requires: - build_and_test - docs_publish: requires: - build_and_test - docker_publish: requires: - build_and_test - npm_publish