{"id":20009018,"url":"https://github.com/ryansonshine/semantic-release-codeartifact","last_synced_at":"2025-04-05T22:10:36.762Z","repository":{"id":38108993,"uuid":"362214418","full_name":"ryansonshine/semantic-release-codeartifact","owner":"ryansonshine","description":"A semantic-release plugin for publishing packages to AWS CodeArtifact","archived":false,"fork":false,"pushed_at":"2024-12-22T06:49:58.000Z","size":1653,"stargazers_count":43,"open_issues_count":0,"forks_count":6,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-29T21:08:40.845Z","etag":null,"topics":["automated-publishing","aws","changelog","codeartifact","release-automation","semantic-release","semantic-release-plugin","semver","semver-release","version"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ryansonshine.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-04-27T18:34:54.000Z","updated_at":"2024-12-22T06:50:00.000Z","dependencies_parsed_at":"2024-02-20T23:42:56.719Z","dependency_job_id":null,"html_url":"https://github.com/ryansonshine/semantic-release-codeartifact","commit_stats":{"total_commits":113,"total_committers":4,"mean_commits":28.25,"dds":0.1504424778761062,"last_synced_commit":"a0d424474c867ccad98b831b1df51ea5e864eb63"},"previous_names":[],"tags_count":28,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryansonshine%2Fsemantic-release-codeartifact","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryansonshine%2Fsemantic-release-codeartifact/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryansonshine%2Fsemantic-release-codeartifact/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryansonshine%2Fsemantic-release-codeartifact/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ryansonshine","download_url":"https://codeload.github.com/ryansonshine/semantic-release-codeartifact/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247406111,"owners_count":20933806,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automated-publishing","aws","changelog","codeartifact","release-automation","semantic-release","semantic-release-plugin","semver","semver-release","version"],"created_at":"2024-11-13T07:13:38.446Z","updated_at":"2025-04-05T22:10:36.742Z","avatar_url":"https://github.com/ryansonshine.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- omit in toc --\u003e\n# Semantic Release CodeArtifact\n\n[![npm package][npm-img]][npm-url]\n[![Build Status][build-img]][build-url]\n[![Downloads][downloads-img]][downloads-url]\n[![Issues][issues-img]][issues-url]\n[![Code Coverage][codecov-img]][codecov-url]\n[![Commitizen Friendly][commitizen-img]][commitizen-url]\n[![Semantic Release][semantic-release-img]][semantic-release-url]\n\n\u003eA [semantic-release](https://github.com/semantic-release/semantic-release) plugin\n\u003efor publishing packages to [AWS CodeArtifact](https://aws.amazon.com/codeartifact/).\n\nAutomate your entire package release workflow including: determining the next\nversion number, generating release notes, and publishing packages to\nCodeArtifact using this plugin with semantic-release.\n\n\u003c!-- omit in toc --\u003e\n## Table of Contents\n\n- [Install](#install)\n- [Usage](#usage)\n- [Demo](#demo)\n- [Requirements](#requirements)\n  - [IAM Policy for Publishing](#iam-policy-for-publishing)\n- [Configuration](#configuration)\n  - [AWS Environment variables](#aws-environment-variables)\n  - [Plugin environment variables](#plugin-environment-variables)\n  - [Options](#options)\n- [Lifecycle Hooks](#lifecycle-hooks)\n- [Recipes](#recipes)\n  - [CI Configurations](#ci-configurations)\n- [Additional Usage](#additional-usage)\n  - [JavaScript - npm](#javascript---npm)\n    - [Plugin Configuration with npm](#plugin-configuration-with-npm)\n  - [Python - pip](#python---pip)\n  - [Java - Maven](#java---maven)\n  - [Java - Gradle](#java---gradle)\n- [Contributors ✨](#contributors-)\n\n## Install\n\n```bash\nnpm install -D semantic-release semantic-release-codeartifact\n```\n\n## Usage\n\nThe plugin can be configured in the [**semantic-release** configuration file](https://github.com/semantic-release/semantic-release/blob/master/docs/usage/configuration.md#configuration):\n\n```json\n{\n  \"plugins\": [\n    \"@semantic-release/commit-analyzer\",\n    \"@semantic-release/release-notes-generator\",\n    [\"semantic-release-codeartifact\", {\n      \"tool\": \"npm\",\n      \"domain\": \"\u003cYOUR_DOMAIN\u003e\",\n      \"repository\": \"\u003cYOUR_REPOSITORY\u003e\"\n    }],\n    \"@semantic-release/npm\",\n    \"@semantic-release/github\"\n  ]\n}\n```\n\nSee [Additional Usage](#additional-usage) for details on using other tools with this plugin.\n\n## Demo\n\nCheck out [this example repo](https://github.com/aws-samples/aws-codeartifact-semantic-release-example) to see it in action.\n\n## Requirements\n\nIn order to use **semantic-release** you need:\n\n- To host your code in a [Git repository](https://git-scm.com)\n- Use a Continuous Integration service that allows you to [securely set up credentials](docs/usage/ci-configuration.md#authentication)\n- A Git CLI version that meets [semantic-release's version requirement][sr-git-version] installed in your Continuous Integration environment\n- A [Node.js](https://nodejs.org) version that meets [semantic-release's version requirement][sr-node-version] installed in your Continuous Integration environment\n\nIn order to use **semantic-release-codeartifact** you need:\n\n- An [AWS Account](https://aws.amazon.com/premiumsupport/knowledge-center/create-and-activate-aws-account/)\n- An [AWS CodeArtifact](https://aws.amazon.com/codeartifact/) repository\n- A role your CI environment can assume with sufficient [IAM permissions to publish packages](#iam-policy-for-publishing) with CodeArtifact\n\n### IAM Policy for Publishing\n\nThe IAM role used by your CI environment will need the following permissions:\n\n```json\n{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": [\n    {\n      \"Effect\": \"Allow\",\n      \"Action\": [\n        \"codeartifact:GetAuthorizationToken\",\n        \"codeartifact:GetRepositoryEndpoint\",\n        \"codeartifact:PublishPackageVersion\"\n      ],\n      \"Resource\": \"*\"\n    },\n    {\n      \"Effect\": \"Allow\",\n      \"Action\": \"sts:GetServiceBearerToken\",\n      \"Resource\": \"*\",\n      \"Condition\": {\n        \"StringEquals\": {\n          \"sts:AWSServiceName\": \"codeartifact.amazonaws.com\"\n        }\n      }\n    }\n  ]\n}\n```\n\n## Configuration\n\n### AWS Environment variables\n\nThe AWS configuration is **required** for the AWS SDK which is used for getting\nan auth token for CodeArtifact.\n\n| Variable                | Description                                              |\n| ----------------------- | -------------------------------------------------------- |\n| `AWS_REGION`            | **Required.** The AWS region to be used with the AWS SDK |\n| `AWS_ACCESS_KEY_ID`     | **Required.** Your AWS Access Key                        |\n| `AWS_SECRET_ACCESS_KEY` | **Required.**  Your AWS Secret Access Key                |\n| `AWS_SESSION_TOKEN`     | Session token if you have/need it                        |\n\n**Note:** Proxy configurations are supported and will be used if HTTP_PROXY or HTTPS_PROXY\nis found on the environment using [aws-sdk-v3-proxy](https://github.com/awslabs/aws-sdk-v3-js-proxy).\n\n### Plugin environment variables\n\nThe following environment variables can be set to configure the plugin. [Options](#options)\nspecified by plugin config will take precedence over these environment variables.\n\n| Variable             | Description                                                            |\n| -------------------- | ---------------------------------------------------------------------- |\n| `SR_CA_TOOL`         | Tool to connect with the CodeArtifact repository                       |\n| `SR_CA_DOMAIN`       | Your CodeArtifact domain name                                          |\n| `SR_CA_REPOSITORY`   | Your CodeArtifact repository name                                      |\n| `SR_CA_DOMAIN_OWNER` | The AWS Account ID that owns your CodeArtifact domain                  |\n| `SR_CA_DURATION_SEC` | The time, in seconds, that login information for CodeArtifact is valid |\n\n### Options\n\n| Option             | Description                                                                                                             | Default                                    |\n| ------------------ | ----------------------------------------------------------------------------------------------------------------------- | ------------------------------------------ |\n| `tool`             | **Required.** Tool to connect with the CodeArtifact repository                                                          | `SR_CA_TOOL` environment variable.         |\n| `domain`           | **Required.** Your CodeArtifact domain name                                                                             | `SR_CA_DOMAIN` environment variable.       |\n| `repository`       | **Required.** Your CodeArtifact repository name                                                                         | `SR_CA_REPOSITORY` environment variable.   |\n| `domainOwner`      | The AWS Account ID that owns your CodeArtifact domain                                                                   | `SR_CA_DOMAIN_OWNER` environment variable. |\n| `durationSections` | The time, in seconds, that login information for CodeArtifact is valid                                                  | `7200` (2 hours)                           |\n| `skipPluginCheck`  | Skips the check for required plugins, this can be used if you are using your own custom plugins for your specified tool | `false`                                    |\n\n## Lifecycle Hooks\n\n| Step               | Description                                                                                                                                                                                                        |\n| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `verifyConditions` | Verify the presence and the validity of the authentication (set via [configuration](#configuration)), and provide authentication values to the semantic-release plugin related to the CodeArtifact tool being used |\n\n## Recipes\n\n### CI Configurations\n\n- [GitHub Actions](https://github.com/aws-samples/aws-codeartifact-semantic-release-example/blob/main/.github/workflows/release.yml)\n- GitLab (coming soon - PRs welcome)\n- CircleCI (coming soon - PRs welcome)\n\n## Additional Usage\n\nCodeArtifact supports multiple tools including npm (JavaScript), Maven and Gradle\n(Java), and pip (Python). Each contain different dependencies and are listed below.\n\n### JavaScript - npm\n\nRequired dependencies:\n\n- [`@semantic-release/npm`](https://www.npmjs.com/package/@semantic-release/npm)\n\n```bash\nnpm install --save-dev semantic-release semantic-release-codeartifact\n```\n\n#### Plugin Configuration with npm\n\n*semantic-release includes the other plugins listed below:*\n\n```json\n{\n  \"plugins\": [\n    \"@semantic-release/commit-analyzer\",\n    \"@semantic-release/release-notes-generator\",\n    [\"semantic-release-codeartifact\", {\n      \"tool\": \"npm\",\n      \"domain\": \"\u003cYOUR_DOMAIN\u003e\",\n      \"repository\": \"\u003cYOUR_REPOSITORY\u003e\"\n    }],\n    \"@semantic-release/npm\",\n    \"@semantic-release/github\"\n  ]\n}\n```\n\n**Note:** `semantic-release-codeartifact` must be listed before `@semantic-release/npm`\n\n### Python - pip\n\nSupport for pip coming soon\n\n### Java - Maven\n\nSupport for Maven coming soon\n\n### Java - Gradle\n\nSupport for Gradle coming soon\n\n## Contributors ✨\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://ryansonshine.com\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/9534477?v=4?s=100\" width=\"100px;\" alt=\"Ryan Sonshine\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eRyan Sonshine\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/ryansonshine/semantic-release-codeartifact/commits?author=ryansonshine\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://jaredmcateer.com\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/781540?v=4?s=100\" width=\"100px;\" alt=\"Jared McAteer\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJared McAteer\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/ryansonshine/semantic-release-codeartifact/issues?q=author%3Ajaredmcateer\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/doronpr\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/3373954?v=4?s=100\" width=\"100px;\" alt=\"Doron Pearl\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eDoron Pearl\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/ryansonshine/semantic-release-codeartifact/issues?q=author%3Adoronpr\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-restore --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!\n\n[build-img]:https://github.com/ryansonshine/semantic-release-codeartifact/actions/workflows/release.yml/badge.svg\n[build-url]:https://github.com/ryansonshine/semantic-release-codeartifact/actions/workflows/release.yml\n[downloads-img]:https://img.shields.io/npm/dt/semantic-release-codeartifact\n[downloads-url]:https://www.npmtrends.com/semantic-release-codeartifact\n[npm-img]:https://img.shields.io/npm/v/semantic-release-codeartifact\n[npm-url]:https://www.npmjs.com/package/semantic-release-codeartifact\n[issues-img]:https://img.shields.io/github/issues/ryansonshine/semantic-release-codeartifact\n[issues-url]:https://github.com/ryansonshine/semantic-release-codeartifact/issues\n[codecov-img]:https://codecov.io/gh/ryansonshine/semantic-release-codeartifact/branch/main/graph/badge.svg\n[codecov-url]:https://codecov.io/gh/ryansonshine/semantic-release-codeartifact\n[semantic-release-img]:https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-release-url]:https://github.com/semantic-release/semantic-release\n[commitizen-img]:https://img.shields.io/badge/commitizen-friendly-brightgreen.svg\n[commitizen-url]:http://commitizen.github.io/cz-cli/\n[sr-node-version]:https://github.com/semantic-release/semantic-release/blob/master/docs/support/node-version.md\n[sr-git-version]:https://github.com/semantic-release/semantic-release/blob/master/docs/support/git-version.md\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fryansonshine%2Fsemantic-release-codeartifact","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fryansonshine%2Fsemantic-release-codeartifact","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fryansonshine%2Fsemantic-release-codeartifact/lists"}