Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
a586135
ShouldGetConfigurationSettings -> PASS
cjdutoit Jan 6, 2025
12d7e2f
CODE RUB: Upgrade to net9.0, some code refactoring and documentation…
cjdutoit Jan 8, 2025
091b85a
CODE RUB: Updated config
cjdutoit Jan 13, 2025
d137a9f
CODE RUB: Change script to print environment variables
cjdutoit Jan 13, 2025
31e6ca3
CODE RUB: updated scrips
cjdutoit Jan 13, 2025
2db656a
CODE RUB: temp excluded tests
cjdutoit Jan 13, 2025
0668419
CODE RUB: Temp exclusion of tests
cjdutoit Jan 13, 2025
f1d7b24
CODE RUB: Updated build and logging
cjdutoit Jan 13, 2025
33f5df6
CODE RUB: Code cleanup
MichaelOSullivanAnswer Mar 20, 2025
c239020
CODE RUB: Code cleanup
MichaelOSullivanAnswer Mar 20, 2025
d2f9fea
CODE RUB: Code cleanup
MichaelOSullivanAnswer Mar 20, 2025
6b83ade
CODE RUB: Code cleanup
MichaelOSullivanAnswer Mar 20, 2025
134b4f7
CODE RUB: Test
MichaelOSullivanAnswer Mar 20, 2025
718b188
CODE RUB: Test splitting mesh certificates
MichaelOSullivanAnswer Apr 28, 2025
6f7f48a
Reverting certificate splitting
JParkesAD May 19, 2025
da83f79
Updating to use array for root certs
JParkesAD May 19, 2025
7afd2aa
CODERUB: Removing double underscore from secrets
JParkesAD May 19, 2025
0c94d1c
CODERUB: Remapping build config values
JParkesAD May 19, 2025
9e7a60d
CODERUB: Renaming certificate arrays
JParkesAD May 19, 2025
0fa43ed
CODERUB: Removing array from Root certs
JParkesAD May 20, 2025
1aec425
CODERUB: Updating build yaml structure
JParkesAD May 20, 2025
d351201
CODERUB: Console write mesh config tls root cert item
JParkesAD May 20, 2025
c9cfcec
CODERUB: Changing casing on mailbox id
JParkesAD May 20, 2025
6b3b558
CODERUB: Mailbox ID debugging
JParkesAD May 20, 2025
9063070
Undoing certificate changes
JParkesAD May 20, 2025
975771d
CODERUB: Update build yaml to point root cert to new secret
JParkesAD May 21, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
164 changes: 91 additions & 73 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Build
name: .Net
on:
push:
branches:
Expand All @@ -12,99 +12,120 @@ on:
branches:
- main
env:
IS_RELEASE_CANDIDATE: >-
${{
(
github.event_name == 'pull_request' &&
startsWith(github.event.pull_request.title, 'RELEASES:') &&
contains(github.event.pull_request.labels.*.name, 'RELEASES')
)
||
(
github.event_name == 'push' &&
startsWith(github.event.head_commit.message, 'RELEASES:') &&
github.ref_name == 'RELEASE'
)
}}
MESHCONFIGURATION__URL: ${{ secrets.NEL_MESH_CLIENT_MESHCONFIGURATION__URL }}
MESHCONFIGURATION__MAILBOXID: ${{ secrets.NEL_MESH_CLIENT_MESHCONFIGURATION__MAILBOXID }}
MESHCONFIGURATION__PASSWORD: ${{ secrets.NEL_MESH_CLIENT_MESHCONFIGURATION__PASSWORD }}
MESHCONFIGURATION__KEY: ${{ secrets.NEL_MESH_CLIENT_MESHCONFIGURATION__SHAREDKEY }}
MESHCONFIGURATION__ROOTCERTIFICATE: ${{ secrets.NEL_MESH_CLIENT_MESHCONFIGURATION__TLSROOTCERTIFICATE }}
MESHCONFIGURATION__INTERMEDIATECERTIFICATES__0: ${{ secrets.NEL_MESH_CLIENT_MESHCONFIGURATION__TLSINTERMEDIATECERTIFICATES__0 }}
MESHCONFIGURATION__CLIENTCERTIFICATE: ${{ secrets.NEL_MESH_CLIENT_MESHCONFIGURATION__CLIENTSIGNINGCERTIFICATE }}
jobs:
build:
runs-on: ubuntu-latest
env:
NEL_MESH_CLIENT_ACCEPTANCE_MESHCONFIGURATION__MAILBOXID: ${{ secrets.NEL_MESH_CLIENT_ACCEPTANCE_MESHCONFIGURATION__MAILBOXID }}
NEL_MESH_CLIENT_ACCEPTANCE_MESHCONFIGURATION__PASSWORD: ${{ secrets.NEL_MESH_CLIENT_ACCEPTANCE_MESHCONFIGURATION__PASSWORD }}
NEL_MESH_CLIENT_ACCEPTANCE_MESHCONFIGURATION__KEY: ${{ secrets.NEL_MESH_CLIENT_ACCEPTANCE_MESHCONFIGURATION__KEY }}
NEL_MESH_CLIENT_ACCEPTANCE_MESHCONFIGURATION__ROOTCERTIFICATE: ${{ secrets.NEL_MESH_CLIENT_ACCEPTANCE_MESHCONFIGURATION__ROOTCERTIFICATE }}
NEL_MESH_CLIENT_ACCEPTANCE_MESHCONFIGURATION__INTERMEDIATECERTIFICATES__0: ${{ secrets.NEL_MESH_CLIENT_ACCEPTANCE_MESHCONFIGURATION__INTERMEDIATECERTIFICATES__0 }}
NEL_MESH_CLIENT_ACCEPTANCE_MESHCONFIGURATION__CLIENTCERTIFICATE: ${{ secrets.NEL_MESH_CLIENT_ACCEPTANCE_MESHCONFIGURATION__CLIENTCERTIFICATE }}
NEL_MESH_CLIENT_INTEGRATION_MESHCONFIGURATION__MAILBOXID: ${{ secrets.NEL_MESH_CLIENT_INTEGRATION_MESHCONFIGURATION__MAILBOXID }}
NEL_MESH_CLIENT_INTEGRATION_MESHCONFIGURATION__PASSWORD: ${{ secrets.NEL_MESH_CLIENT_INTEGRATION_MESHCONFIGURATION__PASSWORD }}
NEL_MESH_CLIENT_INTEGRATION_MESHCONFIGURATION__KEY: ${{ secrets.NEL_MESH_CLIENT_INTEGRATION_MESHCONFIGURATION__KEY }}
NEL_MESH_CLIENT_INTEGRATION_MESHCONFIGURATION__ROOTCERTIFICATE: ${{ secrets.NEL_MESH_CLIENT_INTEGRATION_MESHCONFIGURATION__ROOTCERTIFICATE }}
NEL_MESH_CLIENT_INTEGRATION_MESHCONFIGURATION__INTERMEDIATECERTIFICATES__0: ${{ secrets.NEL_MESH_CLIENT_INTEGRATION_MESHCONFIGURATION__INTERMEDIATECERTIFICATES__0 }}
NEL_MESH_CLIENT_INTEGRATION_MESHCONFIGURATION__CLIENTCERTIFICATE: ${{ secrets.NEL_MESH_CLIENT_INTEGRATION_MESHCONFIGURATION__CLIENTCERTIFICATE }}
name: Build
runs-on: windows-latest
steps:
- name: Check Out
uses: actions/checkout@v3
- name: Setup Dot Net Version
uses: actions/setup-dotnet@v3
with:
dotnet-version: 8.0.101
dotnet-version: 9.0.100
- name: Restore
run: dotnet restore
- name: Build
run: dotnet build --no-restore
- name: Test
run: dotnet test --no-build --verbosity normal
- name: Unit Tests
run: dotnet test NEL.Mesh.Tests.Unit/NEL.Mesh.Tests.Unit.csproj --no-build --verbosity normal
- name: Acceptance Tests
run: dotnet test NEL.MESH.Tests.Acceptance/NEL.MESH.Tests.Acceptance.csproj --no-build --verbosity normal
- name: Integration Tests
run: dotnet test NEL.MESH.Tests.Integration/NEL.MESH.Tests.Integration.csproj --no-build --verbosity normal
add_tag:
name: Add Tag and Create Release
runs-on: ubuntu-latest
needs:
- build
if: >
needs.build.result == 'success' &&
github.event.pull_request.merged &&
github.event.pull_request.base.ref == 'main' &&
startsWith(github.event.pull_request.title, 'RELEASES:') &&
if: >-
needs.build.result == 'success' &&

