usacloud(さくらのクラウドCLIクライアント)のChocolateyパッケージです。
choco install usacloudchoco upgrade usacloudchoco uninstall usacloudGitHub Actionsによる自動ビルド・配信を行っています。
- GitHub APIからsacloud/usacloudの最新リリースバージョンを取得
- Chocolatey上の登録済みバージョン(審査中を含む)と比較し、同一であればスキップ
- Windows 32bit/64bitのzipをダウンロードしSHA512ハッシュを算出
- テンプレートファイルのプレースホルダーを実際の値に置換
choco packで.nupkgを生成- ローカルインストールテスト(
choco install→usacloud --version→choco uninstall) - テスト成功後、Chocolateyへ自動push
GitHub Actionsのスケジュール実行により、毎日UTC 0:00(JST 9:00)にusacloudの新バージョンを確認しています。
新バージョンが検出された場合のみビルド・配信が実行されます。
GitHub Actionsの「Run workflow」から手動実行する際、forceオプションを有効にすると、既存バージョンのチェックをスキップして強制的にビルド・アップロードを行えます。
手動でパッケージをビルド・テストする場合の手順です。
# 最新バージョンの取得
$release = Invoke-RestMethod -Uri "https://api.github.com/repos/sacloud/usacloud/releases/latest"
$version = $release.tag_name -replace "^v", ""
# zipのダウンロードとハッシュ算出
$url32 = "https://github.com/sacloud/usacloud/releases/download/v${version}/usacloud_windows-386.zip"
$url64 = "https://github.com/sacloud/usacloud/releases/download/v${version}/usacloud_windows-amd64.zip"
Invoke-WebRequest $url32 -OutFile .\x32.zip
Invoke-WebRequest $url64 -OutFile .\x64.zip
$hash32 = (Get-FileHash .\x32.zip -Algorithm SHA512).Hash
$hash64 = (Get-FileHash .\x64.zip -Algorithm SHA512).Hash
# プレースホルダーの置換
cd usacloud
(Get-Content '.\usacloud.nuspec' -Raw).Replace("__VERSION__", $version) | Out-File '.\usacloud.nuspec' -Encoding utf8
(Get-Content '.\tools\chocolateyinstall.ps1' -Raw).Replace("__VERSION__", "v$version").Replace("__HASH32__", $hash32).Replace("__HASH64__", $hash64) | Out-File '.\tools\chocolateyinstall.ps1' -Encoding utf8
# パッケージ作成とテスト
choco pack
choco install usacloud -s .\ -f
usacloud --version
choco uninstall usacloud注意: テンプレートファイルのプレースホルダー(
__VERSION__,__HASH32__,__HASH64__)を直接書き換えてコミットしないでください。これらはCI時に動的に置換されます。
| ファイル | 説明 |
|---|---|
usacloud/usacloud.nuspec |
Chocolateyパッケージ定義 |
usacloud/tools/chocolateyinstall.ps1 |
インストールスクリプト |
usacloud/tools/chocolateyuninstall.ps1 |
アンインストールスクリプト |
.github/workflows/chocolatey.yml |
GitHub Actions CI/CD設定 |
- usacloud - さくらのクラウドCLIクライアント本体
- usacloudドキュメント
- Chocolateyパッケージページ