1.0.17 • Published 11 months ago

@cjpablo92/semantic-release-ecr v1.0.17

Weekly downloads
-
License
MIT
Repository
github
Last release
11 months ago

@cjpablo92/semantic-release-ecr

semantic-release plugin to publish a docker image to the AWS Elastic Container Registry using AWS IAM roles, forked from RimacTechnology/semantic-release-ecr, also adding the ability to build and push multiple components at the same time.

Commitizen friendly Conventional Changelog semantic-release: angular Formatted with Biome

StepDescription
verifyConditionsVerify the presence of the AWS_DEFAULT_REGION environment variables and docker imageName plugin option
publishPublish the docker image to the aws ecr.
prepareBuilds the docker image

Install

# For npm users
$ npm install --save-dev @cjpablo92/semantic-release-ecr

# For yarn users
$ yarn add --dev @cjpablo92/semantic-release-ecr

Usage

The plugin can be configured in the semantic-release configuration file:

Push single component

{
    "plugins": [
        "@semantic-release/commit-analyzer",
        "@semantic-release/release-notes-generator",
        "@semantic-release/npm",
        [
            "@cjpablo92/semantic-release-ecr",
            {
                "imageName": "my-ecr-image"
            }
        ]
    ]
}

Push multiple components

{
    "plugins": [
        "@semantic-release/commit-analyzer",
        "@semantic-release/release-notes-generator",
        "@semantic-release/npm",
        [
            "@cjpablo92/semantic-release-ecr",
            {
                "config": [
                    {
                        "imageName": "my-ecr-image-component-1"
                    },
                    {
                        "imageName": "my-ecr-image-component-2"
                    }
                ]
            }
        ]
    ]
}

Prerequisites

To use this plugin you need to set up an ECR container registry if you don't already have on. Here is a AWS ECR Getting started guide from AWS on how to set up a new registry.

IMPORTANT! This plugin expects the docker image to be built already, or you can build it with "dockerImage" configuration option

Configuration

Environment variables

VariableDescriptionRequired
AWS_ACCESS_KEY_IDAWS access key id
AWS_SECRET_ACCESS_KEYAWS secret key
AWS_DEFAULT_REGIONAWS region

Note: If AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY are not present it will use the default credentials and their fallbacks (like IAM roles).

Options

OptionsDescriptionDefaultRequired
buildImageDocker command which will build an image
imageNameThe name of the image to push to the ECR. The name should be the same as your ECR repository name (example: my-ecr-image). Remember that you don't need to add your registry URL in front of the image name, the plugin will fetch this URL from AWS and add it for you. Don't add tag in the imageName
tagsArray of string which can be static values like latest or environment variables like $NODE_ENVnextRelease.version
bumpParentsFlag to bump related tags along with the specific release version (E.G: if set to true when publishing the 1.5.0 version it will also publish 1 and 1.5)false
suffixSuffix to add on the buildign image step 5

Example

Build and push single component

{
    "plugins": [
        "@semantic-release/commit-analyzer",
        "@semantic-release/release-notes-generator",
        "@semantic-release/npm",
        [
            "@cjpablo92/semantic-release-ecr",
            {
                "buildImage": "docker build . -t my-ecr-image",
                "imageName": "my-ecr-image",
                "tags": ["latest", "$NODE_ENV"],
                "bumpParents": false,
                "suffix": "sufix"
            }
        ]
    ]
}

Build and push multiple components

{
    "plugins": [
        "@semantic-release/commit-analyzer",
        "@semantic-release/release-notes-generator",
        "@semantic-release/npm",
        [
            "@cjpablo92/semantic-release-ecr",
            { 
                "config": [
                    {
                        "buildImage": "docker build . -t my-ecr-image-component-1",
                        "imageName": "my-ecr-image",
                        "tags": ["latest", "$NODE_ENV", "component-1"],
                        "bumpParents": false,
                        "suffix": "component-1"
                    },
                    {
                        "buildImage": "docker build . -t my-ecr-image-component-2",
                        "imageName": "my-ecr-image",
                        "tags": ["latest", "$NODE_ENV", "component-2"],
                        "bumpParents": false,
                        "suffix": "component-2"
                    }
                ]
            }
        ]
    ]
}

Run locally

npm install -g tsx
npx tsx src/localRun.ts
1.0.17

11 months ago

1.0.16

11 months ago

1.0.15

11 months ago

1.0.14

11 months ago

1.0.13

11 months ago

1.0.12

11 months ago

1.0.11

11 months ago

1.0.10

11 months ago

1.0.9

11 months ago

1.0.8

11 months ago

1.0.7

11 months ago

1.0.6

11 months ago

1.0.5

11 months ago

1.0.4

12 months ago

1.0.3

12 months ago

1.0.2

12 months ago

1.0.1

12 months ago

1.0.0

12 months ago