Chapter 20無料公開

GitHubリポジトリ上にあるランブックを実行する

Ken’ichiro Oyama
Ken’ichiro Oyama
2023.01.16に更新

runnはGitHubリポジトリ上にあるランブックを直接実行できます。

github:// スキーム

GitHubリポジトリ上のランブックの指定には github:// スキームを使用します。

例えば、runnのリポジトリにある testdata/book/httpbin.yml を実行してみます。

$ export GITHUB_TOKEN=ghp_xxxxxXXXXXXxxxxxxXXXXXXX
$ runn run github://k1LoW/runn/testdata/book/httpbin.yml
Run 'Specify request contents by converting variables with built-in functions' on 'testing json request body'.steps[0]
-----START HTTP REQUEST-----
GET /get?var=C%2B%2B HTTP/1.1
Host: httpbin.org


-----END HTTP REQUEST-----
-----START HTTP RESPONSE-----
[...]
Run 'test' on 'testing json request body'.steps[8]
testing json request body ... ok

1 scenario, 0 skipped, 0 failures
$

github:// スキームは github://[owner]/[repo]/[file path] という構成で組み立てます。

また、内部ではGitHub APIを使用するので、あらかじめPersonal access tokenを環境変数 GITHUB_TOKEN など[1]に設定しておく必要があります。環境変数のルールは gh コマンドと同じ です。

[コラム] GitHub APIクライアントの初期化

runnではGitHub APIクライアントの初期化に github.com/k1LoW/go-github-client パッケージを使用しています。

https://github.com/k1LoW/go-github-client

go-github-clientパッケージは、google/go-githubのラッパーです。

GitHub APIクライアントを初期化するための環境変数の取得と設定をして *github.Client を初期化します。

環境変数取得の順番やルールは gh コマンドの環境変数の取得ルールに沿うという方針を採用しています。

GitHub APIを使用するツールを作るたびに同じコードを書いていたのでパッケージと切り出しています。

脚注
  1. もしくは GH_TOKENGH_ENTERPRISE_TOKEN など。 ↩︎