Skip to content

.github/workflows/dotnet-desktop.yml #174

.github/workflows/dotnet-desktop.yml

.github/workflows/dotnet-desktop.yml #174

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