{"id":49608547,"url":"https://github.com/calebsargeant/semantic-release","last_synced_at":"2026-05-11T14:05:05.225Z","repository":{"id":355264858,"uuid":"1227399076","full_name":"CalebSargeant/semantic-release","owner":"CalebSargeant","description":"GitHub Marketplace action for semantic release management with built-in Docker image promotion.","archived":false,"fork":false,"pushed_at":"2026-05-03T17:22:12.000Z","size":332,"stargazers_count":0,"open_issues_count":3,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-03T18:38:23.313Z","etag":null,"topics":["github-package-deployment","release-management","semantic-release","semantic-version"],"latest_commit_sha":null,"homepage":"https://semver.calebsargeant.com/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CalebSargeant.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-02T16:20:58.000Z","updated_at":"2026-05-03T18:29:39.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/CalebSargeant/semantic-release","commit_stats":null,"previous_names":["calebsargeant/tbd-release","calebsargeant/semantic-release"],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/CalebSargeant/semantic-release","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CalebSargeant%2Fsemantic-release","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CalebSargeant%2Fsemantic-release/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CalebSargeant%2Fsemantic-release/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CalebSargeant%2Fsemantic-release/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CalebSargeant","download_url":"https://codeload.github.com/CalebSargeant/semantic-release/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CalebSargeant%2Fsemantic-release/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32610276,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-04T10:08:07.713Z","status":"ssl_error","status_checked_at":"2026-05-04T10:08:02.005Z","response_time":58,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["github-package-deployment","release-management","semantic-release","semantic-version"],"created_at":"2026-05-04T14:01:55.055Z","updated_at":"2026-05-11T14:05:05.219Z","avatar_url":"https://github.com/CalebSargeant.png","language":"TypeScript","funding_links":["https://github.com/sponsors/CalebSargeant","https://ko-fi.com/calebsargeant"],"categories":[],"sub_categories":[],"readme":"# Release Runner\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/release-runner-logo.png\" alt=\"Release Runner\" width=\"200\"\u003e\n\u003c/p\u003e\n\n[![CI](https://github.com/calebsargeant/semantic-release/actions/workflows/ci.yaml/badge.svg)](https://github.com/calebsargeant/semantic-release/actions/workflows/ci.yaml)\n[![Release](https://github.com/calebsargeant/semantic-release/actions/workflows/release.yaml/badge.svg)](https://github.com/calebsargeant/semantic-release/actions/workflows/release.yaml)\n[![Docs](https://github.com/calebsargeant/semantic-release/actions/workflows/docs-pages.yaml/badge.svg)](https://semver.calebsargeant.com)\n[![GitHub Marketplace](https://img.shields.io/badge/Marketplace-Release%20Runner-purple?logo=github)](https://github.com/marketplace/actions/release-runner)\n[![License](https://img.shields.io/github/license/calebsargeant/semantic-release)](https://github.com/calebsargeant/semantic-release/blob/main/LICENSE)\n\nRelease Runner is the GitHub Marketplace Action published as\n`calebsargeant/semantic-release@v1`.\n\nUse it when a repository should create semantic version releases from GitHub\nActions. It can create Git tags and GitHub Releases, and it can optionally build\nor promote GHCR Docker images with the same release tag.\n\nFull setup docs: [semver.calebsargeant.com](https://semver.calebsargeant.com)\n\n## What You Need\n\n### 1. Install the Release Runner GitHub App\n\nIf you use the default `public-app` auth mode (recommended):\n\n- Install the [Release Runner GitHub App](https://github.com/apps/release-runner/installations/new)\n  on the repository or organization before your first release run.\n- Alternatively, you can use a\n  [private GitHub App or the built-in workflow token](https://semver.calebsargeant.com/concepts/#release-write-token).\n\n### 2. Bypass Branch Rulesets\n\nIf branch rulesets or branch protection rules guard your release branches,\nallow the Release Runner app to bypass:\n\n- Tag creation and pushes\n- Release commits (when the versioning tool updates files)\n- Promotion branches (`promote/\u003cenvironment\u003e/\u003cversion\u003e`)\n- Opening promotion pull requests\n\nWithout this, the app cannot push tags or version bumps.\nSee the full [branch protection checklist](https://semver.calebsargeant.com/organization-setup/#branch-protection-checklist).\n\n### 3. Choose a Release Tool\n\nAdd one supported release-tool config to your repository:\n\n| Tool | Input | Config file |\n|---|---|---|\n| python-semantic-release | `semantic-release-python` | `pyproject.toml` |\n| semantic-release for Node.js | `semantic-release-npm` | `.releaserc.json` or `package.json` |\n| GitVersion | `gitversion` | `GitVersion.yml` |\n| release-please | `release-please` | `release-please-config.json` |\n\n- semantic-release and release-please use\n  [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) —\n  `fix` → patch, `feat` → minor, breaking changes → major.\n- GitVersion follows your `GitVersion.yml`.\n\n## Production Release\n\nThis creates stable releases from `main`, for example `v1.0.0`.\n\nBefore running it with the default auth mode:\n\n- Complete the [setup steps above](#what-you-need).\n- Give the release job `id-token: write`.\n\n```yaml\nname: Release\n\non:\n  push:\n    branches: [main]\n\njobs:\n  release:\n    runs-on: ubuntu-latest\n    permissions:\n      contents: read\n      id-token: write\n    steps:\n      - uses: calebsargeant/semantic-release@v1\n        id: release\n        with:\n          mode: release\n          environment: prod\n          environments: '[\"prod\"]'\n          prerelease-identifiers: '{}'\n```\n\nBy default, release jobs use the Release Runner GitHub App.\n[Other auth modes](https://semver.calebsargeant.com/concepts/#release-write-token)\nare also supported.\n\n### Built-In Concurrency Lock\n\nUse the bundled reusable workflow instead of calling the action directly\nto get a workflow-level `concurrency:` group with no extra config —\ntwo simultaneous runs on the same branch will queue rather than race\neach other to the tag:\n\n```yaml\njobs:\n  release:\n    uses: calebsargeant/semantic-release/.github/workflows/release-runner.yaml@v1\n    permissions:\n      contents: read\n      id-token: write\n    with:\n      mode: release\n      environment: prod\n      environments: '[\"prod\"]'\n      prerelease-identifiers: '{}'\n```\n\nSame inputs as the action. See\n[Concepts → Concurrency Safety](https://semver.calebsargeant.com/concepts/#concurrency-safety)\nfor what's protected.\n\n## Docker Image Releases\n\nSet `image_name` to build PR images in CI mode and promote or rebuild them\nwith the release tag in release mode:\n\n- Your repository needs a [Docker Bake file](https://semver.calebsargeant.com/repository-setup/#2-choose-docker-or-version-only)\n  that declares the `REGISTRY`, `IMAGE_NAME`, `VERSION`, and `PLATFORMS` variables.\n- CI mode builds `pr-\u003cnumber\u003e` images from pull requests.\n- Release mode promotes or rebuilds the image with the release tag.\n\n## Environment Releases\n\nRelease Runner supports multiple environments with\n[two release models](https://semver.calebsargeant.com/choose-your-setup/):\n\n- **Trunk-Based Development** — one branch creates release tags for one or\n  more environments.\n- **Branch-Based Development** — long-lived branches map to environments.\n\nFor example, `[\"dev\", \"staging\", \"prod\"]` creates prerelease tags for `dev`\nand `staging`, then stable tags for `prod`.\n\n## Outputs\n\n| Output | Meaning |\n|---|---|\n| `version` | Semver without prefix, for example `1.0.0` |\n| `tag` | Full Git tag, for example `v1.0.0` |\n| `released` | `true` when a new release was created |\n| `is-prerelease` | `true` for prerelease environments |\n| `resolved-environment` | Environment selected for the run |\n\nFor the complete input/output reference, see the\n[action reference](https://semver.calebsargeant.com/reference/action-inputs-outputs/).\n\n## Sponsor\n\nIf Release Runner saves you time or helps your team ship more reliably,\nconsider supporting its development:\n\n[![Sponsor on GitHub](https://img.shields.io/badge/Sponsor-♥-ea4aaa?logo=github)](https://github.com/sponsors/CalebSargeant)\n[![Support on Ko-fi](https://img.shields.io/badge/Ko--fi-Support-ff5e5b?logo=ko-fi\u0026logoColor=white)](https://ko-fi.com/calebsargeant)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcalebsargeant%2Fsemantic-release","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcalebsargeant%2Fsemantic-release","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcalebsargeant%2Fsemantic-release/lists"}