GitHub CLI Extensionのプロジェクト

GitHub CLI ExtensionのGoプロジェクトを作成する方法については、GitHub CLI Extension を Go 言語で作るを参照。

上記記事通りにgh extension createコマンドでプロジェクトを作成すると、GitHub Actionsのワークフローファイルとして.github/workflows/release.ymlが生成される。

.github/workflows/release.ymlの内容

生成される.github/workflows/release.ymlの内容は以下の通り。

name: release
on:
  push:
    tags:
      - "v*"
permissions:
  contents: write
  id-token: write
  attestations: write

jobs:
  release:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: cli/gh-extension-precompile@v2
        with:
          generate_attestations: true
          go_version_file: go.mod

手動でプロジェクトを作成した場合は、このワークフローファイルをリポジトリに追加すればよい。

リリースの実行

ワークフローファイルrelease.ymlでは、タグがv*の形式でプッシュされたときに実行されるように定義されている。 たとえば、v0.1.0というタグを作成してプッシュすると、リリースのワークフローが実行される。

git tag v0.1.0
git push origin v0.1.0

リリースが成功すると、GitHubリポジトリの「Releases」セクションに移動すると、ビルドされた拡張のバイナリファイルが添付される。

GitHubリポジトリでリリースされた拡張のインストール

リリースされた拡張は、GitHub CLIのgh extension installコマンドでインストールできる。

gh extension install [オーナー名]/[リポジトリ名]

[オーナー名]はGitHubリポジトリの所有者のユーザ名または組織名、[リポジトリ名]は拡張のリポジトリ名を指定する。

たとえば、オーナー名がsuerでリポジトリ名がgh-sampleの場合は以下のように実行する。

gh extension install suer/gh-sample

インストールが成功すると、gh extension listコマンドでインストールされた拡張が表示される。

$ gh extension list
NAME    REPO               VERSION
gh-sample  suer/gh-sample    v0.1.0

インストールされた拡張のアップグレード

インストールされた拡張を最新バージョンにアップグレードするには、以下のコマンドを実行する。

gh extension upgrade [オーナー名]/[リポジトリ名]