github.event.pull_request.merged &&

github.event.pull_request.base.ref == 'main' &&

startsWith(github.event.pull_request.title, 'RELEASES:') &&

contains(github.event.pull_request.labels.*.name, 'RELEASES')
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Extract Version Number
id: extract_version
run: |-
echo "version_number=$(grep -oP '(?<=<Version>)[^<]+' NEL.MESH/NEL.MESH.csproj)" >> $GITHUB_OUTPUT
echo "package_release_notes=$(grep -oP '(?<=<PackageReleaseNotes>)[^<]+' NEL.MESH/NEL.MESH.csproj)" >> $GITHUB_OUTPUT
- name: Print Version Number
run: |-
echo "Release version - ${{ steps.extract_version.outputs.version_number }}"
echo "Release notes - ${{ steps.extract_version.outputs.package_release_notes }}"
with:
token: ${{ secrets.PAT_FOR_TAGGING }}
- name: Configure Git
run: |-
run: >-
git config user.name "GitHub Action"

git config user.email "action@github.com"
- name: Authenticate with GitHub
uses: actions/checkout@v3
with:
token: ${{ secrets.PAT_FOR_TAGGING }}
- name: Add Release Tag
run: |-
- name: Extract Version
id: extract_version
run: >
# Running on Linux/Unix

