From ef28f78c571af730a36601c458214ede828dcced Mon Sep 17 00:00:00 2001 From: Jordan Dominion Date: Sat, 13 Jul 2024 12:53:52 -0400 Subject: [PATCH 1/8] Attempt at getting master merging working again --- .github/workflows/stable-merge.yml | 16 ++++++++++-- .../Tgstation.Server.ReleaseNotes/Program.cs | 26 +++++++++++++++++-- 2 files changed, 38 insertions(+), 4 deletions(-) diff --git a/.github/workflows/stable-merge.yml b/.github/workflows/stable-merge.yml index 54ce84245b..74528fb048 100644 --- a/.github/workflows/stable-merge.yml +++ b/.github/workflows/stable-merge.yml @@ -5,6 +5,7 @@ on: workflows: [CI Pipeline] types: - completed + workflow_dispatch: jobs: master-merge: @@ -16,6 +17,18 @@ jobs: with: fetch-depth: 0 + - name: Restore + run: dotnet restore + + - name: Build ReleaseNotes + run: dotnet build -c Release -p:TGS_HOST_NO_WEBPANEL=true tools/Tgstation.Server.ReleaseNotes/Tgstation.Server.ReleaseNotes.csproj + + - name: Run ReleaseNotes Create CI Completion Check (PR HEAD) + run: dotnet run -c Release --no-build --project tools/Tgstation.Server.ReleaseNotes --token-output-file ${{ runner.temp }}/installation_secret.txt ${{ secrets.TGS_CI_GITHUB_APP_TOKEN_BASE64 }} + + - name: Load Installation Token into Envvar + run: echo "INSTALLATION_TOKEN=$(cat ${{ runner.temp }}/installation_secret.txt)" >> $GITHUB_ENV + - name: Merge master into dev uses: robotology/gh-action-nightly-merge@14b4a4cf358f7479aa708bee05cf8a794d6a2516 #v1.5.0 with: @@ -25,7 +38,6 @@ jobs: allow_forks: true user_name: tgstation-server user_email: tgstation-server@users.noreply.github.com - push_token: DEV_PUSH_TOKEN + push_token: INSTALLATION_TOKEN env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - DEV_PUSH_TOKEN: ${{ secrets.DEV_PUSH_TOKEN }} diff --git a/tools/Tgstation.Server.ReleaseNotes/Program.cs b/tools/Tgstation.Server.ReleaseNotes/Program.cs index b74af3b701..2bcc722b7e 100644 --- a/tools/Tgstation.Server.ReleaseNotes/Program.cs +++ b/tools/Tgstation.Server.ReleaseNotes/Program.cs @@ -61,6 +61,7 @@ namespace Tgstation.Server.ReleaseNotes var fullNotes = versionString.Equals("--generate-full-notes", StringComparison.OrdinalIgnoreCase); var nuget = versionString.Equals("--nuget", StringComparison.OrdinalIgnoreCase); var ciCompletionCheck = versionString.Equals("--ci-completion-check", StringComparison.OrdinalIgnoreCase); + var genToken = versionString.Equals("--token-output-file", StringComparison.OrdinalIgnoreCase); if ((!Version.TryParse(versionString, out var version) || version.Revision != -1) && !ensureRelease @@ -150,6 +151,22 @@ namespace Tgstation.Server.ReleaseNotes return await CICompletionCheck(client, args[1], args[2]); } + + if (genToken) + { + if (args.Length < 3) + { + Console.WriteLine("Missing output file path or PEM Base64 for app authentication!"); + return 33847; + } + + await GenerateAppCredentials(client, args[2]); + + var token = client.Credentials.GetToken(); + await File.WriteAllTextAsync(args[1], token); + return 0; + } + if (shaCheck) { if(args.Length < 2) @@ -1610,7 +1627,7 @@ package (version) distribution(s); urgency=urgency return 0; } - static async ValueTask CICompletionCheck(GitHubClient gitHubClient, string currentSha, string pemBase64) + static async ValueTask GenerateAppCredentials(GitHubClient gitHubClient, string pemBase64) { var pemBytes = Convert.FromBase64String(pemBase64); var pem = Encoding.UTF8.GetString(pemBytes); @@ -1639,10 +1656,15 @@ package (version) distribution(s); urgency=urgency var installToken = await gitHubClient.GitHubApps.CreateInstallationToken(installation.Id); gitHubClient.Credentials = new Credentials(installToken.Token); + } + + static async ValueTask CICompletionCheck(GitHubClient gitHubClient, string currentSha, string pemBase64) + { + await GenerateAppCredentials(gitHubClient, pemBase64); await gitHubClient.Check.Run.Create(RepoOwner, RepoName, new NewCheckRun("CI Completion", currentSha) { - CompletedAt = now, + CompletedAt = DateTime.UtcNow, Conclusion = CheckConclusion.Success, Output = new NewCheckRunOutput("CI Completion", "The CI Pipeline completed successfully"), Status = CheckStatus.Completed, From a2e4582ea0b3008e91afb7ab0bd887a7aeb56520 Mon Sep 17 00:00:00 2001 From: Jordan Dominion Date: Sat, 13 Jul 2024 12:55:44 -0400 Subject: [PATCH 2/8] Actually allow this action to run as `workflow_dispatch` --- .github/workflows/stable-merge.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/stable-merge.yml b/.github/workflows/stable-merge.yml index 74528fb048..01e178918a 100644 --- a/.github/workflows/stable-merge.yml +++ b/.github/workflows/stable-merge.yml @@ -10,7 +10,7 @@ on: jobs: master-merge: runs-on: ubuntu-latest - if: ${{ github.event.workflow_run.conclusion == 'success' }} + if: ${{ github.event_name == 'workflow_dispatch' }} || ${{ github.event.workflow_run.conclusion == 'success' }} steps: - name: Checkout uses: actions/checkout@v4 From b6967cfab6e0955cb827792ea40a816746522e66 Mon Sep 17 00:00:00 2001 From: Jordan Dominion Date: Sat, 13 Jul 2024 13:03:26 -0400 Subject: [PATCH 3/8] Fixing up master merge --- .github/workflows/stable-merge.yml | 4 ++-- tools/Tgstation.Server.ReleaseNotes/Program.cs | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/stable-merge.yml b/.github/workflows/stable-merge.yml index 01e178918a..b804bcd3a9 100644 --- a/.github/workflows/stable-merge.yml +++ b/.github/workflows/stable-merge.yml @@ -10,7 +10,7 @@ on: jobs: master-merge: runs-on: ubuntu-latest - if: ${{ github.event_name == 'workflow_dispatch' }} || ${{ github.event.workflow_run.conclusion == 'success' }} + if: github.event_name == 'workflow_dispatch' || (github.event_name == 'workflow_run' && github.event.workflow_run.conclusion == 'success') steps: - name: Checkout uses: actions/checkout@v4 @@ -23,7 +23,7 @@ jobs: - name: Build ReleaseNotes run: dotnet build -c Release -p:TGS_HOST_NO_WEBPANEL=true tools/Tgstation.Server.ReleaseNotes/Tgstation.Server.ReleaseNotes.csproj - - name: Run ReleaseNotes Create CI Completion Check (PR HEAD) + - name: Run ReleaseNotes Create CI Completion Check run: dotnet run -c Release --no-build --project tools/Tgstation.Server.ReleaseNotes --token-output-file ${{ runner.temp }}/installation_secret.txt ${{ secrets.TGS_CI_GITHUB_APP_TOKEN_BASE64 }} - name: Load Installation Token into Envvar diff --git a/tools/Tgstation.Server.ReleaseNotes/Program.cs b/tools/Tgstation.Server.ReleaseNotes/Program.cs index 2bcc722b7e..388eafe6cb 100644 --- a/tools/Tgstation.Server.ReleaseNotes/Program.cs +++ b/tools/Tgstation.Server.ReleaseNotes/Program.cs @@ -69,7 +69,8 @@ namespace Tgstation.Server.ReleaseNotes && !shaCheck && !fullNotes && !nuget - && !ciCompletionCheck) + && !ciCompletionCheck + && !genToken) { Console.WriteLine("Invalid version: " + versionString); return 2; From a6510fb49db783e6044fee4d9883cadde2a50eff Mon Sep 17 00:00:00 2001 From: Jordan Dominion Date: Sat, 13 Jul 2024 13:06:54 -0400 Subject: [PATCH 4/8] Set release notes token --- .github/workflows/stable-merge.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/stable-merge.yml b/.github/workflows/stable-merge.yml index b804bcd3a9..1edf863566 100644 --- a/.github/workflows/stable-merge.yml +++ b/.github/workflows/stable-merge.yml @@ -7,6 +7,9 @@ on: - completed workflow_dispatch: +env: + TGS_RELEASE_NOTES_TOKEN: ${{ secrets.DEV_PUSH_TOKEN }} + jobs: master-merge: runs-on: ubuntu-latest From 2ca494e90699c47d73b51a9d554d8976c4b30acd Mon Sep 17 00:00:00 2001 From: Jordan Dominion Date: Sat, 13 Jul 2024 19:40:53 -0400 Subject: [PATCH 5/8] Switch back to basic pushes from me --- .github/workflows/stable-merge.yml | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/.github/workflows/stable-merge.yml b/.github/workflows/stable-merge.yml index 1edf863566..f3f189a06d 100644 --- a/.github/workflows/stable-merge.yml +++ b/.github/workflows/stable-merge.yml @@ -8,7 +8,7 @@ on: workflow_dispatch: env: - TGS_RELEASE_NOTES_TOKEN: ${{ secrets.DEV_PUSH_TOKEN }} + DEV_PUSH_TOKEN: ${{ secrets.DEV_PUSH_TOKEN }} jobs: master-merge: @@ -19,19 +19,6 @@ jobs: uses: actions/checkout@v4 with: fetch-depth: 0 - - - name: Restore - run: dotnet restore - - - name: Build ReleaseNotes - run: dotnet build -c Release -p:TGS_HOST_NO_WEBPANEL=true tools/Tgstation.Server.ReleaseNotes/Tgstation.Server.ReleaseNotes.csproj - - - name: Run ReleaseNotes Create CI Completion Check - run: dotnet run -c Release --no-build --project tools/Tgstation.Server.ReleaseNotes --token-output-file ${{ runner.temp }}/installation_secret.txt ${{ secrets.TGS_CI_GITHUB_APP_TOKEN_BASE64 }} - - - name: Load Installation Token into Envvar - run: echo "INSTALLATION_TOKEN=$(cat ${{ runner.temp }}/installation_secret.txt)" >> $GITHUB_ENV - - name: Merge master into dev uses: robotology/gh-action-nightly-merge@14b4a4cf358f7479aa708bee05cf8a794d6a2516 #v1.5.0 with: @@ -41,6 +28,6 @@ jobs: allow_forks: true user_name: tgstation-server user_email: tgstation-server@users.noreply.github.com - push_token: INSTALLATION_TOKEN + push_token: DEV_PUSH_TOKEN env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 711e826a48dfbfc43ad3b47ac52c6c6952d0c408 Mon Sep 17 00:00:00 2001 From: Jordan Dominion Date: Sat, 13 Jul 2024 20:50:53 -0400 Subject: [PATCH 6/8] The reason why the push with my token fails makes no sense --- .github/workflows/stable-merge.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/stable-merge.yml b/.github/workflows/stable-merge.yml index f3f189a06d..b0dd3f1015 100644 --- a/.github/workflows/stable-merge.yml +++ b/.github/workflows/stable-merge.yml @@ -19,6 +19,8 @@ jobs: uses: actions/checkout@v4 with: fetch-depth: 0 + token: ${{ secrets.DEV_PUSH_TOKEN }} + - name: Merge master into dev uses: robotology/gh-action-nightly-merge@14b4a4cf358f7479aa708bee05cf8a794d6a2516 #v1.5.0 with: From df710a5603dbf2d43b8991e2b0ba8e892b59f1ef Mon Sep 17 00:00:00 2001 From: Jordan Dominion Date: Sat, 13 Jul 2024 20:54:04 -0400 Subject: [PATCH 7/8] Removed unused code --- .../Tgstation.Server.ReleaseNotes/Program.cs | 20 +------------------ 1 file changed, 1 insertion(+), 19 deletions(-) diff --git a/tools/Tgstation.Server.ReleaseNotes/Program.cs b/tools/Tgstation.Server.ReleaseNotes/Program.cs index 388eafe6cb..33977ab79f 100644 --- a/tools/Tgstation.Server.ReleaseNotes/Program.cs +++ b/tools/Tgstation.Server.ReleaseNotes/Program.cs @@ -61,7 +61,6 @@ namespace Tgstation.Server.ReleaseNotes var fullNotes = versionString.Equals("--generate-full-notes", StringComparison.OrdinalIgnoreCase); var nuget = versionString.Equals("--nuget", StringComparison.OrdinalIgnoreCase); var ciCompletionCheck = versionString.Equals("--ci-completion-check", StringComparison.OrdinalIgnoreCase); - var genToken = versionString.Equals("--token-output-file", StringComparison.OrdinalIgnoreCase); if ((!Version.TryParse(versionString, out var version) || version.Revision != -1) && !ensureRelease @@ -69,8 +68,7 @@ namespace Tgstation.Server.ReleaseNotes && !shaCheck && !fullNotes && !nuget - && !ciCompletionCheck - && !genToken) + && !ciCompletionCheck) { Console.WriteLine("Invalid version: " + versionString); return 2; @@ -152,22 +150,6 @@ namespace Tgstation.Server.ReleaseNotes return await CICompletionCheck(client, args[1], args[2]); } - - if (genToken) - { - if (args.Length < 3) - { - Console.WriteLine("Missing output file path or PEM Base64 for app authentication!"); - return 33847; - } - - await GenerateAppCredentials(client, args[2]); - - var token = client.Credentials.GetToken(); - await File.WriteAllTextAsync(args[1], token); - return 0; - } - if (shaCheck) { if(args.Length < 2) From 3133a600333a99c1904682027565dfbccfac151a Mon Sep 17 00:00:00 2001 From: Jordan Dominion Date: Sat, 13 Jul 2024 20:55:12 -0400 Subject: [PATCH 8/8] Run master merge on master pushes --- .github/workflows/stable-merge.yml | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/.github/workflows/stable-merge.yml b/.github/workflows/stable-merge.yml index b0dd3f1015..05299e6284 100644 --- a/.github/workflows/stable-merge.yml +++ b/.github/workflows/stable-merge.yml @@ -1,10 +1,9 @@ name: 'Master Merge' on: - workflow_run: - workflows: [CI Pipeline] - types: - - completed + push: + branches: + - master workflow_dispatch: env: @@ -13,7 +12,6 @@ env: jobs: master-merge: runs-on: ubuntu-latest - if: github.event_name == 'workflow_dispatch' || (github.event_name == 'workflow_run' && github.event.workflow_run.conclusion == 'success') steps: - name: Checkout uses: actions/checkout@v4