30 Commits
v0.1.0 ... main

Author SHA1 Message Date
368587e2e3 docs(readme): improve project description for clarity (#25) 2025-10-24 10:10:36 +01:00
ecf7033397 ci(deps): upgrade to v3 of self to release self (#24) 2025-10-24 09:34:12 +01:00
jimehbot[bot]
84f33fd282 chore(main): release 3.0.0 (#23)
Co-authored-by: jimehbot[bot] <132453784+jimehbot[bot]@users.noreply.github.com>
2025-10-24 08:21:33 +01:00
d822d979e9 feat(deps): migrate to actions/create-github-app-token (#22)
Replace deprecated `tibdex/github-app-token` action with the 
new and official `actions/create-github-app-token` action.

This required removing numerous token related inputs for the action, as 
the new action does not support the same sets of inputs.

BREAKING CHANGE: Removed various app token related inputs not available 
in new underlying action. Please see updated list of inputs in README.
2025-10-24 08:16:17 +01:00
ba6427cb61 ci(deps): upgrade to v2 of self to release self 2025-03-07 01:09:19 +00:00
jimehbot[bot]
bfd8923580 chore(main): release 2.0.0 (#21)
Co-authored-by: jimehbot[bot] <132453784+jimehbot[bot]@users.noreply.github.com>
Co-authored-by: Jim Myhrberg <contact@jimeh.me>
2025-03-07 01:07:34 +00:00
068da4bf6a chore(ci): tweak release-please config 2025-03-07 01:04:33 +00:00
1406584702 ci(release): always update release PRs 2025-03-07 01:01:43 +00:00
8e21350bd9 ci(deps): upgrade to latest actions 2025-03-07 00:57:14 +00:00
4a3aba93da chore(deps): upgrade release-please-action and github-app-token to latest major versions (#20) 2025-03-07 00:46:04 +00:00
e774497e31 Revert "wip: test upgrading to latest versions of dependencies which include breaking changes"
This reverts commit 0b17a543d3.
2025-03-06 01:40:22 +00:00
0b17a543d3 wip: test upgrading to latest versions of dependencies which include breaking changes 2025-03-06 01:38:39 +00:00
9c79e61e2c ci(release): switch back to stable version of self for release job 2024-05-13 10:13:47 +01:00
jimehbot[bot]
094ab0890e chore(main): release 1.0.3 (#19)
Co-authored-by: jimehbot[bot] <132453784+jimehbot[bot]@users.noreply.github.com>
2024-05-13 10:07:10 +01:00
72e49f5d6f fix(deps): use new name for Google's release please action (#18) 2024-05-13 10:06:22 +01:00
jimehbot[bot]
9e6111fa06 chore(main): release 1.0.2 (#16)
Co-authored-by: jimehbot[bot] <132453784+jimehbot[bot]@users.noreply.github.com>
2023-05-19 00:48:19 +01:00
f307f175b9 fix(action): correct minor typo in action metadata (#14) 2023-05-19 00:47:10 +01:00
09a0ac2e59 ci(release): run release-please through a GitHub App (#15) 2023-05-19 00:45:29 +01:00
b2f2b18196 Merge pull request #13 from jimeh/tweak-ci 2023-05-19 00:31:52 +01:00
5ce2d33d70 ci(docs): add job to verify generated docs in readme are up to date 2023-05-19 00:30:08 +01:00
59ebc8ab5c ci(release): switch to stable v1 of self 2023-05-19 00:23:18 +01:00
42fbbf7a6f ci(release): switch to jimeh/update-tags-actions to move major/minor tags 2023-05-19 00:22:38 +01:00
github-actions[bot]
ffac38c285 chore(main): release 1.0.1 (#11) 2023-05-08 02:22:07 +01:00
023c0d0dc3 chore(release): remove "release-as" option (#12) 2023-05-08 02:21:09 +01:00
322dcdf56e fix(action): set correct action name in action.yml metadata (#10) 2023-05-08 02:18:34 +01:00
github-actions[bot]
38d93f4a8a chore(main): release 1.0.0 (#9) 2023-05-08 02:06:18 +01:00
22f0022a09 feat(release): prepare for v1.0.0 2023-05-08 01:58:29 +01:00
github-actions[bot]
8ae0004991 chore(main): release 0.1.1 (#8) 2023-05-08 01:53:50 +01:00
1139eaec31 feat(release): rename CI workflow to Release 2023-05-08 01:51:38 +01:00
48a1ac7188 docs(readme): update features list and examples intro 2023-05-08 01:46:41 +01:00
7 changed files with 305 additions and 177 deletions

View File

@@ -1,3 +1,3 @@
{
".": "0.1.0"
".": "3.0.0"
}

View File

@@ -1,16 +1,16 @@
{
"always-update": true,
"bump-minor-pre-major": true,
"bump-patch-for-minor-pre-major": true,
"draft": false,
"prerelease": false,
"packages": {
".": {
"release-type": "simple",
"changelog-path": "CHANGELOG.md",
"extra-files": [
"README.md"
],
"bump-minor-pre-major": true,
"bump-patch-for-minor-pre-major": true,
"draft": false,
"prerelease": false,
"initial-version": "0.0.1"
]
}
},
"$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json"

View File

@@ -1,25 +1,33 @@
---
name: CI
name: Release
on: push
jobs:
docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version: 20
- run: make docs
- name: Verify no changes after docs build
run: |
git diff --exit-code
release-please:
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
steps:
- uses: jimeh/release-please-manifest-action@main
- uses: jimeh/release-please-manifest-action@84f33fd2828210488c36f3e0a7e3209252d2ae7d # v3.0.0
id: release
- name: Create/update MAJOR tag
if: ${{ steps.release.outputs.release_created }}
uses: richardsimko/update-tag@v1
with:
tag_name: v${{ steps.release.outputs.major }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Create/update MAJOR.MINOR tag
app-id: ${{ secrets.RELEASE_BOT_APP_ID }}
private-key: ${{ secrets.RELEASE_BOT_PRIVATE_KEY }}
- name: MAJOR and MAJOR.MINOR tags
if: ${{ steps.release.outputs.release_created }}
uses: richardsimko/update-tag@v1
uses: jimeh/update-tags-action@e58fa0f2f874a12bf0eb90ef8ab4256808c0f373 # v1.0.1
with:
tag_name: v${{ steps.release.outputs.major }}.${{ steps.release.outputs.minor }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
tags: |
v${{ steps.release.outputs.major }}
v${{ steps.release.outputs.major }}.${{ steps.release.outputs.minor }}

View File

@@ -1,5 +1,67 @@
# Changelog
## [3.0.0](https://github.com/jimeh/release-please-manifest-action/compare/v2.0.0...v3.0.0) (2025-10-24)
### ⚠ BREAKING CHANGES
* **deps:** Removed various app token related inputs not available in new underlying action. Please see updated list of inputs in README.
### Features
* **deps:** migrate to actions/create-github-app-token ([#22](https://github.com/jimeh/release-please-manifest-action/issues/22)) ([d822d97](https://github.com/jimeh/release-please-manifest-action/commit/d822d979e98542a92c39e3c8f9045ff3d47cdc26))
## [2.0.0](https://github.com/jimeh/release-please-manifest-action/compare/v1.0.3...v2.0.0) (2025-03-07)
### ⚠ BREAKING CHANGES
* **input:** rename `default-branch` input to `target-branch`
* **input:** replaced `installation-id` input with `installation-retrieval-mode`
* **output:** rename `release-please` output to `raw`
### Features
* **deps:** upgrade release-please-action and github-app-token to latest major versions ([4a3aba9](https://github.com/jimeh/release-please-manifest-action/commit/4a3aba93da18573def6f5583082327e81c38c6d4))
* **input:** rename `default-branch` input to `target-branch` ([4a3aba9](https://github.com/jimeh/release-please-manifest-action/commit/4a3aba93da18573def6f5583082327e81c38c6d4))
* **input:** replaced `installation-id` input with `installation-retrieval-mode` ([4a3aba9](https://github.com/jimeh/release-please-manifest-action/commit/4a3aba93da18573def6f5583082327e81c38c6d4))
* **output:** rename `release-please` output to `raw` ([4a3aba9](https://github.com/jimeh/release-please-manifest-action/commit/4a3aba93da18573def6f5583082327e81c38c6d4))
## [1.0.3](https://github.com/jimeh/release-please-manifest-action/compare/v1.0.2...v1.0.3) (2024-05-13)
### Bug Fixes
* **deps:** use new name for Google's release please action ([#18](https://github.com/jimeh/release-please-manifest-action/issues/18)) ([72e49f5](https://github.com/jimeh/release-please-manifest-action/commit/72e49f5d6f009b0e0c4faff0c835703ee9ee3093))
## [1.0.2](https://github.com/jimeh/release-please-manifest-action/compare/v1.0.1...v1.0.2) (2023-05-18)
### Bug Fixes
* **action:** correct minor typo in action metadata ([#14](https://github.com/jimeh/release-please-manifest-action/issues/14)) ([f307f17](https://github.com/jimeh/release-please-manifest-action/commit/f307f175b93d8eb1a1a4dfaf9092efaba72a6d62))
## [1.0.1](https://github.com/jimeh/release-please-manifest-action/compare/v1.0.0...v1.0.1) (2023-05-08)
### Bug Fixes
* **action:** set correct action name in action.yml metadata ([#10](https://github.com/jimeh/release-please-manifest-action/issues/10)) ([322dcdf](https://github.com/jimeh/release-please-manifest-action/commit/322dcdf56ed8be4589ffbd70cb1382198ca65120))
## [1.0.0](https://github.com/jimeh/release-please-manifest-action/compare/v0.1.1...v1.0.0) (2023-05-08)
### Features
* **release:** prepare for v1.0.0 ([22f0022](https://github.com/jimeh/release-please-manifest-action/commit/22f0022a0932f5639bb4808df16e76c245256880))
## [0.1.1](https://github.com/jimeh/release-please-manifest-action/compare/v0.1.0...v0.1.1) (2023-05-08)
### Features
* **release:** rename CI workflow to Release ([1139eae](https://github.com/jimeh/release-please-manifest-action/commit/1139eaec31e83556c1eb35a523ee76485efb9ab5))
## [0.1.0](https://github.com/jimeh/release-please-manifest-action/compare/v0.0.6...v0.1.0) (2023-05-08)

View File

@@ -1,3 +1,10 @@
.PHONY: docs
docs: readme
.PHONY: readme
readme: check-npx action-docs
npx --yes prettier --print-width 80 --prose-wrap always --write README.md
.PHONY: action-docs
action-docs: check-npx
npx --yes action-docs --update-readme

172
README.md
View File

@@ -1,53 +1,44 @@
<h1 align="center">
release-please-manifest-action
</h1>
<div align="center">
<p align="center">
<strong>
Opinionated action for running release-please in manifest mode.
</strong>
</p>
# release-please-manifest-action
<p align="center">
<a href="https://github.com/jimeh/release-please-manifest-action/releases">
<img src="https://img.shields.io/github/v/tag/jimeh/release-please-manifest-action?label=release" alt="GitHub tag (latest SemVer)">
</a>
<a href="https://github.com/jimeh/release-please-manifest-action/issues">
<img src="https://img.shields.io/github/issues-raw/jimeh/release-please-manifest-action.svg?style=flat&logo=github&logoColor=white" alt="GitHub issues">
</a>
<a href="https://github.com/jimeh/release-please-manifest-action/pulls">
<img src="https://img.shields.io/github/issues-pr-raw/jimeh/release-please-manifest-action.svg?style=flat&logo=github&logoColor=white" alt="GitHub pull requests">
</a>
<a href="https://github.com/jimeh/release-please-manifest-action/blob/master/LICENSE">
<img src="https://img.shields.io/github/license/jimeh/release-please-manifest-action.svg?style=flat" alt="License Status">
</a>
</p>
**Opinionated action for running release-please in manifest mode.**
A composite action which wraps [release-please-action][] and
[github-app-token][] actions, with opinionated default settings focused on
running [release-please][] in [manifest mode][].
[![Latest Release](https://img.shields.io/github/release/jimeh/release-please-manifest-action.svg)](https://github.com/jimeh/release-please-manifest-action/releases)
[![GitHub Issues](https://img.shields.io/github/issues/jimeh/release-please-manifest-action.svg?style=flat&logo=github&logoColor=white)](https://github.com/jimeh/release-please-manifest-action/issues)
[![GitHub Pull Requests](https://img.shields.io/github/issues-pr/jimeh/release-please-manifest-action.svg?style=flat&logo=github&logoColor=white)](https://github.com/jimeh/release-please-manifest-action/pulls)
[![License](https://img.shields.io/github/license/jimeh/release-please-manifest-action.svg)](https://github.com/jimeh/release-please-manifest-action/blob/main/LICENSE)
[release-please-action]:
https://github.com/google-github-actions/release-please-action
[github-app-token]: https://github.com/tibdex/github-app-token
[release-please]: https://github.com/googleapis/release-please
An opinionated composite action that wraps [release-please-action][] and
[create-github-app-token][].
</div>
[release-please-action]: https://github.com/googleapis/release-please-action
[create-github-app-token]: https://github.com/actions/create-github-app-token
[manifest mode]:
https://github.com/googleapis/release-please/blob/main/docs/manifest-releaser.md
# Features
- Focuses on and only supports running release-please's manifest command.
- Optionally supports having release-please authenticate as a GitHub App.
- By default places release-please config and manifest files within the
top-level `.github` directory instead of in the repository root:
- `.github/.release-please-manifest.json`
- `.github/release-please-config.json`
- Supports having release-please authenticate as a GitHub App.
- Supports dynamic target branch based on regular expression pattern, enabling
maintenance releases.
- Defaults to looking for release-please's config and manifest files within the
top-level `.github` directory instead of in the repository root.
# Examples
_Note: This action is not well suited for multi package/root release-please
configurations, as it does not support dynamic path-based outputs. A workaround
is to parse the `raw` output JSON string, but this is not ideal._
All examples here assume you have places your `release-please-config.json` and
`.release-please-manifest.json` within the `.github` folder in the root of the
repository.
# Usage
All usage examples below assume you have placed your
`release-please-config.json` and `.release-please-manifest.json` within the
`.github` directory in the root of the repository.
See release-please's [manifest-releaser][manifest mode] documentation for
details about the config and manifest files.
## Basic (Actions Token)
@@ -56,8 +47,8 @@ that is automatically available to all actions.
This will prevent checks / GitHub Actions running against any Release Pull
Requests raised by release-please. This is a feature of GitHub as a means of
trying to avoid GitHub Actions jobs triggering themselves, causing an endless
loop.
trying to avoid GitHub Actions jobs triggering themselves, and causing infinite
loops.
If you need checks to run against Release Pull Requests, you will need to have
release-please authenticate with a Personal Access Token (PAT), or as a GitHub
@@ -72,7 +63,7 @@ jobs:
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
steps:
- uses: jimeh/release-please-manifest-action@v0
- uses: jimeh/release-please-manifest-action@v3
```
<!-- x-release-please-end -->
@@ -87,10 +78,9 @@ jobs:
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
steps:
- uses: google-github-actions/release-please-action@v3
- uses: googleapis/release-please-action@v4
id: release-please
with:
command: manifest
config-file: .github/release-please-config.json
manifest-file: .github/.release-please-manifest.json
```
@@ -118,7 +108,7 @@ jobs:
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
steps:
- uses: jimeh/release-please-manifest-action@v0
- uses: jimeh/release-please-manifest-action@v3
with:
token: ${{ secrets.RELEASE_PAT_TOKEN }}
```
@@ -135,11 +125,10 @@ jobs:
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
steps:
- uses: google-github-actions/release-please-action@v3
- uses: googleapis/release-please-action@v4
id: release-please
with:
token: ${{ secrets.RELEASE_PAT_TOKEN }}
command: manifest
config-file: .github/release-please-config.json
manifest-file: .github/.release-please-manifest.json
```
@@ -165,9 +154,8 @@ or a user's personal access token:
Below we assume you have already setup `RELEASE_BOT_APP_ID` and
`RELEASE_BOT_PRIVATE_KEY` secrets in the repository or organization.
To set the private key secret, it is easiest to base64 encode the contents of
the `*.pem` file you get from the GitHub App's configuration page. The base64
encoded string should not have any line-breaks.
To set the private key secret, simply copy/paste the contents of the `*.pem`
file you get from the GitHub App's configuration page.
<!-- x-release-please-start-major -->
@@ -178,7 +166,7 @@ jobs:
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
steps:
- uses: jimeh/release-please-manifest-action@v0
- uses: jimeh/release-please-manifest-action@v3
with:
app-id: ${{ secrets.RELEASE_BOT_APP_ID }}
private-key: ${{ secrets.RELEASE_BOT_PRIVATE_KEY }}
@@ -196,16 +184,15 @@ jobs:
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
steps:
- uses: tibdex/github-app-token@v1
- uses: actions/create-github-app-token@v2
id: github-app-token
with:
app_id: ${{ secrets.RELEASE_BOT_APP_ID }}
private_key: ${{ secrets.RELEASE_BOT_PRIVATE_KEY }}
- uses: google-github-actions/release-please-action@v3
app-id: ${{ secrets.RELEASE_BOT_APP_ID }}
private-key: ${{ secrets.RELEASE_BOT_PRIVATE_KEY }}
- uses: googleapis/release-please-action@v4
id: release-please
with:
token: ${{ steps.github-app-token.outputs.token }}
command: manifest
config-file: .github/release-please-config.json
manifest-file: .github/.release-please-manifest.json
```
@@ -214,24 +201,47 @@ _Note: Outputs are not included in this equivalence example._
</details>
## Maintenance Releases
The `target-branch-pattern` input allows for dynamic targeting of different
branches. This means if you, for example, specify
`^(main|release-[0-9]+(\.[0-9]+)?)$` as the pattern, release-please will run
against the `main` branch, but also against any branch named `release-X` or
`release-X.X`, where `X` is one or more numbers.
The practical use of this looks something like this:
- The `main` branch is used for latest development and latest releases. Let's
assume it is on version 1.5.7 right now.
- The `release-1.4` branch was created from the latest 1.4.x tag, and fixes are
backported to it from `main`.
- When `main` is pushed to, release-please will create a release PR to merge
into `main` that bumps the version accordingly.
- When `release-1.4` is pushed to, release-please will create a release PR
against the `release-1.4` branch instead of `main`, so a new 1.4.x release can
be safely created.
The thing to be careful of when working on maintenance branches is that release-
please might try and bump the minor or even major version just like it would in
`main` depending on the commit types. This should be overridden by either doing
an empty commit with a `Release-As:` footer, or by modifying the commit types
when cherry picking.
# Reference
<!-- action-docs-inputs -->
## Inputs
| parameter | description | required | default |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- | ------------------------------------- |
| token | GitHub token used to authenticate. | `false` | ${{ github.token }} |
| app-id | ID of the GitHub App to use for authentication. If set, takes precedence over token input. | `false` | |
| private-key | Private key of the GitHub App (can be Base64 encoded). Required when app-id is provided. | `false` | |
| installation-id | ID of the installation for which the app token will be requested. Defaults to the ID of the repository's installation. | `false` | |
| permissions | JSON-stringified permissions granted to the app token. Defaults to all the GitHub app permissions, see: https://docs.github.com/en/rest/apps/apps#create-an-installation-access-token-for-an-app | `false` | |
| github-api-url | Configure github API URL. | `false` | ${{ github.api_url }} |
| repository | The full name of the repository to operate on in owner/repo format. Defaults to the current repository. | `false` | ${{ github.repository }} |
| default-branch | Branch to open pull release PR against. Defaults to the repository's default branch. | `false` | |
| config-file | Pat to config file within the project. | `false` | .github/release-please-config.json |
| manifest-file | Path to manifest file within the project. | `false` | .github/.release-please-manifest.json |
| parameter | description | required | default |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- | ------------------------------------- |
| token | GitHub token used to authenticate. | `false` | ${{ github.token }} |
| app-id | ID of the GitHub App to use for authentication. If set, takes precedence over token input. | `false` | |
| private-key | Private key of the GitHub App (can be Base64 encoded). Required when app-id is provided. | `false` | |
| target-branch | Branch to open pull release PR against. Defaults to the repository's default branch. | `false` | |
| target-branch-pattern | Regular expression pattern to determine if current ref name is a target branch or not. When specified, the action will only run if the current ref name matches the pattern, and the current ref name will be used as the target branch. When not specified, the action will always run, and target the specified target-branch, or the repository's default branch if target-branch is not specified. | `false` | |
| config-file | Path to config file within the project. | `false` | .github/release-please-config.json |
| manifest-file | Path to manifest file within the project. | `false` | .github/.release-please-manifest.json |
<!-- action-docs-inputs -->
@@ -242,27 +252,29 @@ _Note: Outputs are not included in this equivalence example._
| parameter | description |
| ---------------- | -------------------------------------------------------- |
| release_created | Whether or not a release was created. |
| releases_created | Whether or not a release was created. |
| id | Release ID. |
| name | Release name. |
| tag_name | Release tag name. |
| sha | Release sha |
| body | Release body. |
| html_url | Release URL. |
| draft | Whether or not the release is a draft. |
| upload_url | Release upload URL. |
| path | Path that was released. |
| html_url | Release URL. |
| tag_name | Release tag name. |
| version | Version that was released. |
| major | Major version that was released. |
| minor | Minor version that was released. |
| patch | Patch version that was released. |
| paths_released | Paths that were released. |
| sha | Release SHA. |
| pr | Pull request number. |
| path | Path that was released. |
| releases_created | Whether or not a release was created. |
| paths_released | Paths that were released. |
| id | Release ID. |
| name | Release name. |
| body | Release body. |
| draft | Whether or not the release is a draft. |
| prs_created | Whether or not a pull request was created. |
| pr_number | Pull request number that created the release. |
| prs | Pull request numbers. |
| release-please | All outputs from release-please action as a JSON string. |
| raw | All outputs from release-please action as a JSON string. |
<!-- action-docs-outputs -->
# License
[CC0 1.0 Universal](http://creativecommons.org/publicdomain/zero/1.0/)
[CC0 1.0 Universal](https://github.com/jimeh/release-please-manifest-action/blob/main/LICENSE)

View File

@@ -1,93 +1,55 @@
---
name: "release-please-action"
name: "release-please-manifest-action"
description: >-
Opinionated action for running release-please in manifest mode with optional
support to authenticate as a GitHub App.
author: "jimeh"
inputs:
token:
description: >-
GitHub token used to authenticate.
required: false
description: "GitHub token used to authenticate."
default: ${{ github.token }}
app-id:
description: >-
ID of the GitHub App to use for authentication. If set, takes precedence
over token input.
required: false
private-key:
description: >-
Private key of the GitHub App (can be Base64 encoded). Required when
app-id is provided.
required: false
installation-id:
description: >-
ID of the installation for which the app token will be requested. Defaults
to the ID of the repository's installation.
permissions:
description: >-
JSON-stringified permissions granted to the app token. Defaults to all the
GitHub app permissions, see:
https://docs.github.com/en/rest/apps/apps#create-an-installation-access-token-for-an-app
github-api-url:
description: Configure github API URL.
required: false
default: ${{ github.api_url }}
repository:
description: >-
The full name of the repository to operate on in owner/repo format.
Defaults to the current repository.
default: ${{ github.repository }}
default-branch:
target-branch:
description: >-
Branch to open pull release PR against. Defaults to the repository's
default branch.
required: false
default: ""
target-branch-pattern:
description: >-
Regular expression pattern to determine if current ref name is a target
branch or not. When specified, the action will only run if the current
ref name matches the pattern, and the current ref name will be used as the
target branch. When not specified, the action will always run, and target
the specified target-branch, or the repository's default branch if
target-branch is not specified.
default: ""
config-file:
description: Pat to config file within the project.
required: false
description: Path to config file within the project.
default: ".github/release-please-config.json"
manifest-file:
description: Path to manifest file within the project.
required: false
default: ".github/.release-please-manifest.json"
outputs:
release_created:
description: "Whether or not a release was created."
value: ${{ steps.release-please.outputs.release_created }}
releases_created:
description: "Whether or not a release was created."
value: ${{ steps.release-please.outputs.releases_created }}
id:
description: "Release ID."
value: ${{ steps.release-please.outputs.id }}
name:
description: "Release name."
value: ${{ steps.release-please.outputs.name }}
tag_name:
description: "Release tag name."
value: ${{ steps.release-please.outputs.tag_name }}
sha:
description: "Release sha"
value: ${{ steps.release-please.outputs.sha }}
body:
description: "Release body."
value: ${{ steps.release-please.outputs.body }}
html_url:
description: "Release URL."
value: ${{ steps.release-please.outputs.html_url }}
draft:
description: "Whether or not the release is a draft."
value: ${{ steps.release-please.outputs.draft }}
upload_url:
description: "Release upload URL."
value: ${{ steps.release-please.outputs.upload_url }}
path:
description: "Path that was released."
value: ${{ steps.release-please.outputs.path }}
html_url:
description: "Release URL."
value: ${{ steps.release-please.outputs.html_url }}
tag_name:
description: "Release tag name."
value: ${{ steps.release-please.outputs.tag_name }}
version:
description: "Version that was released."
value: ${{ steps.release-please.outputs.version }}
@@ -100,48 +62,125 @@ outputs:
patch:
description: "Patch version that was released."
value: ${{ steps.release-please.outputs.patch }}
paths_released:
description: "Paths that were released."
value: ${{ steps.release-please.outputs.paths_released }}
sha:
description: "Release SHA."
value: ${{ steps.release-please.outputs.sha }}
pr:
description: "Pull request number."
value: ${{ steps.release-please.outputs.pr }}
path:
description: "Path that was released."
value: ${{ steps.release-please.outputs.path }}
releases_created:
description: "Whether or not a release was created."
value: ${{ steps.release-please.outputs.releases_created }}
paths_released:
description: "Paths that were released."
value: ${{ steps.release-please.outputs.paths_released }}
id:
description: "Release ID."
value: ${{ steps.release-please.outputs.id }}
name:
description: "Release name."
value: ${{ steps.release-please.outputs.name }}
body:
description: "Release body."
value: ${{ steps.release-please.outputs.body }}
draft:
description: "Whether or not the release is a draft."
value: ${{ steps.release-please.outputs.draft }}
prs_created:
description: "Whether or not a pull request was created."
value: ${{ steps.release-please.outputs.prs_created }}
pr_number:
description: "Pull request number that created the release."
value: ${{ steps.release-please.outputs.prNumber }}
prs:
description: "Pull request numbers."
value: ${{ steps.release-please.outputs.prs }}
release-please:
raw:
description: "All outputs from release-please action as a JSON string."
value: ${{ toJSON(steps.release-please.outputs) }}
runs:
using: "composite"
steps:
- uses: tibdex/github-app-token@v1
if: inputs.app-id != null && inputs.app-id != ''
- name: preflight
shell: bash
id: preflight
run: |
echo " Determining if action should run..."
if [[ -n "$TARGET_BRANCH_PATTERN" ]]; then
echo " Evaluating target branch pattern:"
echo " - pattern: $TARGET_BRANCH_PATTERN"
echo " - ref name: $GITHUB_REF_NAME"
if [[ "$GITHUB_REF_NAME" =~ $TARGET_BRANCH_PATTERN ]]; then
echo "✔ Target branch pattern matches ref name"
RUN="true"
TARGET_BRANCH="$GITHUB_REF_NAME"
else
echo "✘ Target branch pattern does not match ref name"
fi
else
RUN="true"
fi
if [[ -z "$RUN" ]]; then
echo "✘ Not on a target branch, skipping run."
fi
echo "target-branch=${TARGET_BRANCH}" >> "$GITHUB_OUTPUT"
echo "run=${RUN:-false}" >> "$GITHUB_OUTPUT"
env:
TARGET_BRANCH: "${{ inputs.target-branch }}"
TARGET_BRANCH_PATTERN: "${{ inputs.target-branch-pattern }}"
- name: resolve private key
if: >-
steps.preflight.outputs.run == 'true' &&
inputs.app-id != null &&
inputs.app-id != ''
id: resolve-private-key
shell: bash
run: |
echo " Detecting private key format..."
if [[ "$INPUT_PRIVATE_KEY" =~ ^-----BEGIN ]]; then
echo "✔ PEM format detected"
private_key="$INPUT_PRIVATE_KEY"
else
echo "✔ Base64 format detected, decoding..."
private_key="$(echo "$INPUT_PRIVATE_KEY" | base64 -d)" &> /dev/null
fi
echo " Formatting private key for output..."
private_key="$(echo "$private_key" | awk 'BEGIN {ORS="\\n"} {print}' | head -c -2)" &> /dev/null
echo "::add-mask::$private_key"
echo "private-key=$private_key" >> "$GITHUB_OUTPUT"
echo "✔ Private key format detected and securely passed to create-github-app-token action..."
env:
INPUT_PRIVATE_KEY: "${{ inputs.private-key }}"
- uses: actions/create-github-app-token@v2
if: >-
steps.preflight.outputs.run == 'true' &&
inputs.app-id != null &&
inputs.app-id != ''
id: github-app-token
with:
app_id: ${{ inputs.app-id }}
installation_id: ${{ inputs.installation-id }}
github_api_url: ${{ inputs.github-api-url }}
permissions: ${{ inputs.permissions }}
private_key: ${{ inputs.private-key }}
repository: ${{ github.repository }}
- name: Determine which token to use
app-id: ${{ inputs.app-id }}
private-key: ${{ steps.resolve-private-key.outputs.private-key }}
- name: resolve token
if: steps.preflight.outputs.run == 'true'
id: token
shell: bash
run: |-
echo "token=${APP_TOKEN:-$INPUT_TOKEN}" >> "$GITHUB_OUTPUT"
env:
APP_TOKEN: "${{ steps.github-app-token.outputs.token }}"
INPUT_TOKEN: "${{ inputs.token }}"
shell: bash
- uses: google-github-actions/release-please-action@v3
- uses: googleapis/release-please-action@v4
if: steps.preflight.outputs.run == 'true'
id: release-please
with:
command: manifest
token: ${{ steps.token.outputs.token }}
default-branch: ${{ inputs.default-branch }}
target-branch: ${{ steps.preflight.outputs.target-branch }}
config-file: ${{ inputs.config-file }}
manifest-file: ${{ inputs.manifest-file }}
github-api-url: ${{ inputs.github-api-url }}
github-graphql-url: ${{ inputs.github-api-url }}
repo-url: ${{ inputs.repository }}