1 Commits

Author SHA1 Message Date
0cdb51c5bb chore(deps)!: upgrade dependant actions to new major versions
This upgrades `tibdex/github-app-token` to `v2` and
`google-github-actions/release-please-action` to `v4`.

Among other things, this ensures that we are compatible with the GitHub
Actions upgrade to Node 20, and avoiding issues when Node 16-based
actions are deprecated sometime this spring.

BREAKING CHANGE: Underlying actions have been upgraded, requiring changes to available inputs
2024-02-26 19:31:44 +00:00
6 changed files with 183 additions and 250 deletions

View File

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

View File

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

View File

@@ -6,10 +6,10 @@ jobs:
docs: docs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: actions/checkout@v3
- uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 - uses: actions/setup-node@v3
with: with:
node-version: 20 node-version: 16
- run: make docs - run: make docs
- name: Verify no changes after docs build - name: Verify no changes after docs build
run: | run: |
@@ -19,14 +19,14 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main' if: github.ref == 'refs/heads/main'
steps: steps:
- uses: jimeh/release-please-manifest-action@84f33fd2828210488c36f3e0a7e3209252d2ae7d # v3.0.0 - uses: jimeh/release-please-manifest-action@v1
id: release id: release
with: with:
app-id: ${{ secrets.RELEASE_BOT_APP_ID }} app-id: ${{ secrets.RELEASE_BOT_APP_ID }}
private-key: ${{ secrets.RELEASE_BOT_PRIVATE_KEY }} private-key: ${{ secrets.RELEASE_BOT_PRIVATE_KEY }}
- name: MAJOR and MAJOR.MINOR tags - name: MAJOR and MAJOR.MINOR tags
if: ${{ steps.release.outputs.release_created }} if: ${{ steps.release.outputs.release_created }}
uses: jimeh/update-tags-action@e58fa0f2f874a12bf0eb90ef8ab4256808c0f373 # v1.0.1 uses: jimeh/update-tags-action@v1
with: with:
tags: | tags: |
v${{ steps.release.outputs.major }} v${{ steps.release.outputs.major }}

View File

@@ -1,39 +1,5 @@
# Changelog # 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) ## [1.0.2](https://github.com/jimeh/release-please-manifest-action/compare/v1.0.1...v1.0.2) (2023-05-18)

166
README.md
View File

