diff --git a/.github/workflows/release-winget.yml b/.github/workflows/release-winget.yml new file mode 100644 index 00000000000000..61010a5ce65abb --- /dev/null +++ b/.github/workflows/release-winget.yml @@ -0,0 +1,41 @@ +name: "release-winget" +on: + release: + types: [released] + + workflow_dispatch: + inputs: + release: + description: 'Release Id' + required: true + default: 'latest' + +jobs: + release: + runs-on: windows-latest + environment: release + steps: + - name: Publish manifest with winget-create + run: | + # Get correct release asset + $github = Get-Content '${{ github.event_path }}' | ConvertFrom-Json + $asset = $github.release.assets | Where-Object -Property name -match '64-bit.exe$' + + # Remove 'v' and 'vfs' from the version + $github.release.tag_name -match '\d.*' + $version = $Matches[0] -replace ".vfs","" + + # Download wingetcreate and create manifests + Invoke-WebRequest https://aka.ms/wingetcreate/latest -OutFile wingetcreate.exe + .\wingetcreate.exe update Microsoft.Git -u $asset.browser_download_url -v $version -o manifests + + # Manually substitute the name of the default branch in the License + # and Copyright URLs since the tooling cannot do that for us. + $shortenedVersion = $version -replace ".{4}$" + $manifestPath = dir -Path ./manifests -Filter Microsoft.Git.locale.en-US.yaml -Recurse | %{$_.FullName} + sed -i "s/vfs-[.0-9]*/vfs-$shortenedVersion/g" "$manifestPath" + + # Submit manifests + $manifestDirectory = Split-Path "$manifestPath" + .\wingetcreate.exe submit -t "${{ secrets.WINGET_TOKEN }}" $manifestDirectory + shell: powershell