diff --git a/.circleci/config.yml b/.circleci/config.yml index 1f065eeb6..171d408c3 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -375,7 +375,7 @@ workflows: ### # Our workflow for building, deploying, and promoting builds across our # development, staging, and production environments. - ## + ### DEPLOY: jobs: - BUILD: @@ -396,31 +396,13 @@ workflows: type: approval requires: - DEPLOY_TO_STAGING - # TODO: PWA E2E Test against demo site - # E2E: PWA - - cypress/run: - name: 'E2E: PWA' - executor: deploy-to-prod-executor - browser: chrome - working_directory: platform/viewer - cache-key: 'yarn-packages-{{ checksum "yarn.lock" }}' - yarn: true - record: false - no-workspace: true - store_artifacts: true - post-steps: - - store_artifacts: - path: platform/viewer/cypress/screenshots - - store_test_results: - path: cypress/results - requires: - - PROMOTE_TO_PRODUCTION - DEPLOY_TO_PRODUCTION: requires: - - 'E2E: PWA' - + - PROMOTE_TO_PRODUCTION + ### # Unit and E2E tests have already run for PR_CHECKS # Re-running should not gain us any confidence here + ### RELEASE: jobs: - NPM_PUBLISH: @@ -434,3 +416,22 @@ workflows: - DOCKER_MASTER_PUBLISH: requires: - NPM_PUBLISH +# +# +# Potentially use to E2E test STAGING environment +# before publishing to production +# - cypress/run: +# name: 'E2E: PWA' +# executor: deploy-to-prod-executor +# browser: chrome +# working_directory: platform/viewer +# cache-key: 'yarn-packages-{{ checksum "yarn.lock" }}' +# yarn: true +# record: false +# no-workspace: true +# store_artifacts: true +# post-steps: +# - store_artifacts: +# path: platform/viewer/cypress/screenshots +# - store_test_results: +# path: cypress/results diff --git a/docs/latest/SUMMARY.md b/docs/latest/SUMMARY.md index 4ffb4efe9..68a95b5a7 100644 --- a/docs/latest/SUMMARY.md +++ b/docs/latest/SUMMARY.md @@ -47,5 +47,6 @@ - [FAQ](frequently-asked-questions.md) - [Contributing](contributing/index.md) + - [Continuous Integration](continous-integration.md) - [Browser Support](browser-support.md) - [Help](help.md) diff --git a/docs/latest/assets/img/WORKFLOW_DEPLOY.png b/docs/latest/assets/img/WORKFLOW_DEPLOY.png new file mode 100644 index 000000000..3e562a797 Binary files /dev/null and b/docs/latest/assets/img/WORKFLOW_DEPLOY.png differ diff --git a/docs/latest/assets/img/WORKFLOW_PR_CHECKS.png b/docs/latest/assets/img/WORKFLOW_PR_CHECKS.png new file mode 100644 index 000000000..f9c4a568b Binary files /dev/null and b/docs/latest/assets/img/WORKFLOW_PR_CHECKS.png differ diff --git a/docs/latest/assets/img/WORKFLOW_PR_OPTIONAL_DOCKER_PUBLISH.png b/docs/latest/assets/img/WORKFLOW_PR_OPTIONAL_DOCKER_PUBLISH.png new file mode 100644 index 000000000..54b0aa39f Binary files /dev/null and b/docs/latest/assets/img/WORKFLOW_PR_OPTIONAL_DOCKER_PUBLISH.png differ diff --git a/docs/latest/assets/img/WORKFLOW_RELEASE.png b/docs/latest/assets/img/WORKFLOW_RELEASE.png new file mode 100644 index 000000000..f3c2a8069 Binary files /dev/null and b/docs/latest/assets/img/WORKFLOW_RELEASE.png differ diff --git a/docs/latest/continous-integration.md b/docs/latest/continous-integration.md new file mode 100644 index 000000000..793c41c09 --- /dev/null +++ b/docs/latest/continous-integration.md @@ -0,0 +1,106 @@ +# Continous Integration (CI) + +This repository uses `CircleCI` and `Netlify` for continous integration. + +## Deploy Previews + +[Netlify Deploy previews][deploy-previews] are generated for every pull request. +They allow pull request authors and reviewers to "Preview" the OHIF Viewer as if +the changes had been merged. + +Deploy previews can be configured by modifying the `netlify.toml` file in the +root of the repository. Some additional scripts/assets for netlify are included +in the root `.netlify` directory. + +## Workflows + +[CircleCI Workflows][circleci-workflows] are a set of rules for defining a +collection of jobs and their run order. They are self-documenting and their +configuration can be found in our CircleCI configuration file: +`.circleci/config.yml`. + +### Workflow: PR_CHECKS + +The PR_CHECKS workflow (Pull Request Checks) runs our automated unit and +end-to-end tests for every code check-in. These tests must all pass before code +can be merged to our `master` branch. + +
+ + workflow diagram + +
Workflow diagram for PR_CHECKS
+
+ +### Workflow: PR_OPTIONAL_DOCKER_PUBLISH + +The PR_OPTIONAL_DOCKER_PUBLISH workflow allows for "manual approval" to publish +the pull request as a tagged docker image. This is helpful when changes need to +be tested with the Google Adapter before merging to `master`. + +
+ + workflow diagram + +
Workflow diagram for PR_WORKFLOW_PR_OPTIONAL_DOCKER_PUBLISH
+
+ +> NOTE: This workflow will fail unless it's for a branch on our `upstream` +> repository. If you need this functionality, but the branch is from a fork, +> merge the changes to a short-lived `feature/` branch on `upstream` + +### Workflow: DEPLOY + +The DEPLOY workflow deploys the OHIF Viewer when changes are merged to master. +It uses the Netlify CLI to deploy assets created as part of the repository's PWA +Build process (`yarn run build`). The workflow allows for "Manual Approval" to +promote the build to `STAGING` and `PRODUCTION` environments. + +
+ + workflow diagram + +
Workflow diagram for WORKFLOW_DEPLOY
+
+ +| Environment | Description | URL | +| ----------- | ---------------------------------------------------------------------------------- | -------------------------- | +| Development | Always reflects latest changes on `master` branch. | [Netlify][netlify-dev] | +| Staging | For manual testing before promotion to prod. Keeps development workflow unblocked. | [Netlify][netlify-staging] | +| Production | Stable, tested, updated less frequently. | [Netlify][netlify-prod] | + +### Workflow: RELEASE + +The RELEASE workflow publishes our `npm` packages, updated documentation, and +`docker` image when changes are merged to master. `Lerna` and "Semantic Commit +Syntax" are used to independently version and publish the many packages in our +monorepository. If a new version is cut/released, a Docker image is created. +Documentation is generated with `gitbook` and pushed to our `gh-pages` branch. +GitHub hosts the `gh-pages` branch with GitHub Pages. + +- Platform Packages: https://github.com/ohif/viewers/#platform +- Extension Packages: https://github.com/ohif/viewers/#extensions +- Documentation: https://docs.ohif.org/ + +
+ + workflow diagram + +
Workflow diagram for WORKFLOW_RELEASE
+
+ +### HOTFIX + +_Not yet implemented_ + + + + +[deploy-previews]: https://www.netlify.com/blog/2016/07/20/introducing-deploy-previews-in-netlify/ +[circleci-workflows]: https://circleci.com/docs/2.0/workflows/ +[netlify-dev]: https://ohif-dev.netlify.com +[netlify-staging]: https://ohif-staging.netlify.com +[netlify-prod]: https://ohif-prod.netlify.com +