-
Couldn't load subscription status.
- Fork 7.3k
Print friendly error when release create fails due to missing workflow OAuth scope
#9791
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weβll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Print friendly error when release create fails due to missing workflow OAuth scope
#9791
Conversation
release create fails due to missing workflow OAuth scope
|
@BagToad : Is there anything you need to go from a draft to a full PR? I wasn't sure if you created a draft for discussion or feedback purposes. Just making sure to understand what's needed here. π |
5b67887 to
4502498
Compare
4502498 to
68f3ef7
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Solid work! πͺ Some random thoughts and concerns
f1b794b to
65a26ea
Compare
Refactor the logic for checking `workflow` scope checking in releases to be in the positive - check if the scope is there, not check if it isn't there. Then, when the function is called we invert it. Also update comments to be more imperative. This refactor also incorporates @andyfeller's suggestion to use `slices`. Co-Authored-By: Andy Feller <[email protected]>
65a26ea to
a4f96d2
Compare
| if tt.wantErr != "" { | ||
| require.EqualError(t, err, tt.wantErr) | ||
| return | ||
| } else { | ||
| require.NoError(t, err) | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure why this return was here, it seems like it might have been a mistake.
I needed to remove it to get my test to initially fail since my test wants a SilentError while also wanting text on stderr π§
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this return would cause tests that wantErr to skip checking stdout and stderr. Some of the tests define empty wantStdout and wantStderr, so removing this return would still work for most:
From trunk:
cli/pkg/cmd/release/create/create_test.go
Lines 833 to 835 in ae87caf
| wantStdout: ``, | |
| wantStderr: ``, | |
| wantErr: `a release with the same tag name already exists: v1.2.3`, |
cli/pkg/cmd/release/create/create_test.go
Lines 1115 to 1124 in ae87caf
| err := createRun(&tt.opts) | |
| if tt.wantErr != "" { | |
| require.EqualError(t, err, tt.wantErr) | |
| return | |
| } else { | |
| require.NoError(t, err) | |
| } | |
| assert.Equal(t, tt.wantStdout, stdout.String()) | |
| assert.Equal(t, tt.wantStderr, stderr.String()) |
From #1552:
You can see the test used to check the resulting release information, too:
cli/pkg/cmd/release/create/create_test.go
Lines 314 to 330 in 0f42c7a
| err := createRun(&tt.opts) | |
| if tt.wantErr != "" { | |
| require.EqualError(t, err, tt.wantErr) | |
| return | |
| } else { | |
| require.NoError(t, err) | |
| } | |
| bb, err := ioutil.ReadAll(fakeHTTP.Requests[0].Body) | |
| require.NoError(t, err) | |
| var params interface{} | |
| err = json.Unmarshal(bb, ¶ms) | |
| require.NoError(t, err) | |
| assert.Equal(t, tt.wantParams, params) | |
| assert.Equal(t, tt.wantStdout, stdout.String()) | |
| assert.Equal(t, tt.wantStderr, stderr.String()) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The inline and function documentation is icing on the cake!
This MR contains the following updates: | Package | Update | Change | |---|---|---| | [cli/cli](https://github.com/cli/cli) | minor | `v2.62.0` -> `v2.63.0` | MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot). **Proposed changes to behavior should be submitted there as MRs.** --- ### Release Notes <details> <summary>cli/cli (cli/cli)</summary> ### [`v2.63.0`](https://github.com/cli/cli/releases/tag/v2.63.0): GitHub CLI 2.63.0 [Compare Source](cli/cli@v2.62.0...v2.63.0) #### What's Changed - Support bare repo creation by [@​williammartin](https://github.com/williammartin) in cli/cli#9905 - Refactor the `getAttestations` functions by [@​malancas](https://github.com/malancas) in cli/cli#9892 - Added a section on manual verification of the relases. by [@​kommendorkapten](https://github.com/kommendorkapten) in cli/cli#9936 - Adding option to return `baseRefOid` in `pr view` by [@​daliusd](https://github.com/daliusd) in cli/cli#9938 - Update verification results printing by [@​malancas](https://github.com/malancas) in cli/cli#9937 - Fix some multiline command documentation to use `heredoc` strings by [@​BagToad](https://github.com/BagToad) in cli/cli#9948 - Print friendly error when `release create` fails due to missing `workflow` OAuth scope by [@​BagToad](https://github.com/BagToad) in cli/cli#9791 **Full Changelog**: cli/cli@v2.62.0...v2.63.0 #### Security - A security vulnerability has been identified in the GitHub CLI that could leak authentication tokens when cloning repositories containing git submodules hosted outside of GitHub.com and ghe.com. For more information, see GHSA-jwcm-9g39-pmcw #### New Contributors - [@​daliusd](https://github.com/daliusd) made their first contribution in cli/cli#9938 </details> --- ### Configuration π **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). π¦ **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β» **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox. π **Ignore**: Close this MR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box --- This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy40NDAuNyIsInVwZGF0ZWRJblZlciI6IjM3LjQ0MC43IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJSZW5vdmF0ZSBCb3QiXX0=-->
Resolves #9773 by adding a friendly error message when
gh release createfails and it may be due to a missingworkflowOAuth scope.Example leveraging a fork of the repo in #9773: