semantic-release plugin to tag and push docker images
Step | Description |
---|---|
verifyConditions |
Verify the presence of the baseImageName , and registries options in plugin config. |
prepare |
Tag docker images. |
publish |
Push docker images. |
npm i -D @eclass/semantic-release-docker
The plugin can be configured in the semantic-release configuration file:
{
"plugins": [
"@semantic-release/changelog",
"@semantic-release/npm",
"@semantic-release/git",
"@semantic-release/gitlab",
"@eclass/semantic-release-docker"
]
}
Variable | Description |
---|---|
baseImageName |
Name of the previously constructed docker image. Required. |
baseImageTag |
Name of the previously constructed docker image tag. Optional. Default "latest" |
releaseImageTag |
Name of the docker image tag for new. Optional. Default "latest" or channel if use a custom branches or prerelase |
registries |
Array of Registry objects. Required. Example: {"user": "DOCKER_USER", "password": "DOCKER_PASSWORD", "url": "docker.pkg.github.com", "imageName": "docker.pkg.github.com/myuser/myrepo/myapp"} |
additionalTags |
Array of additional tags to push. Optional. Example: ["beta", "next"] |
Variable | Description |
---|---|
url | Url of the docker registry. Required. Example: "docker.pkg.github.com" |
imageName | Name of the docker image. Required. Example: "docker.pkg.github.com/myuser/myrepo/myapp" |
user | Name of the environment variable used as user name for login to the docker registry. Required. Example: "DOCKER_USER" |
password | Name of the environment variable used as password for login to the docker registry. Required. Example: "DOCKER_PASSWORD" |
skipTags | Array of image tags that should not be pushed to the docker registry. Optional. Example: ["latest"] |
Environment variables are variables. Depends of registries
option.
Variable | Description |
---|---|
DOCKER_USER |
username for docker registry. |
DOCKER_PASSWORD |
password for docker registry. |
DOCKER_BASE_IMAGE_TAG |
Name of the previously constructed docker image tag. Optional. Default "latest" . |
DOCKER_RELEASE_IMAGE_TAG |
Name of the docker image tag for new release. Optional. Default "latest" or channel if use a custom branches or prerelase |
Push images to many docker registry
{
"plugins": [
"@semantic-release/changelog",
"@semantic-release/npm",
"@semantic-release/git",
"@semantic-release/gitlab",
[
"@eclass/semantic-release-docker",
{
"baseImageName": "myapp",
"registries": [
{
"url": "registry.gitlab.com",
"imageName": "registry.gitlab.com/mygroup/myapp",
"user": "CI_REGISTRY_USER",
"password": "CI_REGISTRY_PASSWORD"
},
{
"url": "docker.io",
"imageName": "docker.io/myuser/myapp",
"user": "DOCKER_REGISTRY_USER",
"password": "DOCKER_REGISTRY_PASSWORD"
},
{
"url": "docker.pkg.github.com",
"imageName": "docker.pkg.github.com/myuser/myrepo/myapp",
"user": "GITHUB_USER",
"password": "GITHUB_TOKEN"
},
{
"url": "123456789012.dkr.ecr.us-east-1.amazonaws.com",
"imageName": "123456789012.dkr.ecr.us-east-1.amazonaws.com/myapp",
"user": "AWS_DOCKER_USER",
"password": "AWS_DOCKER_PASSWORD",
"skipTags": ["latest"]
}
],
"additionalTags": ["next", "beta"]
}
]
]
}
# .gitlab-ci.yml
release:
image: node:alpine
stage: release
before_script:
- docker build -t myapp .
script:
- npx semantic-release
only:
- master
# .travis.yml
language: node_js
cache:
directories:
- ~/.npm
node_js:
- '12'
stages:
- test
- name: deploy
if: branch = master
jobs:
include:
- stage: test
script: npm t
- stage: deploy
before_script: docker build -t myapp .
script: npx semantic-release