.github/workflows/dotnet-desktop.yml #174
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| on: | |
| workflow_dispatch: | |
| pull_request: | |
| push: | |
| branches: | |
| - "*" | |
| paths-ignore: | |
| - README.md | |
| tags: | |
| - "*" | |
| schedule: | |
| - cron: "0 18 * * 0" | |
| env: | |
| solution: ${{ github.workspace }}/Ocaramba.templates.sln | |
| buildPlatform: Any CPU | |
| buildConfiguration: Release | |
| templateVersion: 2.1.0 | |
| OcarambaVersion: 4.2.5 | |
| SeleniumWebDriverVersion: 4.35.0 | |
| SeleniumSupportVersion: 4.35.0 | |
| SeleniumWebdriverChromeDriverVersion: 138.0.7204.9400 | |
| SeleniumWebDriverGeckoDriverVersion: 0.36.0 | |
| SeleniumWebDriverIEDriverVersion: 4.14.0 | |
| SeleniumWebDriverMSEdgeDriverVersion: 139.0.3405.102 | |
| NUnitVersion: 4.4.0 | |
| NUnit3TestAdapterVersion: 5.1.0 | |
| MicrosoftNetTestSdkVersion: 17.14.1 | |
| MSTestTestAdapterVersion: 3.9.3 | |
| MSTestTestFrameworkVersion: 3.9.3 | |
| NPOIVersion: 2.7.4 | |
| NLogVersion: 6.0.3 | |
| SystemTextJsonVersion: 9.0.7 | |
| SystemTextEncodingsWebVersion: 9.0.7 | |
| jobs: | |
| build: | |
| runs-on: windows-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up MSBuild | |
| uses: microsoft/setup-msbuild@v1 | |
| - shell: powershell | |
| run: | | |
| $tags = git tag --sort=-creatordate | |
| $tag = $tags[0] | |
| echo "{frameworkVersion}={value}" >> "$tag" | |
| if: startsWith(github.ref, 'refs/tags/') | |
| - shell: powershell | |
| run: '((Get-Content -path ./Ocaramba.Templates.VSIX/source.extension.vsixmanifest -Raw) -replace ''Version="\d\.\d.\d" Language'',''Version="${{ env.templateVersion }}" Language'') | Set-Content -Path ./Ocaramba.Templates.VSIX/source.extension.vsixmanifest' | |
| - name: Run version extractor | |
| id: versions | |
| shell: pwsh | |
| run: | | |
| pwsh ./scripts/get-versions.ps1 | |
| - name: Set environment variables from version outputs | |
| shell: pwsh | |
| run: | | |
| Write-Host "Setting environment variables from extracted versions..." | |
| $env:OcarambaVersion = "${{ steps.versions.outputs.OcarambaVersion }}" | |
| $env:SeleniumWebDriverVersion = "${{ steps.versions.outputs.SeleniumWebDriverVersion }}" | |
| $env:SeleniumSupportVersion = "${{ steps.versions.outputs.SeleniumSupportVersion }}" | |
| $env:SeleniumWebdriverChromeDriverVersion = "${{ steps.versions.outputs.SeleniumWebdriverChromeDriverVersion }}" | |
| $env:SeleniumWebDriverGeckoDriverVersion = "${{ steps.versions.outputs.SeleniumWebDriverGeckoDriverVersion }}" | |
| $env:SeleniumWebDriverIEDriverVersion = "${{ steps.versions.outputs.SeleniumWebDriverIEDriverVersion }}" | |
| $env:SeleniumWebDriverMSEdgeDriverVersion = "${{ steps.versions.outputs.SeleniumWebDriverMSEdgeDriverVersion }}" | |
| $env:NUnitVersion = "${{ steps.versions.outputs.NUnitVersion }}" | |
| $env:NUnit3TestAdapterVersion = "${{ steps.versions.outputs.NUnit3TestAdapterVersion }}" | |
| $env:MicrosoftNetTestSdkVersion = "${{ steps.versions.outputs.MicrosoftNetTestSdkVersion }}" | |
| $env:MSTestTestAdapterVersion = "${{ steps.versions.outputs.MSTestTestAdapterVersion }}" | |
| $env:MSTestTestFrameworkVersion = "${{ steps.versions.outputs.MSTestTestFrameworkVersion }}" | |
| $env:NPOIVersion = "${{ steps.versions.outputs.NPOIVersion }}" | |
| $env:NLogVersion = "${{ steps.versions.outputs.NLogVersion }}" | |
| # Note: GitHub normalizes env var names to uppercase | |
| $env:SystemTextJsonVersion = "${{ steps.versions.outputs.SystemTextJsonVersion }}" | |
| $env:SystemTextEncodingsWebVersion = "${{ steps.versions.outputs.SystemTextEncodingsWebVersion }}" | |
| # Export to GITHUB_ENV so next steps can use them | |
| Add-Content -Path $env:GITHUB_ENV -Value "OcarambaVersion=$env:OcarambaVersion" | |
| Add-Content -Path $env:GITHUB_ENV -Value "SeleniumWebDriverVersion=$env:SeleniumWebDriverVersion" | |
| Add-Content -Path $env:GITHUB_ENV -Value "SeleniumSupportVersion=$env:SeleniumSupportVersion" | |
| Add-Content -Path $env:GITHUB_ENV -Value "SeleniumWebdriverChromeDriverVersion=$env:SeleniumWebdriverChromeDriverVersion" | |
| Add-Content -Path $env:GITHUB_ENV -Value "SeleniumWebDriverGeckoDriverVersion=$env:SeleniumWebDriverGeckoDriverVersion" | |
| Add-Content -Path $env:GITHUB_ENV -Value "SeleniumWebDriverIEDriverVersion=$env:SeleniumWebDriverIEDriverVersion" | |
| Add-Content -Path $env:GITHUB_ENV -Value "SeleniumWebDriverMSEdgeDriverVersion=$env:SeleniumWebDriverMSEdgeDriverVersion" | |
| Add-Content -Path $env:GITHUB_ENV -Value "NUnitVersion=$env:NUnitVersion" | |
| Add-Content -Path $env:GITHUB_ENV -Value "NUnit3TestAdapterVersion=$env:NUnit3TestAdapterVersion" | |
| Add-Content -Path $env:GITHUB_ENV -Value "MicrosoftNetTestSdkVersion=$env:MicrosoftNetTestSdkVersion" | |
| Add-Content -Path $env:GITHUB_ENV -Value "MSTestTestAdapterVersion=$env:MSTestTestAdapterVersion" | |
| Add-Content -Path $env:GITHUB_ENV -Value "MSTestTestFrameworkVersion=$env:MSTestTestFrameworkVersion" | |
| Add-Content -Path $env:GITHUB_ENV -Value "NPOIVersion=$env:NPOIVersion" | |
| Add-Content -Path $env:GITHUB_ENV -Value "NLogVersion=$env:NLogVersion" | |
| Add-Content -Path $env:GITHUB_ENV -Value "SystemTextJsonVersion=$env:SystemTextJsonVersion" | |
| Add-Content -Path $env:GITHUB_ENV -Value "SystemTextEncodingsWebVersion=$env:SystemTextEncodingsWebVersion" | |
| - shell: powershell | |
| run: ./setPackagesVersions.ps1 | |
| - name: Setup nuget | |
| uses: nuget/setup-nuget@v2 | |
| with: | |
| nuget-version: latest | |
| - name: Set project versions | |
| id: update | |
| uses: vers-one/dotnet-project-version-updater@v1.7 | |
| with: | |
| file: | | |
| "**/Ocaramba**.csproj", "!**/Ocaramba.Templates.csproj" | |
| version: ${{ env.templateVersion }} | |
| - name: Set environment variables from version outputs | |
| shell: pwsh | |
| run: | | |
| # Path to the VSIX manifest | |
| $manifestPath = "Ocaramba.Templates.VSIX/source.extension.vsixmanifest" | |
| $version = $env:templateVersion # or replace with your own variable source | |
| # Load XML | |
| [xml]$xml = Get-Content $manifestPath | |
| # Navigate to the Identity node | |
| $identityNode = $xml.PackageManifest.Metadata.Identity | |
| if (-not $identityNode) { | |
| throw "Identity node not found in manifest." | |
| } | |
| # Update the Version attribute | |
| $identityNode.Version = $version | |
| # Save the updated manifest | |
| $xml.Save($manifestPath) | |
| Write-Host "Updated VSIX manifest version to $version" | |
| - run: msbuild -t:Restore /p:configuration='${{ env.buildConfiguration }}' /v:minimal | |
| - run: msbuild '${{ env.solution }}' /p:configuration='${{ env.buildConfiguration }}' /p:platform='${{ env.buildPlatform }}' /v:minimal | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| path: ./Ocaramba.Templates.VSIX/bin/Release/Ocaramba.Templates.vsix | |
| name: Template | |
| - name: "Upload vsix artifact to Release" | |
| if: success() && startsWith(github.ref, 'refs/tags/') | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: gh release upload ${{ env.templateVersion }} ./Ocaramba.Templates.VSIX/bin/Release/Ocaramba.Templates.vsix | |