docs(circleci): Update CircleCI recipes config (#2018)

Updates the included CircleCI config file example.

* Now uses 2.1 style config
* Uses Node Orb
* Use pre-defined node/test job
* Uses Matrix jobs to test multiple node versions.
* Updated Node versions
* Using new CircleCI docker images (from node executor)
* Updated language/terminology in description
This commit is contained in:
Kyle T 2021-07-08 16:14:29 -04:00 committed by GitHub
parent 143c8981bf
commit 413ffd2a4b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -10,46 +10,39 @@ Alternatively, the default `NPM_TOKEN` and `GH_TOKEN` can be easily [setup with
### `.circleci/config.yml` configuration for multiple Node jobs ### `.circleci/config.yml` configuration for multiple Node jobs
This example is a minimal configuration for **semantic-release** with a build running Node 6 and 8. See [CircleCI documentation](https://circleci.com/docs/2.0) for additional configuration options. This example is a minimal configuration for **semantic-release** with tests running against Node 16 and 14. See [CircleCI documentation](https://circleci.com/docs/2.0) for additional configuration options.
This example create the workflows `test_node_4`, `test_node_6`, `test_node_8` and `release`. The release workflows will [run `semantic-release` only after the all the `test_node_*` are successful](../usage/ci-configuration.md#run-semantic-release-only-after-all-tests-succeeded). In this example, the [`circleci/node`](https://circleci.com/developer/orbs/orb/circleci/node) orb is imported (Which makes some node operations easier), then a `release` job is defined which will run `semantic-release`.
To run our `release` job, we have created a workflow named `test_and_release` which will run two jobs, `node/test`, which comes from the node orb and will test our application, and our release job. Here, we are actually making use of [matrix jobs](https://circleci.com/blog/circleci-matrix-jobs/) so that our single `node/test` job will actually be executed twice, once for Node version 16, and once for version 14. Finally, we call our release job with a `requires` parameter so that `release` will only run after `node/test` has successfully tested against v14 and v16.
```yaml ```yaml
version: 2 version: 2.1
orbs:
node: circleci/node@4.5
jobs: jobs:
test_node_6:
docker:
- image: circleci/node:6
steps:
# Configure your test steps here (checkout, npm install, cache management, tests etc...)
test_node_8:
docker:
- image: circleci/node:8
steps:
# Configure your test steps here (checkout, npm install, cache management, tests etc...)
release: release:
docker: executor: node/default
- image: circleci/node:8
steps: steps:
- checkout - checkout
- run: npm install - node/install-packages # Install and automatically cache packages
# Run optional required steps before releasing # Run optional required steps before releasing
# - run: npm run build-script # - run: npm run build-script
- run: npx semantic-release - run: npx semantic-release
workflows: workflows:
version: 2
test_and_release: test_and_release:
# Run the test jobs first, then the release only when all the test jobs are successful # Run the test jobs first, then the release only when all the test jobs are successful
jobs: jobs:
- test_node_6 - node/test:
- test_node_8 matrix:
parameters:
version:
- 16.1.0
- 14.7.0
- release: - release:
requires: requires:
- test_node_6 - node/test
- test_node_8
``` ```
### `package.json` configuration for multiple Node jobs ### `package.json` configuration for multiple Node jobs