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.
npm install -D semantic-release semantic-release-codeartifact
The plugin can be configured in the semantic-release configuration file:
{
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
["semantic-release-codeartifact", {
"tool": "npm",
"domain": "<YOUR_DOMAIN>",
"repository": "<YOUR_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 installed in your Continuous Integration environment
- A Node.js version that meets semantic-release's version requirement 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:
{
"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:
npm install --save-dev semantic-release semantic-release-codeartifact
semantic-release includes the other plugins listed below:
{
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
["semantic-release-codeartifact", {
"tool": "npm",
"domain": "<YOUR_DOMAIN>",
"repository": "<YOUR_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