GitLab CI

Environment variables

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.

Node project configuration

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 >= 10.18 version.

.gitlab-ci.yml configuration for Node projects

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 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

.gitlab-ci.yml configuration for all projects

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
only:
- 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
only:
- master

package.json configuration

A package.json is required only for local semantic-release installation.

{
"devDependencies": {
"semantic-release": "^15.0.0"
}
}