要点: %2F
で /
をエスケープしてあげればいい
Create or update an environment
GitHub は Environment を作成する REST API を提供しています。
使い方はリファレンスに詳しく書いてありますが、curl なら次のような感じ。適切な権限を付与したアクセストークン (GITHUB_PAT
) を用いて、リポジトリ (OWNER
/REPO
) に ENVIRONMENT_NAME
という名前で Environment を作るコマンドです。
export GITHUB_PAT=<YOUR_TOKEN> export OWNER=<YOUR_OWNER> export REPO=<YOUR_REPO> export ENVIRONMENT_NAME=<YOUR_ENVIRONMENT_NAME> curl -L \ -X PUT \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer "${GITHUB_PAT}"" \ -H "X-GitHub-Api-Version: 2022-11-28" \ https://api.github.com/repos/"${OWNER}"/"${REPO}"/environments/"${ENVIRONMENT_NAME}"
トークンの作り方:
Environment 名に '/' を使いたいとき
Environment 名に /
を使って、例えば、production/backend というように構造化したいかもしれません。
その場合は、/
を %2F
にパーセントエンコーディングする必要があります。
コマンド例 (ENVIRONMENT_NAME
に注目):
export GITHUB_PAT=<YOUR_TOKEN> export OWNER=<YOUR_OWNER> export REPO=<YOUR_REPO> # / を %2F に変換 export ENVIRONMENT_NAME=production%2Fbackend curl -L \ -X PUT \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer "${GITHUB_PAT}"" \ -H "X-GitHub-Api-Version: 2022-11-28" \ https://api.github.com/repos/"${OWNER}"/"${REPO}"/environments/"${ENVIRONMENT_NAME}"
エンコードしないとエラーレスポンスが返ってきます。
プライベートリポジトリだと具体的なエラーメッセージは無く、Not Found とだけ返ってくるので注意です。
{ "message": "Not Found", "documentation_url": "https://docs.github.com/rest" }
補足1. ラベルの場合
Environment と同じように、Issue や Pull Request に付けるラベルも REST API を通じて作れます。
しかし、ラベルの場合は /
が名前に入っていてもエスケープ処理が不要でした。
補足2. プラン
GitHub Free プランでは、プライベートリポジトリで Environment を使えません。実際に試すときはリポジトリの可視性やプランを確認してください。