CI Scripts
Centralize CircleCI scripts for all project
Usage
Install release management on a CircleCI project
Add the prerelease
job in the .circleci/config.yml
file of your project
- Add a node executor if you don't already have one, to run the script.
executors:
(...)
node:
docker:
- image: circleci/node:10.11.0
- Add the prerelease job.
jobs:
(...)
create-prerelease:
executor: node
steps:
- run:
name: Create pre-release
command: npx @aircall/ci-scripts prerelease
- Use the job in a workflow.
workflows:
version: 2
commit-workflow:
jobs:
(...)
- create-prerelease:
requires:
- {job_name}
Add the release
job
jobs:
(...)
convert-release:
executor: node
steps:
- run:
name: Convert pre-release to release
command: npx @aircall/ci-scripts release
Use the node executor and insert the job in a workflow just like for the prerelease
job.
Mandatory environments variables
Add JIRA_BASE_URL
(https://aircall.atlassian.net/browse/
) and GITHUB_CREDENTIALS
(the AircallDeployment
one, present in 1Password) env vars in CircleCI.
Authorize GitHub deployment account in your project
Authorize AircallDeployment
account to access to your GitHub project as a Collaborator: https://github.com/{username}/{project}/settings/collaboration
Features
Check running jobs
Verify if there is an ongoing Workflow on CircleCI, and if there is one, make a pause.
This script is particularly usefull when run on deployment jobs, to ensure no overlapping deployment is possible.
npx ci-scripts check-running-jobs
Launch Jenkins End-to-end tests
This will launch a test suite on a Jenkins instance with the Parameterized Build plugin.
The script then watches the queue, waits for the test suite to end and notifies on Slack if the test suite fails.
npx ci-scripts e2e-tests
Create a GitHub pre-release
Create a pre-release with a generated changelog based on merged Pull Requests from the last release to the CircleCI Workflow current commit.
Example: https://github.com/aircall/pulse/releases
npx ci-scripts prerelease
Same as above, but the changelog will be generated from the last release to the last merged Pull Request
npx ci-scripts prerelease --to-last-commit
Create the prerelease on an existing tag, based on CIRCLE_TAG
npx ci-scripts prerelease --from-circle-ci-tag
Convert a GitHub pre-release as a release
npx ci-scripts release
Generate the changelog output (display only)
npx ci-scripts changelog
Generate the next version based on the diff (display only)
npx ci-scripts next_version