本記事はFIXERが提供する「cloud.config Tech Blog」に掲載された「GitHub CLI、Azure DevOps Pipelineから使えます!」を再編集したものです。
最近は自動化の鬼を目指している松枝です。
仕事をたくさんいただいていて、API開発、マニフェストファイルを用いたKubernetesへのアプリデプロイ、インフラ構築と幅広く担当しています。
ただ、あまり手を広げすぎると自分がボトルネックになってしまいますし、後輩に技術を伝承したり、会社としてより良いものを作っていきたいので、「自分がやっていること」をコード化、自動化していく必要があります。そんなときに使えるのがAzure DevOpsのPipelineですよね!
実行環境も用意してくれるのでとても便利です。
今回、何らかのコードを自動生成してGitHubに放り込みたいなと思ったわけです。
でも、自動化しているとはいえ、いきなりdevelopブランチにぶち込むのはマズいよな、という気持ちを日々持っていました。
Microsoft-hosted agentsにGitHub CLIが!
Pipelineでの自動化処理を書くとき、ビルドエージェントにどんなコマンドがインストールされているかチェックしに行きます。
まずは下記を開き・・・
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でやれることはたくさんあるので、自動化を進めていきましょう!
松枝 宏樹/FIXER
名古屋事業所所属。
得意分野はC#、ASP.NET、terraformなど。
最近はdocker、K8s関連を勉強中。