From 710a847419112bd4e4c930d56043360f909905d4 Mon Sep 17 00:00:00 2001 From: Jerome Haltom Date: Fri, 20 Dec 2024 17:27:36 -0600 Subject: [PATCH] Upgrade. --- .github/workflows/Cogito.Components.yml | 133 ++++++++++++++++++ .gitignore | 4 +- Cogito.Components.dist.msbuildproj | 32 +++++ Cogito.Components.sln | 34 ++++- Directory.Build.props | 42 ++++-- GitVersion.yml | 16 ++- global.json | 9 ++ icon.png | Bin 5051 -> 15824 bytes .../Cogito.Components}/AssemblyModule.cs | 0 .../Cogito.Components.csproj | 1 - .../Cogito.Components}/IRunnable.cs | 0 .../Cogito.Components}/RunnableHost.cs | 0 .../Cogito.Components}/RunnableHostService.cs | 0 .../SynchronizationService.cs | 0 src/dist-nuget/dist-nuget.csproj | 14 ++ src/dist-tests/dist-tests.csproj | 34 +++++ 16 files changed, 304 insertions(+), 15 deletions(-) create mode 100644 .github/workflows/Cogito.Components.yml create mode 100644 Cogito.Components.dist.msbuildproj create mode 100644 global.json rename {Cogito.Components => src/Cogito.Components}/AssemblyModule.cs (100%) rename {Cogito.Components => src/Cogito.Components}/Cogito.Components.csproj (91%) rename {Cogito.Components => src/Cogito.Components}/IRunnable.cs (100%) rename {Cogito.Components => src/Cogito.Components}/RunnableHost.cs (100%) rename {Cogito.Components => src/Cogito.Components}/RunnableHostService.cs (100%) rename {Cogito.Components => src/Cogito.Components}/SynchronizationService.cs (100%) create mode 100644 src/dist-nuget/dist-nuget.csproj create mode 100644 src/dist-tests/dist-tests.csproj diff --git a/.github/workflows/Cogito.Components.yml b/.github/workflows/Cogito.Components.yml new file mode 100644 index 0000000..202e8c5 --- /dev/null +++ b/.github/workflows/Cogito.Components.yml @@ -0,0 +1,133 @@ +name: Cogito.Components + +on: + workflow_dispatch: + push: + branches: + - main + - develop + pull_request: + branches: + - main + - develop + release: + types: + - created + +jobs: + build: + name: Build + runs-on: ubuntu-latest + steps: + - name: Checkout Source + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Setup .NET 6.0 + uses: actions/setup-dotnet@v4 + with: + dotnet-version: 6.0.x + - name: Setup .NET 8.0 + uses: actions/setup-dotnet@v4 + with: + dotnet-version: 8.0.x + - name: Install GitVersion + uses: gittools/actions/gitversion/setup@v3 + with: + versionSpec: 5.x + - name: Execute GitVersion + uses: gittools/actions/gitversion/execute@v3 + with: + useConfigFile: true + - name: Add NuGet Source (GitHub) + shell: pwsh + run: dotnet nuget add source --username USERNAME --password $env:GITHUB_TOKEN --store-password-in-clear-text --name alethic $env:GITHUB_REPOS + env: + GITHUB_REPOS: https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: NuGet Restore + run: dotnet restore Cogito.Components.sln + - name: Build + shell: pwsh + run: | + dotnet msbuild /m /bl ` + /p:Configuration="Release" ` + /p:Platform="Any CPU" ` + /p:Version=${env:GitVersion_FullSemVer} ` + /p:AssemblyVersion=${env:GitVersion_AssemblySemVer} ` + /p:InformationalVersion=${env:GitVersion_InformationalVersion} ` + /p:FileVersion=${env:GitVersion_AssemblySemFileVer} ` + /p:PackageVersion=${env:GitVersion_FullSemVer} ` + /p:RepositoryUrl="${env:GITHUB_SERVER_URL}/${env:GITHUB_REPOSITORY}.git" ` + /p:PackageProjectUrl="${env:GITHUB_SERVER_URL}/${env:GITHUB_REPOSITORY}" ` + /p:BuildInParallel=true ` + /p:ContinuousIntegrationBuild=true ` + Cogito.Components.dist.msbuildproj + - name: Upload MSBuild Log + if: ${{ always() }} + uses: actions/upload-artifact@v4 + with: + name: msbuild.binlog + path: msbuild.binlog + - name: Upload NuGet Packages + uses: actions/upload-artifact@v4 + with: + name: nuget + path: dist/nuget + - name: Package Tests + run: tar czvf tests.tar.gz tests + working-directory: dist + - name: Upload Tests + uses: actions/upload-artifact@v4 + with: + name: tests + path: dist/tests.tar.gz + release: + name: Release + if: github.event_name != 'pull_request' + needs: + - build + runs-on: ubuntu-22.04 + steps: + - name: Checkout Source + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Install GitVersion + uses: gittools/actions/gitversion/setup@v3 + with: + versionSpec: 5.x + - name: Execute GitVersion + id: GitVersion + uses: gittools/actions/gitversion/execute@v3 + with: + useConfigFile: true + - name: Download NuGet Packages + uses: actions/download-artifact@v4 + with: + name: nuget + path: dist/nuget + - name: Create Release + if: github.ref_type == 'tag' + uses: ncipollo/release-action@v1 + with: + tag: ${{ steps.GitVersion.outputs.semVer }} + allowUpdates: true + omitBodyDuringUpdate: true + artifacts: dist/nuget/*.nupkg,dist/nuget/*.snupkg,dist/doc.zip + makeLatest: true + token: ${{ secrets.GITHUB_TOKEN }} + - name: Push NuGet (GitHub) + if: github.event_name != 'pull_request' + shell: pwsh + run: dotnet nuget push dist/nuget/*.nupkg --source $env:GITHUB_REPOS --api-key $env:GITHUB_TOKEN --skip-duplicate + env: + GITHUB_REPOS: https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Push NuGet + if: github.ref_type == 'tag' + shell: pwsh + run: dotnet nuget push dist/nuget/*.nupkg --source $env:NUGET_REPOS --api-key $env:NUGET_TOKEN --skip-duplicate + env: + NUGET_REPOS: https://api.nuget.org/v3/index.json + NUGET_TOKEN: ${{ secrets.NUGET_TOKEN }} diff --git a/.gitignore b/.gitignore index 3c4efe2..c2b1370 100644 --- a/.gitignore +++ b/.gitignore @@ -258,4 +258,6 @@ paket-files/ # Python Tools for Visual Studio (PTVS) __pycache__/ -*.pyc \ No newline at end of file +*.pyc + +/dist \ No newline at end of file diff --git a/Cogito.Components.dist.msbuildproj b/Cogito.Components.dist.msbuildproj new file mode 100644 index 0000000..ce0119a --- /dev/null +++ b/Cogito.Components.dist.msbuildproj @@ -0,0 +1,32 @@ + + + $(DISTDIR) + $([System.IO.Path]::Combine('$(MSBuildThisFileDirectory)', 'dist')) + $([System.IO.Path]::GetFullPath('$(DistDir)')) + $([System.IO.Path]::Combine('$(MSBuildThisFileDirectory)', 'Cogito.Components.sln')) + Release + Any CPU + + + + + dist%5Cdist-nuget:Publish + PublishDir=$(DistDir)\nuget + + + dist%5Cdist-tests:Publish + PublishDir=$(DistDir)\tests + + + + + + <_TargetsForPublish Include="@(TargetsForPublish)"> + %(TargetsForPublish.Properties) + + + + + + + diff --git a/Cogito.Components.sln b/Cogito.Components.sln index a425bae..33895c1 100644 --- a/Cogito.Components.sln +++ b/Cogito.Components.sln @@ -1,15 +1,30 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.29721.120 +# Visual Studio Version 17 +VisualStudioVersion = 17.12.35527.113 d17.12 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{7271F8CF-C4EC-47FE-91F3-FF3331482C4F}" ProjectSection(SolutionItems) = preProject + .gitattributes = .gitattributes + .gitignore = .gitignore appveyor.yml = appveyor.yml + Cogito.Components.dist.msbuildproj = Cogito.Components.dist.msbuildproj + .github\workflows\Cogito.Components.yml = .github\workflows\Cogito.Components.yml Directory.Build.props = Directory.Build.props + GitVersion.yml = GitVersion.yml + global.json = global.json + icon.png = icon.png EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cogito.Components", "Cogito.Components\Cogito.Components.csproj", "{ABD359E9-83EF-4EB5-8E6A-CC557D6084DE}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cogito.Components", "src\Cogito.Components\Cogito.Components.csproj", "{ABD359E9-83EF-4EB5-8E6A-CC557D6084DE}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{5D054F56-DDC3-4903-97AF-9219CF5DB90B}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "dist", "dist", "{89402946-2BFF-4001-9E37-D17FA5145204}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "dist-nuget", "src\dist-nuget\dist-nuget.csproj", "{FC7D93CC-8C38-42BB-9086-0D96C9DABE6D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "dist-tests", "src\dist-tests\dist-tests.csproj", "{DF0EE9F1-ED13-4C3E-91B8-A97D362AE401}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -21,10 +36,23 @@ Global {ABD359E9-83EF-4EB5-8E6A-CC557D6084DE}.Debug|Any CPU.Build.0 = Debug|Any CPU {ABD359E9-83EF-4EB5-8E6A-CC557D6084DE}.Release|Any CPU.ActiveCfg = Release|Any CPU {ABD359E9-83EF-4EB5-8E6A-CC557D6084DE}.Release|Any CPU.Build.0 = Release|Any CPU + {FC7D93CC-8C38-42BB-9086-0D96C9DABE6D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FC7D93CC-8C38-42BB-9086-0D96C9DABE6D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FC7D93CC-8C38-42BB-9086-0D96C9DABE6D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FC7D93CC-8C38-42BB-9086-0D96C9DABE6D}.Release|Any CPU.Build.0 = Release|Any CPU + {DF0EE9F1-ED13-4C3E-91B8-A97D362AE401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DF0EE9F1-ED13-4C3E-91B8-A97D362AE401}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DF0EE9F1-ED13-4C3E-91B8-A97D362AE401}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DF0EE9F1-ED13-4C3E-91B8-A97D362AE401}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {ABD359E9-83EF-4EB5-8E6A-CC557D6084DE} = {5D054F56-DDC3-4903-97AF-9219CF5DB90B} + {FC7D93CC-8C38-42BB-9086-0D96C9DABE6D} = {89402946-2BFF-4001-9E37-D17FA5145204} + {DF0EE9F1-ED13-4C3E-91B8-A97D362AE401} = {89402946-2BFF-4001-9E37-D17FA5145204} + EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {FF4B3820-4206-4316-82A5-DEA5792C6A71} EndGlobalSection diff --git a/Directory.Build.props b/Directory.Build.props index b58a75b..6d3f49e 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -1,15 +1,39 @@ - Jerome Haltom - Alethic Solutions - https://github.com/alethic/Cogito.Components - git - https://github.com/alethic/Cogito.Components - MIT - icon.png - 8.0 + 12.0 + - + + + + Cogito.Components + @(Authors, ',') + $([System.DateTime]::UtcNow.Year.ToString()) + Copyright © $(CurrentYear) @(Authors, ', ') + + + + 0 + $(DefaultMajorVersion).0.0-dev + $(DefaultMajorVersion).0.0.0 + $(DefaultMajorVersion).0.0.0 + $(DefaultMajorVersion).0.0.0 + + + + https://github.com/alethic/Cogito.Components.git + git + https://github.com/alethic/Cogito.Components + $(Version) + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + diff --git a/GitVersion.yml b/GitVersion.yml index 0093d88..cfabef0 100644 --- a/GitVersion.yml +++ b/GitVersion.yml @@ -1 +1,15 @@ -mode: Mainline +mode: ContinuousDeployment +assembly-file-versioning-format: '{Major}.{Minor}.{Patch}.{WeightedPreReleaseNumber ?? 0}' +major-version-bump-message: '\+semver:\s?(major)' +minor-version-bump-message: '\+semver:\s?(minor)' +patch-version-bump-message: '\+semver:\s?(patch)' +branches: + main: + regex: ^main$ + tag: pre + increment: Patch + develop: + regex: ^develop$ + tag: dev + increment: Minor + \ No newline at end of file diff --git a/global.json b/global.json new file mode 100644 index 0000000..5b3ef7d --- /dev/null +++ b/global.json @@ -0,0 +1,9 @@ +{ + "sdk": { + "version": "8.0.100", + "rollForward": "latestFeature" + }, + "msbuild-sdks": { + "Microsoft.Build.NoTargets": "3.7.56" + } +} diff --git a/icon.png b/icon.png index be3b2301c808a464b5882b7a566ad6f51b78f938..9735fdaea983854c0516b996972692f1c42f4fbf 100644 GIT binary patch literal 15824 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 netstandard2.0 Base of the Alethic Cogito Component Framework. The Cogito Component Framework is a composable set of modular functionality enabled through Autofac assembly module scanning. - true diff --git a/Cogito.Components/IRunnable.cs b/src/Cogito.Components/IRunnable.cs similarity index 100% rename from Cogito.Components/IRunnable.cs rename to src/Cogito.Components/IRunnable.cs diff --git a/Cogito.Components/RunnableHost.cs b/src/Cogito.Components/RunnableHost.cs similarity index 100% rename from Cogito.Components/RunnableHost.cs rename to src/Cogito.Components/RunnableHost.cs diff --git a/Cogito.Components/RunnableHostService.cs b/src/Cogito.Components/RunnableHostService.cs similarity index 100% rename from Cogito.Components/RunnableHostService.cs rename to src/Cogito.Components/RunnableHostService.cs diff --git a/Cogito.Components/SynchronizationService.cs b/src/Cogito.Components/SynchronizationService.cs similarity index 100% rename from Cogito.Components/SynchronizationService.cs rename to src/Cogito.Components/SynchronizationService.cs diff --git a/src/dist-nuget/dist-nuget.csproj b/src/dist-nuget/dist-nuget.csproj new file mode 100644 index 0000000..d32f3b9 --- /dev/null +++ b/src/dist-nuget/dist-nuget.csproj @@ -0,0 +1,14 @@ + + + netstandard2.0 + false + false + + + + + . + + + + diff --git a/src/dist-tests/dist-tests.csproj b/src/dist-tests/dist-tests.csproj new file mode 100644 index 0000000..caddfb3 --- /dev/null +++ b/src/dist-tests/dist-tests.csproj @@ -0,0 +1,34 @@ + + + netstandard2.0 + false + false + + + + + + + + + + + + <_ProjectName>%(TestTarget.ProjectName) + <_ProjectFile>%(TestTarget.ProjectFile) + <_ProjectFile Condition=" '$(_ProjectFile)' == '' And Exists('..\$(_ProjectName)\$(_ProjectName).csproj') ">..\$(_ProjectName)\$(_ProjectName).csproj + <_ProjectFile Condition=" '$(_ProjectFile)' == '' And Exists('..\$(_ProjectName)\$(_ProjectName).msbuildproj') ">..\$(_ProjectName)\$(_ProjectName).msbuildproj + <_TargetFramework>%(TestTarget.TargetFramework) + + + + + + TargetFramework=$(_TargetFramework) + $(_ProjectName)\$(_TargetFramework) + PreserveNewest + + + + +