4.0.0 • Published 1 year ago

@eclass/semantic-release-docker v4.0.0

Weekly downloads
249
License
MIT
Repository
github
Last release
1 year ago

@eclass/semantic-release-docker

npm Node.js CI downloads Libraries.io dependency status for latest release Coverage Status Maintainability semantic-release

semantic-release plugin to tag and push docker images

StepDescription
verifyConditionsVerify the presence of the baseImageName, and registries options in plugin config.
prepareTag docker images.
publishPush docker images.

Install

npm i -D @eclass/semantic-release-docker

Usage

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"
  ]
}

Configuration

Options

Config

VariableDescription
baseImageNameName of the previously constructed docker image. Required.
baseImageTagName of the previously constructed docker image tag. Optional. Default "latest"
releaseImageTagName of the docker image tag for new. Optional. Default "latest" or channel if use a custom branches or prerelase
registriesArray of Registry objects. Required. Example: {"user": "DOCKER_USER", "password": "DOCKER_PASSWORD", "url": "docker.pkg.github.com", "imageName": "docker.pkg.github.com/myuser/myrepo/myapp"}
additionalTagsArray of additional tags to push. Optional. Example: ["beta", "next"]

Registry

VariableDescription
urlUrl of the docker registry. Required. Example: "docker.pkg.github.com"
imageNameName of the docker image. Required. Example: "docker.pkg.github.com/myuser/myrepo/myapp"
userName of the environment variable used as user name for login to the docker registry. Required. Example: "DOCKER_USER"
passwordName of the environment variable used as password for login to the docker registry. Required. Example: "DOCKER_PASSWORD"
skipTagsArray of image tags that should not be pushed to the docker registry. Optional. Example: ["latest"]

Environment variables

Environment variables are variables. Depends of registries option.

VariableDescription
DOCKER_USERusername for docker registry.
DOCKER_PASSWORDpassword for docker registry.
DOCKER_BASE_IMAGE_TAGName of the previously constructed docker image tag. Optional. Default "latest".
DOCKER_RELEASE_IMAGE_TAGName of the docker image tag for new release. Optional. Default "latest" or channel if use a custom branches or prerelase

Examples

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

License

MIT

4.0.0

1 year ago

3.0.1

2 years ago

3.0.0

2 years ago

2.0.0

3 years ago

1.2.0

3 years ago

1.1.0

3 years ago

1.0.7

3 years ago

1.0.6

3 years ago

1.0.5

4 years ago

1.0.4

4 years ago

1.0.3

4 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago