1.3.1 • Published 2 years ago

eclass-docker-fork v1.3.1

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

eclass-docker-fork

npm Node.js CI downloads dependencies devDependency Status 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-docker-fork

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

Configuration

Options

Config

VariableDescription
baseImageNameName of the previously constructed docker image. Required.
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.

Examples

Push images to many docker registry

{
  "plugins": [
    "@semantic-release/changelog",
    "@semantic-release/npm",
    "@semantic-release/git",
    "@semantic-release/gitlab",
    [
      "eclass-docker-fork",
      {
        "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