Skip to content

Windows Terminal

Windows Terminal #51

name: Windows Terminal
on:
workflow_dispatch:
inputs:
git_ref:
description: upstream git ref
default: 'v1.18.2822.0'
required: true
version:
description: build version
default: '1.18.2822.0'
required: true
jobs:
build:
name: Windows Terminal [${{ matrix.arch }}]
runs-on: ${{ matrix.runner }}
strategy:
fail-fast: false
matrix:
arch: [ x64, arm64 ]
os: [ windows ]
include:
- os: windows
runner: windows-2022
steps:
- name: Clone project
uses: actions/checkout@v4
- name: Clone Windows Terminal ${{ inputs.git_ref }}
uses: actions/checkout@v4
with:
repository: microsoft/terminal
ref: ${{ inputs.git_ref }}
submodules: true
path: WindowsTerminal
- name: Patch Windows Terminal
shell: pwsh
working-directory: WindowsTerminal
run: |
git apply ../patches/add-wt-base-settings-path-env-var.patch --ignore-whitespace
git apply ../patches/add-wt-parent-window-handle-env-var.patch --ignore-whitespace
git apply ../patches/add-wt-version-rc-files-to-projects.patch --ignore-whitespace
..\scripts\SetVersionInfo.ps1 (Get-Location).Path "${{ inputs.version }}"
Copy-Item ..\resources\images-rdm .\res\terminal -Recurse -Force
Copy-Item ..\resources\terminal.ico .\res\terminal.ico -Force
Remove-Item .\res\terminal\images -Recurse -Force
Remove-Item .\res\terminal\images-Dev -Recurse -Force
Remove-Item .\res\terminal\images-Pre -Recurse -Force
Copy-Item .\res\terminal\images-rdm .\res\terminal\images -Recurse -Force
Copy-Item .\res\terminal\images-rdm .\res\terminal\images-Dev -Recurse -Force
Copy-Item .\res\terminal\images-rdm .\res\terminal\images-Pre -Recurse -Force
$Params = @{
MarkdownNoticePath = ".\NOTICE.md";
OutputPath = ".\src\cascadia\CascadiaPackage\NOTICE.html";
}
.\build\scripts\Generate-ThirdPartyNotices.ps1 @Params
- name: Configure Windows Runner
shell: pwsh
run: |
docker system prune -a -f
New-Item "C:\workspace" -ItemType Directory
Move-Item ".\WindowsTerminal" "C:\workspace" -Force
- name: Build Windows Terminal
shell: pwsh
working-directory: C:\workspace\WindowsTerminal
run: |
$TargetPlatform="${{ matrix.arch }}"
Import-Module .\tools\OpenConsole.psm1
Set-MsBuildDevEnvironment
$MSBuildOptions = @(
"/p:Configuration=Release",
"/p:Platform=$TargetPlatform",
"/p:WindowsTerminalBranding=Release",
"/t:Terminal\CascadiaPackage",
"/m")
Invoke-OpenConsoleBuild $MSBuildOptions
- name: Package Windows Terminal
shell: pwsh
working-directory: C:\workspace\WindowsTerminal
run: |
$TargetPlatform="${{ matrix.arch }}"
$PackageVersion = "${{ inputs.version }}"
$PackageName = "WindowsTerminal-${PackageVersion}-${TargetPlatform}"
Import-Module .\tools\OpenConsole.psm1
Set-MsBuildDevEnvironment
$OutputDir = Get-Item ".\bin"
$XamlAppxPath = (Get-Item "src\cascadia\CascadiaPackage\AppPackages\*\Dependencies\$TargetPlatform\Microsoft.UI.Xaml*.appx").FullName
$MsixPackage = Get-Item ".\src\cascadia\CascadiaPackage\AppPackages\CascadiaPackage_*_${TargetPlatform}_Test\CascadiaPackage_*_${TargetPlatform}.msix"
$AppxSymbols = Get-Item ".\src\cascadia\CascadiaPackage\AppPackages\CascadiaPackage_*_${TargetPlatform}_Test\CascadiaPackage_*_${TargetPlatform}.appxsym"
& .\build\scripts\New-UnpackagedTerminalDistribution.ps1 -TerminalAppX $MsixPackage -XamlAppX $XamlAppxPath -Destination $OutputDir.FullName
Get-ChildItem -Path $OutputDir Microsoft.WindowsTerminal_*.zip | ForEach-Object {
Expand-Archive -Path $_.FullName -DestinationPath $_.Directory -Force; Remove-Item $_
}
$TerminalAppPath = Get-ChildItem -Path $OutputDir -Attributes Directory terminal-* | Select-Object -First 1
Copy-Item ".\res\fonts\*.ttf" -Destination $TerminalAppPath
Move-Item -Path $TerminalAppPath -Destination "$OutputDir\${PackageName}"
Compress-Archive "$OutputDir\${PackageName}\*" -DestinationPath "C:\workspace\${PackageName}.zip" -CompressionLevel Optimal
Expand-Archive -Path $AppxSymbols -Destination "$OutputDir\${PackageName}-symbols"
Compress-Archive "$OutputDir\${PackageName}-symbols\*" -DestinationPath "C:\workspace\${PackageName}-symbols.zip" -CompressionLevel Optimal
- name: Upload Windows Terminal package
uses: actions/upload-artifact@v4
with:
name: WindowsTerminal-${{ inputs.version }}-${{ matrix.arch }}
path: C:\workspace\WindowsTerminal-${{ inputs.version }}-${{ matrix.arch }}*.zip