sudo apt-get install xmlstarlet

version_number=$(xmlstarlet sel -t -v "//Version" -n ISL.ReIdentification.Core/ISL.ReIdentification.Core.csproj)

echo "$version_number"

echo "version_number<<EOF" >> $GITHUB_OUTPUT

echo "$version_number" >> $GITHUB_OUTPUT

echo "EOF" >> $GITHUB_OUTPUT
shell: bash
- name: Display Version
run: 'echo "Version number: ${{ steps.extract_version.outputs.version_number }}"'
- name: Extract Package Release Notes
id: extract_package_release_notes
run: >
# Running on Linux/Unix

sudo apt-get install xmlstarlet

package_release_notes=$(xmlstarlet sel -t -v "//PackageReleaseNotes" -n ISL.ReIdentification.Core/ISL.ReIdentification.Core.csproj)

echo "$package_release_notes"

echo "package_release_notes<<EOF" >> $GITHUB_OUTPUT

echo "$package_release_notes" >> $GITHUB_OUTPUT

echo "EOF" >> $GITHUB_OUTPUT
shell: bash
- name: Display Package Release Notes
run: 'echo "Package Release Notes: ${{ steps.extract_package_release_notes.outputs.package_release_notes }}"'
- name: Create GitHub Tag
run: >-
git tag -a "v${{ steps.extract_version.outputs.version_number }}" -m "Release - v${{ steps.extract_version.outputs.version_number }}"

git push origin --tags
- name: Create release
id: create_release
- name: Create GitHub Release
uses: actions/create-release@v1
with:
tag_name: v${{ steps.extract_version.outputs.version_number }}
release_name: Release - v${{ steps.extract_version.outputs.version_number }}
body: >-
## Release - v${{ steps.extract_version.outputs.version_number }}


### Release Notes

${{ steps.extract_package_release_notes.outputs.package_release_notes }}
env:
GITHUB_TOKEN: ${{ secrets.PAT_FOR_TAGGING }}
with:
tag_name: "v${{ steps.extract_version.outputs.version_number }}"
release_name: "Release - v${{ steps.extract_version.outputs.version_number }}"
body: |
### Release - v${{ steps.extract_version.outputs.version_number }}

#### Release Notes
${{ steps.extract_version.outputs.package_release_notes }}
publish:
name: Publish to NuGet
runs-on: ubuntu-latest
needs:
needs:
- add_tag
if: needs.add_tag.result == 'success'
steps:
Expand All @@ -113,15 +134,12 @@ jobs:
- name: Setup .Net
uses: actions/setup-dotnet@v3
with:
dotnet-version: 7.0.201
dotnet-version: 9.0.100
- name: Restore
run: dotnet restore
- name: Build Release
- name: Build
run: dotnet build --no-restore --configuration Release
- name: Pack Nuget
run: dotnet pack --configuration Release
env:
NUGET_KEY: ${{ secrets.NUGET_API_KEY }}
- name: Release Task
run:
dotnet nuget push **/bin/Release/**/*.nupkg --source https://api.nuget.org/v3/index.json --api-key ${{ secrets.NUGET_API_KEY }}
- name: Pack NuGet Package
run: dotnet pack --configuration Release --include-symbols
- name: Push NuGet Package
run: dotnet nuget push **/bin/Release/**/*.nupkg --source https://api.nuget.org/v3/index.json --api-key ${{ secrets.NUGET_ACCESS }} --skip-duplicate
135 changes: 135 additions & 0 deletions .github/workflows/prLinter.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
name: PR Linter
on:
pull_request:
types:
- opened
- edited
- synchronize
- reopened
- closed
branches:
- main
jobs:
label:
name: Add Label(s)
runs-on: ubuntu-latest
steps:
- name: Apply Label
uses: actions/github-script@v6
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: >-
const prefixes = [
'INFRA:',
'PROVISIONS:',
'RELEASES:',
'DATA:',
'BROKERS:',
'FOUNDATIONS:',
'PROCESSINGS:',
'ORCHESTRATIONS:',
'COORDINATIONS:',
'MANAGEMENTS:',
'AGGREGATIONS:',
'CONTROLLERS:',
'CLIENTS:',
'EXPOSERS:',
'PROVIDERS:',
'BASE:',
'COMPONENTS:',
'VIEWS:',
'PAGES:',
'ACCEPTANCE:',
'INTEGRATIONS:',
'CODE RUB:',
'MINOR FIX:',
'MEDIUM FIX:',
'MAJOR FIX:',
'DOCUMENTATION:',
'CONFIG:',
'STANDARD:',
'DESIGN:',
'BUSINESS:'
];


