GitHubアクションでWinget上でパッケージを自動的にアップグレードする



マイワークフロー
Windowsでプロジェクトを配布したいオープンソースメンテナなら、Windowsパッケージマネージャの別名Winget上で公開したいと思います.これは、パッケージマニフェストを作成し、Windowsパッケージマネージャコミュニティリポジトリに提出することによって行うことができますdocumentation ).
あなたがアプリケーション/パッケージの各バージョンのためにそれをする必要があるので、それはすぐに退屈になることができます.幸いにも、Windowsパッケージマネージャマニフェストクリエーター別名Wingetと呼ばれるツールがあります.そういうわけで、私はアプリケーションの新しいバージョンがリリースされるたびに、アプリケーションマニフェストのアップグレードを自動化するワークフローを作成することに決めました.

提出カテゴリ
DIY展開

YAMLファイルまたはコードへのリンク

TechWatching / winget-package-submission
Wingetパッケージのアップグレードを自動化するワークフローが含まれます.
Wingetパッケージの提出
このリポジトリにはWingetパッケージのアップグレードを自動化するワークフローが含まれます
あなたは、これの詳細情報を見つけることができますarticle .
このワークフローの使用
このワークフローを使用するには、
  • コピーペースト.github/workflows/winget-submission.yml githubリポジトリ内のファイル
  • スコープでパットを生成するpublic_repo そして、名前であなたのプロジェクトの秘密にそれを加えてくださいProject_PAT
  • 環境変数値を置換するpackageFileName プロジェクトのGithubリリースのパッケージのファイル名を指定します
  • 環境変数値を置換するpackageId パッケージの識別子をWindowsのパッケージマネージャで
  • Windowsパッケージマネージャー
    このワークフローはWindows Package Manager Manifest Creator パッケージマニフェストの新しいバージョンを更新して送信するには
    ワークフロートリガ
    ワークフローは、リリースが発行されるたびにトリガされます.その背後にあるアイデアはパッケージの新しいバージョンのときに新しいパッケージを提出することです.
    View on GitHub
    name: Submit Nushell package to Windows Package Manager Community Repository 
    
    on:
      release:
        types: [published]
    
    env:
      packageFileName: windows.msi
      packageId: MyPackageIdInWinget
    
    jobs:
    
      winget:
        name: Publish winget package
        runs-on: windows-latest
        steps:
          - name: Submit package to Windows Package Manager Community Repository
            run: |
              iwr https://aka.ms/wingetcreate/latest -OutFile wingetcreate.exe
              $github = Get-Content '${{ github.event_path }}' | ConvertFrom-Json
              $installerUrl = $github.release.assets | Where-Object -Property name -match ${env:packageFileName} | Select -ExpandProperty browser_download_url -First 1
              .\wingetcreate.exe update ${env:packageId} -s -v $github.release.tag_name -u $installerUrl -t ${{ secrets.Project_PAT }}
    

    追加情報
    このワークフローに関する詳しい情報は、プロジェクトのREADMEにあります.
    私がビルドしたこのワークフローは、現在オープンソースプロジェクトで使用されていますNushell (githubの16 , 4 k星)最新のワークフローの実行を確認できますhere NuShellの新しいバージョンがリリースされるたびに、新しいパッケージマニフェストはWindowsパッケージマネージャーコミュニティリポジトリに提出されます.
    このワークフローがどのように動作するかについての詳細を知りたい場合は、NuShellやツールWingetで使用される方法でこのワークフローを使用してくださいhere .
    Wingetを通してそのパッケージを配布したい(そして自動化したい)他のプロジェクトは、このワークフローを使用することを歓迎します.お気軽にプロジェクトのニーズを満たすためにそれを変更する.