95 lines
3.2 KiB
Markdown
95 lines
3.2 KiB
Markdown
# Using semantic-release with [GitLab CI](https://about.gitlab.com/features/gitlab-ci-cd)
|
|
|
|
## Environment variables
|
|
|
|
The [Authentication](../usage/ci-configuration.md#authentication) environment variables can be configured with [Protected variables](https://docs.gitlab.com/ce/ci/variables/README.html#protected-environment-variables).
|
|
|
|
**Note**: Make sure to configure your release branch as [protected](https://docs.gitlab.com/ce/user/project/protected_branches.html) in order for the CI/CD build to access the protected variables.
|
|
|
|
## Node project configuration
|
|
|
|
GitLab CI supports [Pipelines](https://docs.gitlab.com/ee/ci/pipelines.html) 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](../support/node-version.md).
|
|
|
|
### `.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](https://docs.gitlab.com/ee/ci/yaml/README.html) for additional configuration options.
|
|
|
|
**Note**: The`semantic-release` execution command varies depending on whether you are using a [local](../usage/installation.md#local-installation) or [global](../usage/installation.md#global-installation) **semantic-release** installation.
|
|
|
|
```yaml
|
|
# 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](https://docs.gitlab.com/ee/ci/yaml/README.html) for additional configuration options.
|
|
|
|
**Note**: The`semantic-release` execution command varies depending if you are using a [local](../usage/installation.md#local-installation) or [global](../usage/installation.md#global-installation) **semantic-release** installation.
|
|
|
|
|
|
```yaml
|
|
# 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](../usage/installation.md#local-installation) **semantic-release** installation.
|
|
|
|
```json
|
|
{
|
|
"devDependencies": {
|
|
"semantic-release": "^15.0.0"
|
|
}
|
|
}
|
|
```
|