From 90990fa97e9b37a3b97f005c0c71ba0245b7f700 Mon Sep 17 00:00:00 2001 From: Muhammad Danish Date: Wed, 8 Jan 2025 15:48:56 +0500 Subject: [PATCH] Add action for publishing package to WinGet (#962) --- .github/workflows/submit-winget.yml | 32 +++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 .github/workflows/submit-winget.yml diff --git a/.github/workflows/submit-winget.yml b/.github/workflows/submit-winget.yml new file mode 100644 index 00000000..44834062 --- /dev/null +++ b/.github/workflows/submit-winget.yml @@ -0,0 +1,32 @@ +name: Submit published release to WinGet community repository + +on: + release: + types: [published] + +jobs: + publish-winget: + name: Submit to WinGet repository + runs-on: windows-latest + steps: + # wingetcreate would sync fork automatically, but it may fail to do so if the fork + # is behind way too many commits or if the token doesn't have the right scopes. + # We sync the fork manually here to avoid any issues. Ref: https://github.com/microsoft/winget-create/issues/502 + - name: Sync winget-pkgs fork + run: gh repo sync garrytrinder/winget-pkgs -b master + env: + GH_TOKEN: ${{ secrets.WINGET_GITHUB_TOKEN }} + - name: Submit package using wingetcreate + run: | + # Get installer info from release event + $assets = '${{ toJSON(github.event.release.assets) }}' | ConvertFrom-Json + $x64InstallerUrl = $assets | Where-Object -Property name -match 'dev-proxy-installer-win-x64-v.*exe$' | Select-Object -First 1 | Select -ExpandProperty browser_download_url + $packageVersion = (${{ toJSON(github.event.release.tag_name) }}).Trim('v') + $isPrerelease = '${{ toJSON(github.event.release.prerelease) }}' | ConvertFrom-Json + + # WinGet PackageIdentifier + $packageId = $isPrerelease ? "Microsoft.DevProxy.Beta" : "Microsoft.DevProxy" + + # Update package using wingetcreate + Invoke-WebRequest https://aka.ms/wingetcreate/latest -OutFile wingetcreate.exe + .\wingetcreate.exe update $packageId --version $packageVersion --urls "$x64InstallerUrl|x64" --submit --token "${{ secrets.WINGET_GITHUB_TOKEN }}"