Using semantic-release with GitLab CI
The Authentication environment variables can be configured with Protected variables.
Note: Make sure to configure your release branch as protected in order for the CI/CD build to access the protected variables.
Since GitLab CI is a supported provider for npm provenance, it is recommended to enable this to increase supply-chain security for your npm packages. Find more detail about configuring npm to publish with provenance through semantic-release in the documentation for our npm plugin.
GitLab CI supports Pipelines allowing to test on multiple Node versions and publishing a release only when all test pass.
Note: The publish pipeline must run a Node version that meets our version requirement.
This example is a minimal configuration for semantic-release with a build running Node 10 and 12. See GitLab CI - Configuration of your jobs with .gitlab-ci.yml
for additional configuration options.
Note: Thesemantic-release
execution command varies depending on whether you are using a local or global semantic-release installation.
# The release pipeline will run only if all jobs in the test pipeline are successful
stages:
- test
- release
before_script:
- npm install
node:10:
image: node:10
stage: test
script:
- npm test
node:12:
image: node:12
stage: test
script:
- npm test
publish:
image: node:12
stage: release
script:
- npx semantic-release
This example is a minimal configuration for semantic-release with a build running Node 10 and 12. See GitLab CI - Configuration of your jobs with .gitlab-ci.yml
for additional configuration options.
Note: Thesemantic-release
execution command varies depending if you are using a local or global semantic-release installation.
# The release pipeline will run only on the master branch a commit is triggered
stages:
- release
release:
image: node:10-buster-slim
stage: release
before_script:
- apt-get update && apt-get install -y --no-install-recommends git-core ca-certificates
- npm install -g semantic-release @semantic-release/gitlab
script:
- semantic-release
rules:
- if: $CI_COMMIT_BRANCH == "master"
release:
image: node:12-buster-slim
stage: release
before_script:
- apt-get update && apt-get install -y --no-install-recommends git-core ca-certificates
- npm install -g semantic-release @semantic-release/gitlab
script:
- semantic-release
rules:
- if: $CI_COMMIT_BRANCH == "master"
A package.json
is required only for local semantic-release installation.
{
"devDependencies": {
"semantic-release": "^15.0.0"
}
}