const pullRequest = context.payload.pull_request;


if (!pullRequest) {
console.log('No pull request context available.');
return;
}


const title = context.payload.pull_request.title;

const existingLabels = context.payload.pull_request.labels.map(label => label.name);


for (const prefix of prefixes) {
if (title.startsWith(prefix)) {
const label = prefix.slice(0, -1);
if (!existingLabels.includes(label)) {
console.log(`Applying label: ${label}`);
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.payload.pull_request.number,
labels: [label]
});
}
break;
}
}
permissions:
contents: read
pull-requests: write
requireIssueOrTask:
name: Require Issue Or Task Association
runs-on: ubuntu-latest
steps:
- name: Check out
uses: actions/checkout@v3
- name: Get PR Information
id: get_pr_info
uses: actions/github-script@v6
with:
script: >2-
const pr = await github.rest.pulls.get({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.payload.pull_request.number
});

const prOwner = pr.data.user.login || "";
const prBody = pr.data.body || "";
core.setOutput("prOwner", prOwner);
core.setOutput("description", prBody);
console.log(`PR Owner: ${prOwner}`);
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]' }}
run: >2-
PR_BODY="${{ steps.get_pr_info.outputs.description }}"
echo "::notice::Raw PR Body: $PR_BODY"

if [[ -z "$PR_BODY" ]]; then
echo "Error: PR description does not contain any links to issue(s)/task(s) (e.g., 'closes #123' / 'closes AB#123' / 'fixes #123' / 'fixes AB#123')."
exit 1
fi

PR_BODY=$(echo "$PR_BODY" | tr -s '\r\n' ' ' | tr '\n' ' ' | xargs)
echo "::notice::Normalized PR Body: $PR_BODY"

if echo "$PR_BODY" | grep -Piq "((close|closes|closed|fix|fixes|fixed|resolve|resolves|resolved)\s*(\[#\d+\]|\#\d+)|(?:close|closes|closed|fix|fixes|fixed|resolve|resolves|resolved)\s*(\[AB#\d+\]|AB#\d+))"; then
echo "Valid PR description."
else
echo "Error: PR description does not contain any links to issue(s)/task(s) (e.g., 'closes #123' / 'closes AB#123' / 'fixes #123' / 'fixes AB#123')."
exit 1
fi
shell: bash
permissions:
contents: read
pull-requests: read
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -374,3 +374,9 @@ local.appsettings.json
/NEL.MESH.Tests.Acceptance/local.appsettings.integration.json
/NEL.MESH.Tests.Integration/local.appsettings.integration.json
/NEL.MESH.Tests.Integration/local.appsettings.acceptance.json
/NEL.MESH.Tests.Integration.Witness/appsettings.Development.json
/NEL.MESH.UI/appsettings.Development.json
/NEL.MESH.Tests.Integration/appsettings.Development.json
/NEL.MESH.Tests.Acceptance/appsettings.Development.json
/NEL.MESH/appsettings.Development.json
/NEL.MESH.UI/appsettings.Development.json
4 changes: 2 additions & 2 deletions NEL.MESH.Infrastructure/NEL.MESH.Infrastructure.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<TargetFramework>net9.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="ADotNet" Version="3.0.2" />
<PackageReference Include="ADotNet" Version="4.0.0" />
</ItemGroup>

</Project>
8 changes: 7 additions & 1 deletion NEL.MESH.Infrastructure/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,13 @@ internal class Program
static void Main(string[] args)
{
var scriptGenerationService = new ScriptGenerationService();
scriptGenerationService.GenerateBuildScript();

scriptGenerationService.GenerateBuildScript(
branchName: "main",
projectName: "ISL.ReIdentification.Core",
dotNetVersion: "9.0.100");

scriptGenerationService.GeneratePrLintScript("main");
}
}
}
Loading
Loading