From d6cf9daa74046195c2bbafa90e47f150467b4f80 Mon Sep 17 00:00:00 2001 From: gbakeman Date: Fri, 17 Jan 2025 14:20:35 -0500 Subject: [PATCH] Build workflow improvements - Broke out environment prep and build into its own action - Some additional switches added to the msbuild command for slightly better operation and more verbose logging - Multilingual app toolkit installation added to build action, installed and enabled by default. - Debug build workflow applies to translation file changes as well. --- .github/actions/build/action.yml | 32 +++++++++ .../actions/test-vsix-installer/action.yml | 72 +++++++++++++++++++ .github/workflows/build-debug.yaml | 18 ++--- .github/workflows/build-translation.yaml | 25 ------- .../WinNUT-client.de-DE.xlf | 32 ++++----- 5 files changed, 129 insertions(+), 50 deletions(-) create mode 100644 .github/actions/build/action.yml create mode 100644 .github/actions/test-vsix-installer/action.yml delete mode 100644 .github/workflows/build-translation.yaml diff --git a/.github/actions/build/action.yml b/.github/actions/build/action.yml new file mode 100644 index 0000000..61184ca --- /dev/null +++ b/.github/actions/build/action.yml @@ -0,0 +1,32 @@ +name: Prepare environment and build + +description: Prepares the environment for building, and builds the solution with the given parameters. + +inputs: + multilingualBuild: + description: "Installs the Multilingual App Toolkit to enable language compiling." + default: true + required: false + type: boolean + + buildConfig: + description: "What configuration MSBuild will build for." + required: false + default: "Debug" + type: string + +runs: + using: "composite" + steps: + - name: Setup MSBuild + uses: microsoft/setup-msbuild@v2 + + - name: Install Multilingual App Toolkit extension + if: ${{ inputs.multilingualBuild }} + uses: ./.github/actions/test-vsix-installer + with: + packagename: 'dts-publisher.mat2022' + + - name: Build solution + shell: pwsh + run: msbuild -nologo -restore -t:build -p:Configuration=${{ inputs.buildConfig }} WinNUT_V2/WinNUT_V2.sln \ No newline at end of file diff --git a/.github/actions/test-vsix-installer/action.yml b/.github/actions/test-vsix-installer/action.yml new file mode 100644 index 0000000..8f7df3f --- /dev/null +++ b/.github/actions/test-vsix-installer/action.yml @@ -0,0 +1,72 @@ +name: 'Install a Visual Studio Extension' +description: 'Download the latest extension version and install in Visual Studio' +inputs: + packagename: + description: 'Package names from the Visual Studio Marketplace URL itemName parameter' + required: true +outputs: + logfile: + description: "Location on runner of VSIXInstaller's log." +runs: + using: "composite" + steps: + - id: vsix + shell: pwsh + run: | + $baseProtocol = "https:" + $baseHostName = "marketplace.visualstudio.com" + + $Uri = "$($baseProtocol)//$($baseHostName)/items?itemName=${{ inputs.packagename }}" + $VsixLocation = "$($env:Temp)\$([guid]::NewGuid()).vsix" + + $VSInstallDir = "C:\Program Files (x86)\Microsoft Visual Studio\Installer\resources\app\ServiceHub\Services\Microsoft.VisualStudio.Setup.Service" + + if (-Not $VSInstallDir) { + Write-Error "Visual Studio install directory is missing" + Exit 1 + } + Write-Host "Grabbing VSIX extension at $($Uri)" + $HTML = Invoke-WebRequest -Uri $Uri -UseBasicParsing -SessionVariable session + + Write-Host "Attempting to download ${{ inputs.packagename }}..." + $anchor = $HTML.Links | + Where-Object { $_.class -eq 'install-button-container' } | + Select-Object -ExpandProperty href + if (-Not $anchor) { + Write-Error "Could not find download anchor tag on the Visual Studio Extensions page" + Exit 1 + } + Write-Host "Anchor is $($anchor)" + $href = "$($baseProtocol)//$($baseHostName)$($anchor)" + Write-Host "Href is $($href)" + Invoke-WebRequest $href -OutFile $VsixLocation -WebSession $session + + if (-Not (Test-Path $VsixLocation)) { + Write-Error "Downloaded VSIX file could not be located" + Exit 1 + } + Write-Host "VSInstallDir is $($VSInstallDir)" + Write-Host "VsixLocation is $($VsixLocation)" + Write-Host "Installing ${{ inputs.packagename }}..." + + $proc = Start-Process -Filepath "$($VSInstallDir)\VSIXInstaller" -WorkingDirectory $env:ProgramFiles -ArgumentList "/q /l:vsixinst-out.log $($VsixLocation)" -PassThru + + while (-Not ($proc.HasExited)) { + Write-Host -NoNewLine "Process Information:" + Write-Host -NoNewLine $proc + Start-Sleep 1 + } + + Write-Host "Process exited." + Write-Host "Cleanup..." + rm $VsixLocation + + if ($proc.ExitCode -ne 0) { + Write-Host "Error(s) Encountered: $($proc.ExitCode)" + Write-Host Select-String -Path $env:temp\vsixinst-out.log -Pattern "^.*Exception.*$" + } + else { + Write-Host "Installation of ${{ inputs.packagename }} complete!" + } + + exit $proc.ExitCode \ No newline at end of file diff --git a/.github/workflows/build-debug.yaml b/.github/workflows/build-debug.yaml index f90fb1b..1f2abbf 100644 --- a/.github/workflows/build-debug.yaml +++ b/.github/workflows/build-debug.yaml @@ -7,23 +7,23 @@ on: paths: - '**.vb' - '**.vbproj' + - "**.xlf" jobs: build-debug: runs-on: windows-latest steps: - - name: "Get Short SHA" - run: echo "SHORT_SHA=$("${{ github.sha }}".SubString(0, 8))" >> $env:GITHUB_ENV - - - name: Setup MSBuild - uses: microsoft/setup-msbuild@v2 - - name: Checkout Code uses: actions/checkout@v4 - # msbuild cannot handle .vdproj Installer projects, so only build debug for now. - - name: Build solution - run: msbuild -t:build -restore -p:Configuration=Debug WinNUT_V2/WinNUT_V2.sln + - id: build + name: Run Build + uses: ./.github/actions/build + with: + buildConfig: "Debug" + + - name: "Get Short SHA" + run: echo "SHORT_SHA=$("${{ github.sha }}".SubString(0, 8))" >> $env:GITHUB_ENV - name: Upload Artifact uses: actions/upload-artifact@v4 diff --git a/.github/workflows/build-translation.yaml b/.github/workflows/build-translation.yaml deleted file mode 100644 index e207796..0000000 --- a/.github/workflows/build-translation.yaml +++ /dev/null @@ -1,25 +0,0 @@ -name: build-translation - -on: - workflow_dispatch: - - pull_request: - branches: Dev-2.2 - paths: - - "**.xlf" - -jobs: - build-translation: - runs-on: windows-latest - steps: - - name: Checkout code - uses: actions/checkout@v3 - - name: Install Multilingual App Toolkit extension - uses: microcompiler/install-vsix@db1f973c3d24d1ddc0c38f14d0e1e3a85b2ccb21 - with: - packagename: 'dts-publisher.mat2022' - - name: Build solution in Debug configuration - uses: ./.github/actions/build-solution - with: - build-mode: "Debug" - version: "${{ vars.PRERELEASE_VERSION }}.*" \ No newline at end of file diff --git a/WinNUT_V2/WinNUT-Client/MultilingualResources/WinNUT-client.de-DE.xlf b/WinNUT_V2/WinNUT-Client/MultilingualResources/WinNUT-client.de-DE.xlf index 9e35387..408c2f0 100644 --- a/WinNUT_V2/WinNUT-Client/MultilingualResources/WinNUT-client.de-DE.xlf +++ b/WinNUT_V2/WinNUT-Client/MultilingualResources/WinNUT-client.de-DE.xlf @@ -1887,15 +1887,15 @@ Please correct the error, or cancel the upgrade dialog to continue with the defa Unavailable Indicate that a variable is unavailable - + ..\Resources\RepeatHS.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\RepeatHS.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - + ..\Resources\disconnect2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\disconnect2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - + ..\Resources\internetconnection.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\internetconnection.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -3185,7 +3185,7 @@ Please correct the error, or cancel the upgrade dialog to continue with the defa - + 180, 22 180, 22 @@ -3193,35 +3193,35 @@ Please correct the error, or cancel the upgrade dialog to continue with the defa Connect Connect - + - + - + - + - + - + - + 177, 6 177, 6 - + 180, 22 180, 22 @@ -3229,15 +3229,15 @@ Please correct the error, or cancel the upgrade dialog to continue with the defa Persist Persist - + False False - + NoControl NoControl - + False False @@ -4171,7 +4171,7 @@ Remaining Time : {WinNUT.Lbl_VRTime.Text} NoControl - NoControl + NoControl3