GitHub CLI、Azure DevOps Pipelineから使えます!
2020-10-09
azblob://2022/11/11/eyecatch/2020-10-09-github-cli-available-from-azure-devops-pipeline-000.jpg

最近は自動化の鬼を目指している松枝です。

仕事をたくさんいただいていて、API開発、マニフェストファイルを用いたKubernetesへのアプリデプロイ、インフラ構築と幅広く担当しています。
ただ、あまり手を広げすぎると自分がボトルネックになってしまいますし、後輩に技術を伝承したり、会社としてより良いものを作っていきたいので、「自分がやっていること」をコード化、自動化していく必要があります。
そんなときに使えるのがAzure DevOpsのPipelineですよね!
実行環境も用意してくれるのでとても便利です。

今回、何らかのコードを自動生成してGitHubに放り込みたいなと思ったわけです。
でも、自動化しているとはいえ、いきなりdevelopブランチにぶち込むのはマズいよな、という気持ちを日々持っていました。

Microsoft-hosted agentsにGitHub CLIが!

Pipelineでの自動化処理を書くとき、ビルドエージェントにどんなコマンドがインストールされているかチェックしに行きます。
まずは下記を開き・・・

https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/hosted?view=azure-devops&tabs=yaml#software

Ubuntu 18.04にしようかな~、とGitHubのリンクに飛びます。

https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu1804-README.md

CLI のキーワードで検索をかけてチラチラと見ていくと・・・

GitHub CLI

お!!
なんかいるじゃないですか!

これを使えばブランチ作成⇒コミット⇒プルリクエスト作成まで実現できるのでは!
ということで試してみました。

Azure Pipelineでプルリクエスト作成する

作成したコードはいろいろ端折るとこんな感じです。

          - script: |
              echo "$(gitHubUserToken)" | gh auth login --with-token
              gh pr create --title "[Auto Generated] Add new script" --body "Please merge this request." --base develop --head $BRANCH_NAME

まずは gh auth login でGitHubにログインします。
gitHubUserToken には https://github.com/settings/tokens/new で生成したPersonal Access Tokenを設定する想定です。もちろん鍵付きのVariableですよ!
権限は repo と admin:org があると良いみたいです。

その後、 gh pr create でプルリクエスト作成です。簡単ですね!

ちなみに --title--body を指定しないと入力待ちになって返ってこれなくなるようです。コマンドのパラメータは調べましょう。

終わりに

Azure Pipelineを使えば手軽にGitHub CLIが使えることが分かりました。
業務で使う場合は、GitHubのPersonal Access Tokenをどう扱うかは気を付ける必要があります。Libraryに保存しちゃうと意図しないPipelineで使われてしまうリスクがあるので、どうすると良いですかね?

Azure Pipelineでやれることはたくさんあるので、自動化を進めていきましょう!