From df18d23fb6ff2e8562b97ebda0dcf758947dfcd4 Mon Sep 17 00:00:00 2001 From: Ryan Fu Date: Mon, 23 Aug 2021 15:20:25 -0700 Subject: [PATCH 1/4] Add delay and retry to create reference step to avoid server error --- src/WingetCreateCore/Common/GitHub.cs | 17 ++++++++++++++--- src/WingetCreateCore/WingetCreateCore.csproj | 1 + 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/WingetCreateCore/Common/GitHub.cs b/src/WingetCreateCore/Common/GitHub.cs index 45324eb9..6826c4b8 100644 --- a/src/WingetCreateCore/Common/GitHub.cs +++ b/src/WingetCreateCore/Common/GitHub.cs @@ -12,6 +12,7 @@ namespace Microsoft.WingetCreateCore.Common using Jose; using Microsoft.WingetCreateCore.Models; using Octokit; + using Polly; /// /// Provides functionality for interacting a user's GitHub account. @@ -307,8 +308,11 @@ private async Task SubmitPRAsync(string packageId, string version, Reference newBranch = null; try { - // Create new branch synced to upstream master - await this.github.Git.Reference.Create(repo.Id, new NewReference($"refs/{newBranchNameHeads}", upstreamMasterSha)); + var retryPolicy = Policy.Handle().WaitAndRetryAsync(3, i => TimeSpan.FromSeconds(2)); + await retryPolicy.ExecuteAsync(async () => + { + await this.github.Git.Reference.Create(repo.Id, new NewReference($"refs/{newBranchNameHeads}", upstreamMasterSha)); + }); // Update from upstream branch master newBranch = await this.github.Git.Reference.Update(repo.Id, newBranchNameHeads, new ReferenceUpdate(upstreamMasterSha)); @@ -344,7 +348,14 @@ private async Task SubmitPRAsync(string packageId, string version, // On error, cleanup created branch/repo before re-throwing if (createdRepo) { - await this.github.Repository.Delete(repo.Id); + try + { + await this.github.Repository.Delete(repo.Id); + } + catch (ForbiddenException) + { + // If we fail to delete the fork, the user did not provide a token with the "delete_repo" permission. Do nothing. + } } else if (newBranch != null) { diff --git a/src/WingetCreateCore/WingetCreateCore.csproj b/src/WingetCreateCore/WingetCreateCore.csproj index 4f99b0a0..06d85c14 100644 --- a/src/WingetCreateCore/WingetCreateCore.csproj +++ b/src/WingetCreateCore/WingetCreateCore.csproj @@ -26,6 +26,7 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive + all From c2484d91fbc54caed8801e803db73121bbc6aca2 Mon Sep 17 00:00:00 2001 From: Ryan Fu Date: Mon, 23 Aug 2021 16:22:11 -0700 Subject: [PATCH 2/4] add token permission info to readme --- README.md | 13 ++++++++++++- doc/images/tokenscope-publicrepo.png | Bin 0 -> 57204 bytes 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 doc/images/tokenscope-publicrepo.png diff --git a/README.md b/README.md index 4279caef..9a3869c3 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ Click on the individual commands to learn more. You can use WingetCreate to update your existing app manifest as part of your CI/CD pipeline. For reference, see the final task in this repo's [release Azure pipeline](https://github.com/microsoft/winget-create/blob/main/pipelines/azure-pipelines.release.yml). -Unfortunately we can't use the msixbundle in a standard Azure Pipeline pool. Instead, use the standalone exe, the latest version of which can be found at https://aka.ms/wingetcreate/latest, and the latest preview version can be found at https://aka.ms/wingetcreate/preview, both of these require .NET to be installed on the build machine. +Unfortunately, we can't use the msixbundle in a standard Azure Pipeline pool. Instead, use the standalone exe, the latest version of which can be found at https://aka.ms/wingetcreate/latest, and the latest preview version can be found at https://aka.ms/wingetcreate/preview, both of these require .NET to be installed on the build machine. If .NET isn't already installed, you can use https://aka.ms/wingetcreate/latest/self-contained or https://aka.ms/wingetcreate/preview/self-contained, which has .NET built-in, but is a larger download. @@ -52,6 +52,17 @@ Then simply add a new powershell task to download the exe, and run it to update The CLI also supports creating or updating manifests with multiple installer URLs. You can either create new manifests with multiple installer nodes using the [New Command](doc/new.md) or update existing manifests with multiple installer URLs using the [Update Command](doc/update.md). +## Using your GitHub Personal Access Token + +When [creating your own GitHub Personal Access Token (PAT)](https://docs.github.com/en/github/authenticating-to-github/keeping-your-account-and-data-secure/creating-a-personal-access-token) to be used with WingetCreate, make sure you verify the following steps are completed: + +- [Authorizing your personal access token for use with SAML single sign-on](https://docs.github.com/en/github/authenticating-to-github/authenticating-with-saml-single-sign-on/authorizing-a-personal-access-token-for-use-with-saml-single-sign-on) +- Selecting the **public_repo** scope to allow access to public repositories + +![public_repo scope](./images/tokenscope-publicrepo.png) + +- (Optional) Selecting the **delete_repo** scope permission if you want WingetCreate to automatically delete the forked repo that it created if the PR submission fails. + ## Building the client ### Prerequisites diff --git a/doc/images/tokenscope-publicrepo.png b/doc/images/tokenscope-publicrepo.png new file mode 100644 index 0000000000000000000000000000000000000000..4e04a7d42278ebf3bfe7a591052ae3ce36e29312 GIT binary patch literal 57204 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 N#` Date: Mon, 23 Aug 2021 16:26:44 -0700 Subject: [PATCH 3/4] fix public repo image --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9a3869c3..cf3e97f4 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ When [creating your own GitHub Personal Access Token (PAT)](https://docs.github. - [Authorizing your personal access token for use with SAML single sign-on](https://docs.github.com/en/github/authenticating-to-github/authenticating-with-saml-single-sign-on/authorizing-a-personal-access-token-for-use-with-saml-single-sign-on) - Selecting the **public_repo** scope to allow access to public repositories -![public_repo scope](./images/tokenscope-publicrepo.png) +![public_repo scope](./doc/images/tokenscope-publicrepo.png) - (Optional) Selecting the **delete_repo** scope permission if you want WingetCreate to automatically delete the forked repo that it created if the PR submission fails. From 2ac523e580ff1b93088f55c8b8d3316fa19c789d Mon Sep 17 00:00:00 2001 From: Ryan Fu Date: Mon, 23 Aug 2021 17:18:28 -0700 Subject: [PATCH 4/4] address PR comments --- README.md | 9 ++++----- src/WingetCreateCore/Common/GitHub.cs | 2 +- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index cf3e97f4..05007cb3 100644 --- a/README.md +++ b/README.md @@ -52,16 +52,15 @@ Then simply add a new powershell task to download the exe, and run it to update The CLI also supports creating or updating manifests with multiple installer URLs. You can either create new manifests with multiple installer nodes using the [New Command](doc/new.md) or update existing manifests with multiple installer URLs using the [Update Command](doc/update.md). -## Using your GitHub Personal Access Token +## GitHub Personal Access Token Permissions -When [creating your own GitHub Personal Access Token (PAT)](https://docs.github.com/en/github/authenticating-to-github/keeping-your-account-and-data-secure/creating-a-personal-access-token) to be used with WingetCreate, make sure you verify the following steps are completed: +When [creating your own GitHub Personal Access Token (PAT)](https://docs.github.com/en/github/authenticating-to-github/keeping-your-account-and-data-secure/creating-a-personal-access-token) to be used with WingetCreate, make sure the following permissions are selected. -- [Authorizing your personal access token for use with SAML single sign-on](https://docs.github.com/en/github/authenticating-to-github/authenticating-with-saml-single-sign-on/authorizing-a-personal-access-token-for-use-with-saml-single-sign-on) -- Selecting the **public_repo** scope to allow access to public repositories +- Select the **public_repo** scope to allow access to public repositories ![public_repo scope](./doc/images/tokenscope-publicrepo.png) -- (Optional) Selecting the **delete_repo** scope permission if you want WingetCreate to automatically delete the forked repo that it created if the PR submission fails. +- (Optional) Select the **delete_repo** scope permission if you want WingetCreate to automatically delete the forked repo that it created if the PR submission fails. ## Building the client diff --git a/src/WingetCreateCore/Common/GitHub.cs b/src/WingetCreateCore/Common/GitHub.cs index 6826c4b8..2bd66225 100644 --- a/src/WingetCreateCore/Common/GitHub.cs +++ b/src/WingetCreateCore/Common/GitHub.cs @@ -308,7 +308,7 @@ private async Task SubmitPRAsync(string packageId, string version, Reference newBranch = null; try { - var retryPolicy = Policy.Handle().WaitAndRetryAsync(3, i => TimeSpan.FromSeconds(2)); + var retryPolicy = Policy.Handle().WaitAndRetryAsync(3, i => TimeSpan.FromSeconds(i)); await retryPolicy.ExecuteAsync(async () => { await this.github.Git.Reference.Create(repo.Id, new NewReference($"refs/{newBranchNameHeads}", upstreamMasterSha));