googleapis / googleapis/release-please-action

Unable to signoff commits since v4

Open
#904 3 comments 9 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.