31 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
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
github-actions[bot]
5a9880757d chore(main): release 0.1.0 (#7) 2023-05-08 01:26:42 +01:00
9d21ba2763 chore(release): rename release-please manifest file 2023-05-08 01:25:23 +01:00
4d6baa6f81 feat(action)!: change default manifest file path
Brings this action more inline with the upstream action, by keeping the
config and manifest filenames identical, and simply moving them into the
".github" directory.

BREAKING CHANGE: Change default manifest path to `.github/.release-please-manifest.json`.
2023-05-08 01:22:13 +01:00
github-actions[bot]
1d94b44003 chore(main): release 0.0.6 (#6) 2023-05-08 01:14:05 +01:00
8634e410ba docs(readme): remove permissions directive from examples 2023-05-08 01:10:40 +01:00
04d3b1edbb fix(release): remove permissions block
Instead lets set permissions in repository settings and see if that
works without the permissions settings in the workflow.
2023-05-08 01:07:55 +01:00
c2d85862fd fix(release): attempt to fix release job permissions
It seems the "pull-request: write" permission on the job did not work.
So we are now setting permissions at the workflow level
2023-05-08 01:06:44 +01:00
b60e27befe feat(release): remove use of GitHub App
We don't currently have any CI checks to run on pull requests, so
there's no need to author Release PRs from an app.
2023-05-08 00:57:10 +01:00
a056b80ec3 docs(readme): update examples 2023-05-08 00:57:10 +01:00
jimehbot[bot]
4205a83fff chore(main): release 0.0.5 (#5) 2023-05-08 00:47:43 +01:00
e012dc88b9 fix(release): actually tag MAJOR 2023-05-08 00:44:56 +01:00
jimehbot[bot]
1255f9741b chore(main): release 0.0.4 (#4)
Co-authored-by: jimehbot[bot] <132453784+jimehbot[bot]@users.noreply.github.com>
2023-05-08 00:41:55 +01:00
77312c11a9 fix(release): attempt to sign major and minor tags 2023-05-08 00:38:46 +01:00
jimehbot[bot]
ccc95c2796 chore(main): release 0.0.3 (#3) 2023-05-07 22:49:49 +01:00
08e227b305 fix(release): use full version in tag annotations 2023-05-07 22:39:31 +01:00
8 changed files with 187 additions and 88 deletions

3
.github/.release-please-manifest.json vendored Normal file
View File

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

View File

@@ -9,8 +9,7 @@
"bump-minor-pre-major": true,
"bump-patch-for-minor-pre-major": true,
"draft": false,
"prerelease": false,
"initial-version": "0.0.1"
"prerelease": false
}
},
"$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json"

View File

@@ -1,3 +0,0 @@
{
".": "0.0.2"
}

View File

@@ -1,36 +1,33 @@
---
name: CI
name: Release
on: push
jobs:
docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 16
- 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'
permissions:
contents: write
steps:
- uses: jimeh/release-please-manifest-action@main
- uses: jimeh/release-please-manifest-action@v1
id: release
with:
app-id: ${{ secrets.RELEASE_BOT_APP_ID }}
private-key: ${{ secrets.RELEASE_BOT_PRIVATE_KEY }}
- uses: actions/checkout@v3
- name: MAJOR and MAJOR.MINOR tags
if: ${{ steps.release.outputs.release_created }}
- name: Tag major and minor versions
if: ${{ steps.release.outputs.release_created }}
run: |
git config user.name 'jimehbot[bot]'
git config user.email '132453784+jimehbot[bot]@users.noreply.github.com'
git remote add gh-token "https://${GITHUB_TOKEN}@github.com/${{ github.repository }}.git"
git tag -d "$MAJOR_TAG" || true
git tag -d "$MINOR_TAG" || true
git push origin ":${MAJOR_TAG}" || true
git push origin ":${MINOR_TAG}" || true
git tag -a "$MAJOR_TAG" -m "Release ${MAJOR_TAG}"
git tag -a "$MINOR_TAG" -m "Release ${MINOR_TAG}"
git push origin "$MAJOR_TAG"
git push origin "$MINOR_TAG"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN}}
MAJOR_TAG: v${{ steps.release.outputs.major }}
MINOR_TAG: v${{ steps.release.outputs.major }}.${{ steps.release.outputs.minor }}
uses: jimeh/update-tags-action@v1
with:
tags: |
v${{ steps.release.outputs.major }}
v${{ steps.release.outputs.major }}.${{ steps.release.outputs.minor }}

View File

@@ -1,5 +1,78 @@
# Changelog
## [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)
### ⚠ BREAKING CHANGES
* **action:** Change default manifest path to `.github/.release-please-manifest.json`.
### Features
* **action:** change default manifest file path ([4d6baa6](https://github.com/jimeh/release-please-manifest-action/commit/4d6baa6f81afde8c72681281cc4f6a9f675b8dda))
## [0.0.6](https://github.com/jimeh/release-please-manifest-action/compare/v0.0.5...v0.0.6) (2023-05-08)
### Features
* **release:** remove use of GitHub App ([b60e27b](https://github.com/jimeh/release-please-manifest-action/commit/b60e27befea7298731468ae0a66eff098c362d86))
### Bug Fixes
* **release:** attempt to fix release job permissions ([c2d8586](https://github.com/jimeh/release-please-manifest-action/commit/c2d85862fdd1bdcb9b7b10dcb3d35d3d60f4afc6))
* **release:** remove permissions block ([04d3b1e](https://github.com/jimeh/release-please-manifest-action/commit/04d3b1edbb4c7bd5f1b63b6bb3f65ca738ee1e52))
## [0.0.5](https://github.com/jimeh/release-please-manifest-action/compare/v0.0.4...v0.0.5) (2023-05-07)
### Bug Fixes
* **release:** actually tag MAJOR ([e012dc8](https://github.com/jimeh/release-please-manifest-action/commit/e012dc88b94fb4ce8433076d45479ee4d0ed01b2))
## [0.0.4](https://github.com/jimeh/release-please-manifest-action/compare/v0.0.3...v0.0.4) (2023-05-07)
### Bug Fixes
* **release:** attempt to sign major and minor tags ([77312c1](https://github.com/jimeh/release-please-manifest-action/commit/77312c11a926651d7f66d4fed3dcd5d0b50727ae))
## [0.0.3](https://github.com/jimeh/release-please-manifest-action/compare/v0.0.2...v0.0.3) (2023-05-07)
### Bug Fixes
* **release:** use full version in tag annotations ([08e227b](https://github.com/jimeh/release-please-manifest-action/commit/08e227b3057a732f0947407b8657123e5418e77c))
## [0.0.2](https://github.com/jimeh/release-please-manifest-action/compare/v0.0.1...v0.0.2) (2023-05-07)

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

View File

@@ -38,13 +38,18 @@ running [release-please][] in [manifest mode][].
- 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`
- Defaults to looking for release-please's config and manifest files within the
top-level `.github` directory instead of in the repository root.
# Examples
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.
See release-please's [manifest-releaser][manifest mode] documentation for
details about the config and manifest files.
## Basic (Actions Token)
This example will have release-please authenticate using `secrets.GITHUB_TOKEN`
@@ -66,9 +71,9 @@ on: push
jobs:
release-please:
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master'
if: github.ref == 'refs/heads/main'
steps:
- uses: jimeh/release-please-manifest-action@v0
- uses: jimeh/release-please-manifest-action@v1
```
<!-- x-release-please-end -->
@@ -81,14 +86,14 @@ on: push
jobs:
release-please:
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master'
if: github.ref == 'refs/heads/main'
steps:
- uses: google-github-actions/release-please-action@v3
id: release-please
with:
command: manifest
config-file: .github/release-please-config.json
manifest-file: .github/release-please-manifest.json
manifest-file: .github/.release-please-manifest.json
```
_Note: Outputs are not included in this equivalence example._
@@ -112,9 +117,9 @@ on: push
jobs:
release-please:
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master'
if: github.ref == 'refs/heads/main'
steps:
- uses: jimeh/release-please-manifest-action@v0
- uses: jimeh/release-please-manifest-action@v1
with:
token: ${{ secrets.RELEASE_PAT_TOKEN }}
```
@@ -129,7 +134,7 @@ on: push
jobs:
release-please:
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master'
if: github.ref == 'refs/heads/main'
steps:
- uses: google-github-actions/release-please-action@v3
id: release-please
@@ -137,7 +142,7 @@ jobs:
token: ${{ secrets.RELEASE_PAT_TOKEN }}
command: manifest
config-file: .github/release-please-config.json
manifest-file: .github/release-please-manifest.json
manifest-file: .github/.release-please-manifest.json
```
_Note: Outputs are not included in this equivalence example._
@@ -162,7 +167,7 @@ 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
`*.pem` file you get from the GitHub App's configuration page. The base64
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 -->
@@ -172,9 +177,9 @@ on: push
jobs:
release-please:
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master'
if: github.ref == 'refs/heads/main'
steps:
- uses: jimeh/release-please-manifest-action@v0
- uses: jimeh/release-please-manifest-action@v1
with:
app-id: ${{ secrets.RELEASE_BOT_APP_ID }}
private-key: ${{ secrets.RELEASE_BOT_PRIVATE_KEY }}
@@ -190,7 +195,7 @@ on: push
jobs:
release-please:
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master'
if: github.ref == 'refs/heads/main'
steps:
- uses: tibdex/github-app-token@v1
id: github-app-token
@@ -203,7 +208,7 @@ jobs:
token: ${{ steps.github-app-token.outputs.token }}
command: manifest
config-file: .github/release-please-config.json
manifest-file: .github/release-please-manifest.json
manifest-file: .github/.release-please-manifest.json
```
_Note: Outputs are not included in this equivalence example._
@@ -216,18 +221,21 @@ _Note: Outputs are not included in this equivalence example._
## 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` | |
| 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 |
| installation-retrieval-payload | The payload used to retrieve the installation. | `false` | ${{ github.repository }} |
| 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 }} |
| 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 -->
@@ -242,7 +250,7 @@ _Note: Outputs are not included in this equivalence example._
| id | Release ID. |
| name | Release name. |
| tag_name | Release tag name. |
| sha | Release sha |
| sha | Release SHA. |
| body | Release body. |
| html_url | Release URL. |
| draft | Whether or not the release is a draft. |

View File

@@ -1,16 +1,14 @@
---
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.
description: "GitHub token used to authenticate."
required: false
default: ${{ github.token }}
default: "${{ github.token }}"
app-id:
description: >-
ID of the GitHub App to use for authentication. If set, takes precedence
@@ -21,38 +19,53 @@ inputs:
Private key of the GitHub App (can be Base64 encoded). Required when
app-id is provided.
required: false
installation-id:
installation-retrieval-mode:
description: >-
ID of the installation for which the app token will be requested. Defaults
to the ID of the repository's installation.
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.
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:
description: >-
Branch to open pull release PR against. Defaults to the repository's
default branch.
default: "${{ github.api_url }}"
target-branch:
description: "Branch to open pull release PR against (detected by default)"
required: false
default: ""
config-file:
description: Pat to config file within the project.
description: "Pat to config file within the project."
required: false
default: ".github/release-please-config.json"
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:
release_created:
@@ -71,7 +84,7 @@ outputs:
description: "Release tag name."
value: ${{ steps.release-please.outputs.tag_name }}
sha:
description: "Release sha"
description: "Release SHA."
value: ${{ steps.release-please.outputs.sha }}
body:
description: "Release body."
@@ -116,17 +129,17 @@ outputs:
runs:
using: "composite"
steps:
- uses: tibdex/github-app-token@v1
- uses: tibdex/github-app-token@v2
if: inputs.app-id != null && inputs.app-id != ''
id: github-app-token
with:
app_id: ${{ inputs.app-id }}
installation_id: ${{ inputs.installation-id }}
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 }}
repository: ${{ github.repository }}
- name: Determine which token to use
- name: resolve token
id: token
run: |-
echo "token=${APP_TOKEN:-$INPUT_TOKEN}" >> "$GITHUB_OUTPUT"
@@ -134,14 +147,16 @@ runs:
APP_TOKEN: "${{ steps.github-app-token.outputs.token }}"
INPUT_TOKEN: "${{ inputs.token }}"
shell: bash
- uses: google-github-actions/release-please-action@v3
- uses: google-github-actions/release-please-action@v4
id: release-please
with:
command: manifest
token: ${{ steps.token.outputs.token }}
default-branch: ${{ inputs.default-branch }}
target-branch: ${{ inputs.target-branch }}
path: ${{ inputs.path }}
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 }}
fork: ${{ inputs.fork }}
proxy-server: ${{ inputs.proxy-server }}