mirror of
https://github.com/jimeh/release-please-manifest-action.git
synced 2026-02-19 09:06:42 +00:00
Compare commits
15 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 368587e2e3 | |||
| ecf7033397 | |||
|
|
84f33fd282 | ||
| d822d979e9 | |||
|
ba6427cb61
|
|||
|
|
bfd8923580 | ||
|
068da4bf6a
|
|||
|
1406584702
|
|||
|
8e21350bd9
|
|||
| 4a3aba93da | |||
|
e774497e31
|
|||
|
0b17a543d3
|
|||
|
9c79e61e2c
|
|||
|
|
094ab0890e | ||
| 72e49f5d6f |
2
.github/.release-please-manifest.json
vendored
2
.github/.release-please-manifest.json
vendored
@@ -1,3 +1,3 @@
|
||||
{
|
||||
".": "1.0.2"
|
||||
".": "3.0.0"
|
||||
}
|
||||
|
||||
11
.github/release-please-config.json
vendored
11
.github/release-please-config.json
vendored
@@ -1,15 +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
|
||||
]
|
||||
}
|
||||
},
|
||||
"$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json"
|
||||
|
||||
10
.github/workflows/ci.yml
vendored
10
.github/workflows/ci.yml
vendored
@@ -6,10 +6,10 @@ jobs:
|
||||
docs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-node@v3
|
||||
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
- uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
|
||||
with:
|
||||
node-version: 16
|
||||
node-version: 20
|
||||
- run: make docs
|
||||
- name: Verify no changes after docs build
|
||||
run: |
|
||||
@@ -19,14 +19,14 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
if: github.ref == 'refs/heads/main'
|
||||
steps:
|
||||
- uses: jimeh/release-please-manifest-action@v1
|
||||
- uses: jimeh/release-please-manifest-action@84f33fd2828210488c36f3e0a7e3209252d2ae7d # v3.0.0
|
||||
id: release
|
||||
with:
|
||||
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: jimeh/update-tags-action@v1
|
||||
uses: jimeh/update-tags-action@e58fa0f2f874a12bf0eb90ef8ab4256808c0f373 # v1.0.1
|
||||
with:
|
||||
tags: |
|
||||
v${{ steps.release.outputs.major }}
|
||||
|
||||
34
CHANGELOG.md
34
CHANGELOG.md
@@ -1,5 +1,39 @@
|
||||
# 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)
|
||||
|
||||
|
||||
|
||||
163
README.md
163
README.md
@@ -1,51 +1,41 @@
|
||||
<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][].
|
||||
[](https://github.com/jimeh/release-please-manifest-action/releases)
|
||||
[](https://github.com/jimeh/release-please-manifest-action/issues)
|
||||
[](https://github.com/jimeh/release-please-manifest-action/pulls)
|
||||
[](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.
|
||||
- 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 assume you have placed your `release-please-config.json` and
|
||||
`.release-please-manifest.json` within the `.github` directory 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.
|
||||
@@ -57,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
|
||||
@@ -73,7 +63,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
if: github.ref == 'refs/heads/main'
|
||||
steps:
|
||||
- uses: jimeh/release-please-manifest-action@v1
|
||||
- uses: jimeh/release-please-manifest-action@v3
|
||||
```
|
||||
|
||||
<!-- x-release-please-end -->
|
||||
@@ -88,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
|
||||
```
|
||||
@@ -119,7 +108,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
if: github.ref == 'refs/heads/main'
|
||||
steps:
|
||||
- uses: jimeh/release-please-manifest-action@v1
|
||||
- uses: jimeh/release-please-manifest-action@v3
|
||||
with:
|
||||
token: ${{ secrets.RELEASE_PAT_TOKEN }}
|
||||
```
|
||||
@@ -136,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
|
||||
```
|
||||
@@ -166,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 -->
|
||||
|
||||
@@ -179,7 +166,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
if: github.ref == 'refs/heads/main'
|
||||
steps:
|
||||
- uses: jimeh/release-please-manifest-action@v1
|
||||
- uses: jimeh/release-please-manifest-action@v3
|
||||
with:
|
||||
app-id: ${{ secrets.RELEASE_BOT_APP_ID }}
|
||||
private-key: ${{ secrets.RELEASE_BOT_PRIVATE_KEY }}
|
||||
@@ -197,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
|
||||
```
|
||||
@@ -215,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 -->
|
||||
|
||||
@@ -243,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)
|
||||
|
||||
186
action.yml
186
action.yml
@@ -4,89 +4,52 @@ 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
|
||||
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 }}
|
||||
@@ -99,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 }}
|
||||
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 }}
|
||||
|
||||
Reference in New Issue
Block a user