@@ -1,41 +1,51 @@
<div align="center"> <h1 align="center">
release-please-manifest-action
</h1>
# release-please-manifest-action <p align="center">
<strong>
Opinionated action for running release-please in manifest mode.
</strong>
</p>
**Opinionated action for running release-please in manifest mode.** <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>
[![Latest Release](https://img.shields.io/github/release/jimeh/release-please-manifest-action.svg)](https://github.com/jimeh/release-please-manifest-action/releases) A composite action which wraps [release-please-action][] and
[![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-app-token][] actions, with opinionated default settings focused on
[![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) running [release-please][] in [manifest mode][].
[![License](https://img.shields.io/github/license/jimeh/release-please-manifest-action.svg)](https://github.com/jimeh/release-please-manifest-action/blob/main/LICENSE)
An opinionated composite action that wraps [release-please-action][] and [release-please-action]:
[create-github-app-token][]. https://github.com/google-github-actions/release-please-action
[github-app-token]: https://github.com/tibdex/github-app-token
</div> [release-please]: https://github.com/googleapis/release-please
[release-please-action]: https://github.com/googleapis/release-please-action
[create-github-app-token]: https://github.com/actions/create-github-app-token
[manifest mode]: [manifest mode]:
https://github.com/googleapis/release-please/blob/main/docs/manifest-releaser.md https://github.com/googleapis/release-please/blob/main/docs/manifest-releaser.md
# Features # Features
- Supports having release-please authenticate as a GitHub App. - Focuses on and only supports running release-please's manifest command.
- Supports dynamic target branch based on regular expression pattern, enabling - Optionally supports having release-please authenticate as a GitHub App.
maintenance releases.
- Defaults to looking for release-please's config and manifest files within the - Defaults to looking for release-please's config and manifest files within the
top-level `.github` directory instead of in the repository root. top-level `.github` directory instead of in the repository root.
_Note: This action is not well suited for multi package/root release-please # Examples
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._
# Usage All examples assume you have placed your `release-please-config.json` and
`.release-please-manifest.json` within the `.github` directory in the root of
All usage examples below assume you have placed your the repository.
`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 See release-please's [manifest-releaser][manifest mode] documentation for
details about the config and manifest files. details about the config and manifest files.
@@ -47,8 +57,8 @@ that is automatically available to all actions.
This will prevent checks / GitHub Actions running against any Release Pull 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 Requests raised by release-please. This is a feature of GitHub as a means of
trying to avoid GitHub Actions jobs triggering themselves, and causing infinite trying to avoid GitHub Actions jobs triggering themselves, causing an endless
loops. loop.
If you need checks to run against Release Pull Requests, you will need to have 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 release-please authenticate with a Personal Access Token (PAT), or as a GitHub
@@ -63,7 +73,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main' if: github.ref == 'refs/heads/main'
steps: steps:
- uses: jimeh/release-please-manifest-action@v3 - uses: jimeh/release-please-manifest-action@v1
``` ```
<!-- x-release-please-end --> <!-- x-release-please-end -->
@@ -78,9 +88,10 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main' if: github.ref == 'refs/heads/main'
steps: steps:
- uses: googleapis/release-please-action@v4 - uses: google-github-actions/release-please-action@v3
id: release-please id: release-please
with: with:
command: manifest
config-file: .github/release-please-config.json config-file: .github/release-please-config.json
manifest-file: .github/.release-please-manifest.json manifest-file: .github/.release-please-manifest.json
``` ```
@@ -108,7 +119,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main' if: github.ref == 'refs/heads/main'
steps: steps:
- uses: jimeh/release-please-manifest-action@v3 - uses: jimeh/release-please-manifest-action@v1
with: with:
token: ${{ secrets.RELEASE_PAT_TOKEN }} token: ${{ secrets.RELEASE_PAT_TOKEN }}
``` ```
@@ -125,10 +136,11 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main' if: github.ref == 'refs/heads/main'
steps: steps:
- uses: googleapis/release-please-action@v4 - uses: google-github-actions/release-please-action@v3
id: release-please id: release-please
with: with:
token: ${{ secrets.RELEASE_PAT_TOKEN }} token: ${{ secrets.RELEASE_PAT_TOKEN }}
command: manifest
config-file: .github/release-please-config.json config-file: .github/release-please-config.json
manifest-file: .github/.release-please-manifest.json manifest-file: .github/.release-please-manifest.json
``` ```
@@ -154,8 +166,9 @@ or a user's personal access token:
Below we assume you have already setup `RELEASE_BOT_APP_ID` and Below we assume you have already setup `RELEASE_BOT_APP_ID` and
`RELEASE_BOT_PRIVATE_KEY` secrets in the repository or organization. `RELEASE_BOT_PRIVATE_KEY` secrets in the repository or organization.
To set the private key secret, simply copy/paste the contents of the `*.pem` To set the private key secret, it is easiest to base64 encode the contents of
file you get from the GitHub App's configuration page. the `*.pem` file you get from the GitHub App's configuration page. The base64
encoded string should not have any line-breaks.
<!-- x-release-please-start-major --> <!-- x-release-please-start-major -->
@@ -166,7 +179,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main' if: github.ref == 'refs/heads/main'
steps: steps:
- uses: jimeh/release-please-manifest-action@v3 - uses: jimeh/release-please-manifest-action@v1
with: with:
app-id: ${{ secrets.RELEASE_BOT_APP_ID }} app-id: ${{ secrets.RELEASE_BOT_APP_ID }}
private-key: ${{ secrets.RELEASE_BOT_PRIVATE_KEY }} private-key: ${{ secrets.RELEASE_BOT_PRIVATE_KEY }}
@@ -184,15 +197,16 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main' if: github.ref == 'refs/heads/main'
steps: steps:
- uses: actions/create-github-app-token@v2 - uses: tibdex/github-app-token@v1
id: github-app-token id: github-app-token
with: with:
app-id: ${{ secrets.RELEASE_BOT_APP_ID }} app_id: ${{ secrets.RELEASE_BOT_APP_ID }}
private-key: ${{ secrets.RELEASE_BOT_PRIVATE_KEY }} private_key: ${{ secrets.RELEASE_BOT_PRIVATE_KEY }}
- uses: googleapis/release-please-action@v4 - uses: google-github-actions/release-please-action@v3
id: release-please id: release-please
with: with:
token: ${{ steps.github-app-token.outputs.token }} token: ${{ steps.github-app-token.outputs.token }}
command: manifest
config-file: .github/release-please-config.json config-file: .github/release-please-config.json
manifest-file: .github/.release-please-manifest.json manifest-file: .github/.release-please-manifest.json
``` ```
@@ -201,47 +215,27 @@ _Note: Outputs are not included in this equivalence example._
</details> </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 # Reference
<!-- action-docs-inputs --> <!-- action-docs-inputs -->
## Inputs ## Inputs
| parameter | description | required | default | | parameter | description | required | default |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- | ------------------------------------- | | ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ------------------------------------- |
| token | GitHub token used to authenticate. | `false` | ${{ github.token }} | | 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` | | | 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` | | | 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` | | | installation-retrieval-mode | The mode used to retrieve the installation for which the token will be requested. Must be one of: id, organization, repository, or user. For details see: https://github.com/tibdex/github-app-token | `false` | repository |
| 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` | | | installation-retrieval-payload | The payload used to retrieve the installation. | `false` | ${{ github.repository }} |
| config-file | Path to config file within the project. | `false` | .github/release-please-config.json | | 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` | |
| manifest-file | Path to manifest file within the project. | `false` | .github/.release-please-manifest.json | | github-api-url | Configure github API URL. | `false` | ${{ github.api_url }} |
| target-branch | branch to open pull release PR against (detected by default) | `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 |
| path | create a release from a path other than the repository's root | `false` | |
| fork | If true, send the PR from a fork. This requires the token to be a user that can create forks (e.g. not the default GITHUB_TOKEN) | `false` | false |
| proxy-server | Set proxy sever when you run this action behind a proxy. Format is host:port e.g. proxy-host.com:8080 | `false` | |
<!-- action-docs-inputs --> <!-- action-docs-inputs -->
@@ -252,29 +246,27 @@ when cherry picking.
| parameter | description | | parameter | description |
| ---------------- | -------------------------------------------------------- | | ---------------- | -------------------------------------------------------- |
| release_created | Whether or not a release was created. | | release_created | Whether or not a release was created. |
| upload_url | Release upload URL. | | releases_created | Whether or not a release was created. |
| html_url | Release URL. | | id | Release ID. |
| name | Release name. |
| tag_name | Release tag 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. |
| version | Version that was released. | | version | Version that was released. |
| major | Major version that was released. | | major | Major version that was released. |
| minor | Minor version that was released. | | minor | Minor version that was released. |
| patch | Patch version that was released. | | patch | Patch version that was 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. | | paths_released | Paths that were released. |
| id | Release ID. | | pr | Pull request number. |
| 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. | | prs | Pull request numbers. |
| raw | All outputs from release-please action as a JSON string. | | release-please | All outputs from release-please action as a JSON string. |
<!-- action-docs-outputs --> <!-- action-docs-outputs -->
# License # License
[CC0 1.0 Universal](https://github.com/jimeh/release-please-manifest-action/blob/main/LICENSE) [CC0 1.0 Universal](http://creativecommons.org/publicdomain/zero/1.0/)

View File

@@ -7,49 +7,100 @@ author: "jimeh"
inputs: inputs:
token: token:
description: "GitHub token used to authenticate." description: "GitHub token used to authenticate."
default: ${{ github.token }} required: false
default: "${{ github.token }}"
app-id: app-id:
description: >- description: >-
ID of the GitHub App to use for authentication. If set, takes precedence ID of the GitHub App to use for authentication. If set, takes precedence
over token input. over token input.
required: false
private-key: private-key:
description: >- description: >-
Private key of the GitHub App (can be Base64 encoded). Required when Private key of the GitHub App (can be Base64 encoded). Required when
app-id is provided. app-id is provided.
required: false
installation-retrieval-mode:
description: >-
The mode used to retrieve the installation for which the token will be
requested. Must be one of: id, organization, repository, or user. For
details see: https://github.com/tibdex/github-app-token
default: "repository"
installation-retrieval-payload:
description: "The payload used to retrieve the installation."
default: "${{ github.repository }}"
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 }}"
target-branch: target-branch:
description: >- description: "Branch to open pull release PR against (detected by default)"
Branch to open pull release PR against. Defaults to the repository's required: false
default branch.
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: "" default: ""
config-file: config-file:
description: Path to config file within the project. description: "Pat to config file within the project."
required: false
default: ".github/release-please-config.json" default: ".github/release-please-config.json"
manifest-file: manifest-file:
description: Path to manifest file within the project. description: "Path to manifest file within the project."
required: false
default: ".github/.release-please-manifest.json" default: ".github/.release-please-manifest.json"
path:
description: >-
Create a release from a path other than the repository's root.
required: false
default: ""
fork:
description: >-
If true, send the PR from a fork. This requires the token to be a user
that can create forks (e.g. not the default GITHUB_TOKEN)
required: false
default: "false"
proxy-server:
description: >-
Set proxy sever when you run this action behind a proxy. Format is
host:port e.g. proxy-host.com:8080
required: false
default: ""
outputs: outputs:
release_created: release_created:
description: "Whether or not a release was created." description: "Whether or not a release was created."
value: ${{ steps.release-please.outputs.release_created }} value: ${{ steps.release-please.outputs.release_created }}
upload_url: releases_created:
description: "Release upload URL." description: "Whether or not a release was created."
value: ${{ steps.release-please.outputs.upload_url }} value: ${{ steps.release-please.outputs.releases_created }}
html_url: id:
description: "Release URL." description: "Release ID."
value: ${{ steps.release-please.outputs.html_url }} value: ${{ steps.release-please.outputs.id }}
name:
description: "Release name."
value: ${{ steps.release-please.outputs.name }}
tag_name: tag_name:
description: "Release tag name." description: "Release tag name."
value: ${{ steps.release-please.outputs.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 }}
version: version:
description: "Version that was released." description: "Version that was released."
value: ${{ steps.release-please.outputs.version }} value: ${{ steps.release-please.outputs.version }}
@@ -62,125 +113,50 @@ outputs:
patch: patch:
description: "Patch version that was released." description: "Patch version that was released."
value: ${{ steps.release-please.outputs.patch }} value: ${{ steps.release-please.outputs.patch }}
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: paths_released:
description: "Paths that were released." description: "Paths that were released."
value: ${{ steps.release-please.outputs.paths_released }} value: ${{ steps.release-please.outputs.paths_released }}
id: pr:
description: "Release ID." description: "Pull request number."
value: ${{ steps.release-please.outputs.id }} value: ${{ steps.release-please.outputs.pr }}
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: prs:
description: "Pull request numbers." description: "Pull request numbers."
value: ${{ steps.release-please.outputs.prs }} value: ${{ steps.release-please.outputs.prs }}
raw: release-please:
description: "All outputs from release-please action as a JSON string." description: "All outputs from release-please action as a JSON string."
value: ${{ toJSON(steps.release-please.outputs) }} value: ${{ toJSON(steps.release-please.outputs) }}
runs: runs:
using: "composite" using: "composite"
steps: steps:
- name: preflight - uses: tibdex/github-app-token@v2
shell: bash if: inputs.app-id != null && inputs.app-id != ''
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 id: github-app-token
with: with:
app-id: ${{ inputs.app-id }} app_id: ${{ inputs.app-id }}
private-key: ${{ steps.resolve-private-key.outputs.private-key }} installation_retrieval_mode: ${{ inputs.installation-retrieval-mode }}
installation_retrieval_payload: ${{ inputs.installation-retrieval-payload }}
github_api_url: ${{ inputs.github-api-url }}
permissions: ${{ inputs.permissions }}
private_key: ${{ inputs.private-key }}
- name: resolve token - name: resolve token
if: steps.preflight.outputs.run == 'true'
id: token id: token
shell: bash
run: |- run: |-
echo "token=${APP_TOKEN:-$INPUT_TOKEN}" >> "$GITHUB_OUTPUT" echo "token=${APP_TOKEN:-$INPUT_TOKEN}" >> "$GITHUB_OUTPUT"
env: env:
APP_TOKEN: "${{ steps.github-app-token.outputs.token }}" APP_TOKEN: "${{ steps.github-app-token.outputs.token }}"
INPUT_TOKEN: "${{ inputs.token }}" INPUT_TOKEN: "${{ inputs.token }}"
- uses: googleapis/release-please-action@v4 shell: bash
if: steps.preflight.outputs.run == 'true' - uses: google-github-actions/release-please-action@v4
id: release-please id: release-please
with: with:
token: ${{ steps.token.outputs.token }} token: ${{ steps.token.outputs.token }}
target-branch: ${{ steps.preflight.outputs.target-branch }} target-branch: ${{ inputs.target-branch }}
path: ${{ inputs.path }}
config-file: ${{ inputs.config-file }} config-file: ${{ inputs.config-file }}
manifest-file: ${{ inputs.manifest-file }} manifest-file: ${{ inputs.manifest-file }}
github-api-url: ${{ inputs.github-api-url }}
github-graphql-url: ${{ inputs.github-api-url }}
repo-url: ${{ inputs.repository }}
fork: ${{ inputs.fork }}
proxy-server: ${{ inputs.proxy-server }}