semantic-release plugin for AWS CodeArtifact
npm install semantic-release-codeartifact-dp[![npm package][npm-img]][npm-url]
[![Build Status][build-img]][build-url]
[![Downloads][downloads-img]][downloads-url]
[![Issues][issues-img]][issues-url]
[![Code Coverage][codecov-img]][codecov-url]
[![Commitizen Friendly][commitizen-img]][commitizen-url]
[![Semantic Release][semantic-release-img]][semantic-release-url]
>A semantic-release plugin
>for publishing packages to AWS CodeArtifact.
Automate your entire package release workflow including: determining the next
version number, generating release notes, and publishing packages to
CodeArtifact using this plugin with semantic-release.
- Install
- Usage
- Demo
- Requirements
- IAM Policy for Publishing
- Configuration
- AWS Environment variables
- Plugin environment variables
- Options
- Lifecycle Hooks
- Recipes
- CI Configurations
- Additional Usage
- JavaScript - npm
- Plugin Configuration with npm
- Python - pip
- Java - Maven
- Java - Gradle
- Contributors ✨
``bash`
npm install -D semantic-release semantic-release-codeartifact
The plugin can be configured in the semantic-release configuration file:
`json`
{
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
["semantic-release-codeartifact", {
"tool": "npm",
"domain": "
"repository": "
}],
"@semantic-release/npm",
"@semantic-release/github"
]
}
See Additional Usage for details on using other tools with this plugin.
Check out this example repo to see it in action.
In order to use semantic-release you need:
- To host your code in a Git repository
- Use a Continuous Integration service that allows you to securely set up credentials
- A Git CLI version that meets [semantic-release's version requirement][sr-git-version] installed in your Continuous Integration environment
- A Node.js version that meets [semantic-release's version requirement][sr-node-version] installed in your Continuous Integration environment
In order to use semantic-release-codeartifact you need:
- An AWS Account
- An AWS CodeArtifact repository
- A role your CI environment can assume with sufficient IAM permissions to publish packages with CodeArtifact
The IAM role used by your CI environment will need the following permissions:
`json`
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"codeartifact:GetAuthorizationToken",
"codeartifact:GetRepositoryEndpoint",
"codeartifact:PublishPackageVersion"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "sts:GetServiceBearerToken",
"Resource": "*",
"Condition": {
"StringEquals": {
"sts:AWSServiceName": "codeartifact.amazonaws.com"
}
}
}
]
}
The AWS configuration is required for the AWS SDK which is used for getting
an auth token for CodeArtifact.
| Variable | Description |
| ----------------------- | -------------------------------------------------------- |
| AWS_REGION | Required. The AWS region to be used with the AWS SDK |AWS_ACCESS_KEY_ID
| | Required. Your AWS Access Key |AWS_SECRET_ACCESS_KEY
| | Required. Your AWS Secret Access Key |AWS_SESSION_TOKEN
| | Session token if you have/need it |
Note: Proxy configurations are supported and will be used if HTTP_PROXY or HTTPS_PROXY
is found on the environment using aws-sdk-v3-proxy.
The following environment variables can be set to configure the plugin. Options
specified by plugin config will take precedence over these environment variables.
| Variable | Description |
| -------------------- | ---------------------------------------------------------------------- |
| SR_CA_TOOL | Tool to connect with the CodeArtifact repository |SR_CA_DOMAIN
| | Your CodeArtifact domain name |SR_CA_REPOSITORY
| | Your CodeArtifact repository name |SR_CA_DOMAIN_OWNER
| | The AWS Account ID that owns your CodeArtifact domain |SR_CA_DURATION_SEC
| | The time, in seconds, that login information for CodeArtifact is valid |
| Option | Description | Default |
| ------------------ | ----------------------------------------------------------------------------------------------------------------------- | ------------------------------------------ |
| tool | Required. Tool to connect with the CodeArtifact repository | SR_CA_TOOL environment variable. |domain
| | Required. Your CodeArtifact domain name | SR_CA_DOMAIN environment variable. |repository
| | Required. Your CodeArtifact repository name | SR_CA_REPOSITORY environment variable. |domainOwner
| | The AWS Account ID that owns your CodeArtifact domain | SR_CA_DOMAIN_OWNER environment variable. |durationSections
| | The time, in seconds, that login information for CodeArtifact is valid | 7200 (2 hours) |skipPluginCheck
| | Skips the check for required plugins, this can be used if you are using your own custom plugins for your specified tool | false |
| Step | Description |
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| verifyConditions | Verify the presence and the validity of the authentication (set via configuration), and provide authentication values to the semantic-release plugin related to the CodeArtifact tool being used |
- GitHub Actions
- GitLab (coming soon - PRs welcome)
- CircleCI (coming soon - PRs welcome)
CodeArtifact supports multiple tools including npm (JavaScript), Maven and Gradle
(Java), and pip (Python). Each contain different dependencies and are listed below.
Required dependencies:
`bash`
npm install --save-dev semantic-release semantic-release-codeartifact
#### Plugin Configuration with npm
semantic-release includes the other plugins listed below:
`json`
{
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
["semantic-release-codeartifact", {
"tool": "npm",
"domain": "
"repository": "
}],
"@semantic-release/npm",
"@semantic-release/github"
]
}
Note: semantic-release-codeartifact must be listed before @semantic-release/npm`
Support for pip coming soon
Support for Maven coming soon
Support for Gradle coming soon
Thanks goes to these wonderful people (emoji key):
Ryan Sonshine 💻 | Jared McAteer 🐛 |
This project follows the all-contributors specification. Contributions of any kind welcome!
[build-img]:https://github.com/ryansonshine/semantic-release-codeartifact/actions/workflows/release.yml/badge.svg
[build-url]:https://github.com/ryansonshine/semantic-release-codeartifact/actions/workflows/release.yml
[downloads-img]:https://img.shields.io/npm/dt/semantic-release-codeartifact
[downloads-url]:https://www.npmtrends.com/semantic-release-codeartifact
[npm-img]:https://img.shields.io/npm/v/semantic-release-codeartifact
[npm-url]:https://www.npmjs.com/package/semantic-release-codeartifact
[issues-img]:https://img.shields.io/github/issues/ryansonshine/semantic-release-codeartifact
[issues-url]:https://github.com/ryansonshine/semantic-release-codeartifact/issues
[codecov-img]:https://codecov.io/gh/ryansonshine/semantic-release-codeartifact/branch/main/graph/badge.svg
[codecov-url]:https://codecov.io/gh/ryansonshine/semantic-release-codeartifact
[semantic-release-img]:https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg
[semantic-release-url]:https://github.com/semantic-release/semantic-release
[commitizen-img]:https://img.shields.io/badge/commitizen-friendly-brightgreen.svg
[commitizen-url]:http://commitizen.github.io/cz-cli/
[sr-node-version]:https://github.com/semantic-release/semantic-release/blob/master/docs/support/node-version.md
[sr-git-version]:https://github.com/semantic-release/semantic-release/blob/master/docs/support/git-version.md