diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 87d79c2..c25be37 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -13,3 +13,6 @@ updates: prefix: "CONFIG" labels: - "dependencies" + ignore: + - dependency-name: "FluentAssertions" + versions: ["8.x", "9.x", "10.x", "*"] diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 871201a..b7fccab 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -9,8 +9,6 @@ on: - synchronize - reopened - closed - branches: - - main env: MESHCONFIGURATION__URL: ${{ secrets.MESHCONFIGURATION__URL }} MESHCONFIGURATION__MAILBOXID: ${{ secrets.MESHCONFIGURATION__MAILBOXID }} @@ -25,9 +23,9 @@ jobs: runs-on: windows-latest steps: - name: Check Out - uses: actions/checkout@v3 + uses: actions/checkout@v5 - name: Setup Dot Net Version - uses: actions/setup-dotnet@v3 + uses: actions/setup-dotnet@v5 with: dotnet-version: 10.x - name: Restore @@ -55,7 +53,7 @@ jobs: contains(github.event.pull_request.labels.*.name, 'RELEASES') steps: - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v5 with: token: ${{ secrets.PAT_FOR_TAGGING }} - name: Configure Git @@ -128,9 +126,9 @@ jobs: if: needs.add_tag.result == 'success' steps: - name: Check out - uses: actions/checkout@v3 + uses: actions/checkout@v5 - name: Setup .Net - uses: actions/setup-dotnet@v3 + uses: actions/setup-dotnet@v5 with: dotnet-version: 10.x - name: Restore diff --git a/.github/workflows/prLinter.yml b/.github/workflows/prLinter.yml index e0e71d9..6785565 100644 --- a/.github/workflows/prLinter.yml +++ b/.github/workflows/prLinter.yml @@ -11,11 +11,12 @@ on: - main jobs: label: - name: Add Label(s) + name: Label runs-on: ubuntu-latest + if: ${{ github.event.pull_request.head.repo.full_name == github.repository }} steps: - name: Apply Label - uses: actions/github-script@v6 + uses: actions/github-script@v8 with: github-token: ${{ secrets.GITHUB_TOKEN }} script: >- @@ -84,16 +85,17 @@ jobs: } permissions: contents: read + issues: write pull-requests: write requireIssueOrTask: name: Require Issue Or Task Association runs-on: ubuntu-latest steps: - name: Check out - uses: actions/checkout@v3 + uses: actions/checkout@v5 - name: Get PR Information id: get_pr_info - uses: actions/github-script@v6 + uses: actions/github-script@v8 with: script: >2- const pr = await github.rest.pulls.get({ @@ -110,7 +112,7 @@ jobs: console.log(`PR Body: ${prBody}`); - name: Check For Associated Issues Or Tasks id: check_for_issues_or_tasks - if: ${{ steps.get_pr_info.outputs.prOwner != 'dependabot[bot]' }} + if: ${{ !contains(',dependabot[bot],', format(',{0},', steps.get_pr_info.outputs.prOwner)) }} env: PR_BODY: ${{ steps.get_pr_info.outputs.description }} run: >2- @@ -131,3 +133,42 @@ jobs: permissions: contents: read pull-requests: read + setAuthorAsPrAssignee: + name: Set Author As PR Assignee + runs-on: ubuntu-latest + if: ${{ github.event.pull_request.head.repo.full_name == github.repository }} + steps: + - name: Set Author As PR Assignee + uses: actions/github-script@v8 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + script: > + const pr = context.payload.pull_request; + + if (!pr) { + console.log('No pull request context available.'); + return; + } + + + const author = pr.user.login; + + if (author.endsWith('[bot]')) { + console.log(`Skipping bot author: ${author}`); + return; + } + + + console.log(`Assigning PR to author: ${author}`); + + + await github.rest.issues.addAssignees({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: pr.number, + assignees: [author] + }); + permissions: + contents: read + issues: write + pull-requests: write diff --git a/NEL.MESH.Infrastructure/NEL.MESH.Infrastructure.csproj b/NEL.MESH.Infrastructure/NEL.MESH.Infrastructure.csproj index c8e460d..f14fe4d 100644 --- a/NEL.MESH.Infrastructure/NEL.MESH.Infrastructure.csproj +++ b/NEL.MESH.Infrastructure/NEL.MESH.Infrastructure.csproj @@ -10,7 +10,7 @@ - + diff --git a/NEL.MESH.Infrastructure/Services/ScriptGenerationService.cs b/NEL.MESH.Infrastructure/Services/ScriptGenerationService.cs index 4c35b24..28fcf31 100644 --- a/NEL.MESH.Infrastructure/Services/ScriptGenerationService.cs +++ b/NEL.MESH.Infrastructure/Services/ScriptGenerationService.cs @@ -5,7 +5,7 @@ using ADotNet.Clients; using ADotNet.Models.Pipelines.GithubPipelines.DotNets; using ADotNet.Models.Pipelines.GithubPipelines.DotNets.Tasks; -using ADotNet.Models.Pipelines.GithubPipelines.DotNets.Tasks.SetupDotNetTaskV3s; +using ADotNet.Models.Pipelines.GithubPipelines.DotNets.Tasks.SetupDotNetTaskV5s; namespace NEL.MESH.Infrastructure.Services { @@ -28,8 +28,7 @@ public void GenerateBuildScript(string branchName, string projectName, string do PullRequest = new PullRequestEvent { - Types = ["opened", "synchronize", "reopened", "closed"], - Branches = [branchName] + Types = ["opened", "synchronize", "reopened", "closed"] } }, @@ -55,16 +54,16 @@ public void GenerateBuildScript(string branchName, string projectName, string do Steps = new List { - new CheckoutTaskV3 + new CheckoutTaskV5 { Name = "Check Out" }, - new SetupDotNetTaskV3 + new SetupDotNetTaskV5 { Name = "Setup Dot Net Version", - With = new TargetDotNetVersionV3 + With = new TargetDotNetVersionV5 { DotNetVersion = dotNetVersion } @@ -100,7 +99,7 @@ public void GenerateBuildScript(string branchName, string projectName, string do }, { "add_tag", - new TagJob( + new TagJobV2( runsOn: BuildMachines.UbuntuLatest, dependsOn: "build", projectRelativePath: $"{projectName}/{projectName}.csproj", @@ -112,7 +111,7 @@ public void GenerateBuildScript(string branchName, string projectName, string do }, { "publish", - new PublishJobV2( + new PublishJobV4( runsOn: BuildMachines.UbuntuLatest, dependsOn: "add_tag", dotNetVersion: dotNetVersion, @@ -156,18 +155,25 @@ public void GeneratePrLintScript(string branchName) { { "label", - new LabelJobV2(runsOn: BuildMachines.UbuntuLatest) + new LabelJobV3(runsOn: BuildMachines.UbuntuLatest) { - Name = "Add Label(s)", + Name = "Label" } }, { "requireIssueOrTask", - new RequireIssueOrTaskJob() + new RequireIssueOrTaskJobV2(excludedAuthors: "dependabot[bot]") { Name = "Require Issue Or Task Association", } }, + { + "setAuthorAsPrAssignee", + new SetAuthorAsPrAssigneeJobV2(runsOn: BuildMachines.UbuntuLatest) + { + Name = "Set Author As PR Assignee", + } + }, } }; diff --git a/NEL.MESH.Tests.Acceptance/NEL.MESH.Tests.Acceptance.csproj b/NEL.MESH.Tests.Acceptance/NEL.MESH.Tests.Acceptance.csproj index 8704355..ae620aa 100644 --- a/NEL.MESH.Tests.Acceptance/NEL.MESH.Tests.Acceptance.csproj +++ b/NEL.MESH.Tests.Acceptance/NEL.MESH.Tests.Acceptance.csproj @@ -12,12 +12,12 @@ - - - + + + - + runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/NEL.MESH.Tests.Integration.Witness/NEL.MESH.Tests.Integration.Witness.csproj b/NEL.MESH.Tests.Integration.Witness/NEL.MESH.Tests.Integration.Witness.csproj index f393d78..4a5e035 100644 --- a/NEL.MESH.Tests.Integration.Witness/NEL.MESH.Tests.Integration.Witness.csproj +++ b/NEL.MESH.Tests.Integration.Witness/NEL.MESH.Tests.Integration.Witness.csproj @@ -16,9 +16,9 @@ - - - + + + diff --git a/NEL.MESH.Tests.Integration/NEL.MESH.Tests.Integration.csproj b/NEL.MESH.Tests.Integration/NEL.MESH.Tests.Integration.csproj index b79e86f..5689e79 100644 --- a/NEL.MESH.Tests.Integration/NEL.MESH.Tests.Integration.csproj +++ b/NEL.MESH.Tests.Integration/NEL.MESH.Tests.Integration.csproj @@ -16,9 +16,9 @@ - - - + + + diff --git a/NEL.MESH.Tests.Unit/NEL.MESH.Tests.Unit.csproj b/NEL.MESH.Tests.Unit/NEL.MESH.Tests.Unit.csproj index be36932..4cbf49c 100644 --- a/NEL.MESH.Tests.Unit/NEL.MESH.Tests.Unit.csproj +++ b/NEL.MESH.Tests.Unit/NEL.MESH.Tests.Unit.csproj @@ -12,9 +12,9 @@ - - - + + + diff --git a/NEL.MESH.UI/NEL.MESH.UI.csproj b/NEL.MESH.UI/NEL.MESH.UI.csproj index c2fe4cf..ced616a 100644 --- a/NEL.MESH.UI/NEL.MESH.UI.csproj +++ b/NEL.MESH.UI/NEL.MESH.UI.csproj @@ -11,10 +11,10 @@ - - - - + + + + diff --git a/NEL.MESH/NEL.MESH.csproj b/NEL.MESH/NEL.MESH.csproj index eaec99b..368d92b 100644 --- a/NEL.MESH/NEL.MESH.csproj +++ b/NEL.MESH/NEL.MESH.csproj @@ -51,8 +51,8 @@ - - + +