googleapis / googleapis/release-please-action
Unable to signoff commits since v4
- Dominant language
- TypeScript
- Stars
- 2.5k
- Forks
- 327
- PR merge metrics
- No merged PRs in 30d
Description
### TL;DR
As per the title - It appears as if though the interface between release-please-action and release-please itself results in the `signoff` property being ignored.
### Expected behavior
When migrating from v3 -> v4
Add the `signoff` key to my `release-please-config.json` file
Release please continues to signoff commits
### Observed behavior
No commit signing appears to be happening
### Action YAML
Happy to share this but it's mostly irrelevant. Heres the original release-please config after renovate updated us to v4 (we got some warning logs in the `release-please` task about unrecognised properties):
```yaml
- name: Release please
uses: google-github-actions/release-please-action@v4
id: release
with:
token: ${{ secrets.RP_TOKEN}}
command: manifest
monorepo-tags: true
signoff: "Obfuscated "
```
Heres the two keys I added to the `release-please-config.json` as per the migration recommendations
```json
"signoff": "Obfuscated ",
"include-component-in-tag": true,
```
And heres the release-please yaml post actioning the migration recommendations
```yaml
- name: Release please
uses: google-github-actions/release-please-action@v4
id: release
with:
token: ${{ secrets.RP_TOKEN}}
```
### Log output
_No response_
### Additional information
Having done some digging..
The `Manifest` constructor expects the `signoff` property to be in `manifestOptions` (the 5th argument to the constructor)
https://github.com/googleapis/release-please/blob/main/src/manifest.ts#L356
When `fromManifest` is called it sets the 5th argument of the Manifest constructor to [the following](https://github.com/googleapis/release-please/blob/main/src/manifest.ts#L409-L427):
```js
{
manifestPath: manifestFile,
...manifestOptions,
...manifestOptionOverrides,
}
```
`manifestOptionOverrides` is only passed in by [release-please-action in certain circumstances](https://github.com/google-github-actions/release-please-action/blob/main/src/index.ts#L104-L110)
`manifestOptions` comes from the `parseConfig` function in release-please
The `parseConfig` function does not extract the `signoff` property into the `options`:
https://github.com/googleapis/release-please/blob/main/src/manifest.ts#L1392-L1406
This might need to be an improvement in the `release-please` project but thought i'd raise it here as it has meant our upgrade to v4 has been unsuccessful.
Contributor guide
Research direction
Start by comparing release-please-action/src/index.ts with release-please/src/manifest.ts, especially Manifest.fromManifest, the constructor, and parseConfig around the referenced lines. Confirm where the signoff option is dropped during v4 configuration parsing and determine whether the fix belongs in release-please or this action; done means manifest configuration preserves signoff and release commits are signed.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- github-actions, typescript
- Domain
- ci-cd, release
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100