📌
GitHub CLI でリポジトリへ secret を設定
これまではウェブの UI から設定していたのですが、そこそこ多い個数の変数を設定する必要がでてきたので GitHub CLI を使うことにしました。
マニュアル
Secret をリポジトリ(Environment) へ設定するには secret
コマンドの set
を利用します。
試してみる
ここでは設定と削除を試してみます。
リポジトリ Secret へ設定
set
では Secret の内容を --body
と標準入力などから指定することになっています。
--body
で設定
$ gh secret set BASE_URL --body "foo"
✓ Set secret BASE_URL for hankei6km/test-collage-cms-content
$ gh secret list
BASE_URL Updated 2021-12-28
ウェブ UI でリポジトリ secrets を確認
標準入力で設定
$ gh secret set BASE_URL < base_url_body.txt
✓ Set secret BASE_URL for hankei6km/test-collage-cms-content
$ gh secret list
BASE_URL Updated 2021-12-28
Environment secrets へ設定
Environment は --env
で指定します。
$ gh secret set --env pages BASE_URL < base_url_body.txt
✓ Set secret BASE_URL for hankei6km/test-collage-cms-content
$ gh secret list --env pages
BASE_URL Updated 2021-12-28
ウェブ UI で Environment secrets を確認
.env
から設定
.env
からの一括設定にも対応していました。
試した限りでは、コメントや空行があっても問題はなさそうです。"
などのエスケープ方法については今回は試していません(必要になったら調べようかと)。
.env
# test secret
BASE_PATH="/test-collage-cms-content/"
BASE_URL="https://hankei6km.github.io"
$ gh secret set --env pages-staging --env-file .env
✓ Set secret BASE_PATH for hankei6km/test-collage-cms-content
✓ Set secret BASE_URL for hankei6km/test-collage-cms-content
ウェブ UI で一括登録されていることを確認
削除
削除コマンド実行時にウェブ UI のような確認はありません。そのまま実行されます。
$ gh secret remove BASE_URL
✓ Removed secret BASE_URL from hankei6km/test-collage-cms-content
$ gh secret list
// 削除されている
ウェブ UI で削除されていることを確認
改行には注意
標準入力からファイル内の値などを渡す場合、値はそのまま利用されるので末尾の改行に注意が必要です。
最初 Action が失敗する理由がわからなくてしばらく悩みました(ワークフローのログに ****
\n
という表示があったので早めに対応できました)。
NG
$ echo "foo" | gh secret set BASE_URL
✓ Set secret BASE_URL for hankei6km/test-collage-cms-content
OK
$ echo -n "foo" | gh secret set BASE_URL
✓ Set secret BASE_URL for hankei6km/test-collage-cms-content
スクラップ
この記事は以下のスクラップから作成しました。
Discussion