FIXER cloud.config Tech Blog
Azure DevOpsのwikiにAzure CLIを使ってページを追加する!
2022年08月25日 19時00分更新
本記事はFIXERが提供する「cloud.config Tech Blog」に掲載された「Azure DevOps のwikiにAzure CLIを使ってページを生やす!」を再編集したものです。
こんにちは、さとはるです。
Azure DevOpsはパイプラインやタスク管理が有名ですが、wiki機能もあります。
DevOpsのwikiはマークダウンで書ける上に、多重にネストできるページやタスクとの連携等便利機能も色々あります。
さて、今回はそんなDevOpsのwikiをAzure CLI を用いて操作する方法についてご紹介します。
きっかけ
自分のチームでは毎週作業報告をwikiに書いています。
週ごと親となるページを生やし(作成し)、その下にチームごとの子ページを生やしていきます。
親ページには見出し的に子ページへのリンクを張っています。
作ってしまえば便利なんですが、wikiの画面でポチポチ作っていくのは結構な手間です。
どうにか楽ができないかと調べてみたところ、Azure CLIにDevOps用コマンドがあることを知りました。
Azure CLI の DevOps コマンドを使ってみる!
今回は 「DevOps」の「wiki」 の 「ページ」 を 「作成」したいわけですが、そのものなコマンドが存在します。
az devops wiki page create
前提として、az loginは済ませておく必要があります。
また、初めてaz devops~ 系のコマンドを使用した際には関連コマンドのインストールが促されるのでインストールしてください。
基本は以下の公式リファレンスを参考にしてもらえればOKですが、一部パラメータについて補足します。
参考:CLI を使用して Wiki を管理する – Azure DevOps | Microsoft Docs
–path
wikiのルートから見たパスです。
「パス」と言いつつページ名そのものになるので注意。
サンプルに従ってクォートで囲むとクォートごと追加されるので、スペースとか挟まないページ名の場合はそのままがおすすめです(実行環境によるかも?僕はコマンドプロンプトでした)
–content
省略可能となってますが、↓のfile-pathとどちらかは必須な様子。
「–content ””」 とかで空文字渡そうとしても怒られますので、なんかは書く必要あるっぽいです。
–file-path
ページの中身を事前に用意できるならこちらの方が良さそう。
デフォルトの文字コードはutf8なのも良き。
–project ,–organization
az loginの仕方によるかもですが必要になることもあります。
つけ忘れたときには、Azure CLIくんが「こんな感じでパラメータよこせ!」って例付きで教えてくれるので安心ですね。
Azure CLI コマンドを実行するアプリを作る
C#のコマンドラインアプリでサクッと作りました。
基本方針は、必要なものを生成し、実行し、クリアにするです。
using System.Diagnostics; // ページ情報の設定 string BASE = "テストページ"; // 親ページのタイトルです string[] APPEND_ITEMS = new string[] { "aaa", "bbb", "ccc" };// 追加したいページのタイトルです string APPEND_TEMPLATE_PATH = "append.md"; // 追加したいページの初期値です // 接続情報の設定 string WIKI = ""; string ORGANIZATION = @"<organization>"; // https:から始まるやつです string PROJECT = ""; string curDict = Directory.GetCurrentDirectory(); string batfilePath = Path.Combine(curDict, "Start.bat"); string templatePath = Path.Combine(curDict, "baseTemplate.txt"); string[] batfileData = new string[APPEND_ITEMS.Length + 2]; string[] templateData = new string[APPEND_ITEMS.Length]; // バッチファイルに書き込むデータ作成 batfileData[0] = "chcp 65001 > nul"; // バッチ実行時の文字コードをUTF-8に変更する batfileData[1] = "cmd /c az devops wiki page create --path " + BASE + " --wiki " + WIKI + " --file-path baseTemplate.txt --organization " + ORGANIZATION + " --project " + PROJECT; for (int i = 0; i < APPEND_ITEMS.Length; i++) { batfileData[APPEND_ITEMS.Length - i + 1] = "cmd /c az devops wiki page create --path " + BASE + "/" + APPEND_ITEMS[i] + " --file-path " + APPEND_TEMPLATE_PATH + " --wiki " + WIKI + " --organization " + ORGANIZATION + " --project " + PROJECT; templateData[i] = "[" + APPEND_ITEMS[i] + "](" + BASE + "/" + APPEND_ITEMS[i] + ")"; } File.WriteAllLines(batfilePath, batfileData); File.WriteAllLines(templatePath, templateData); // プロセスの開始 Process cmd = new Process(); cmd.StartInfo.UseShellExecute = false; cmd.StartInfo.FileName = batfilePath; cmd.Start(); // 終わるのを待ってからファイルを削除 cmd.WaitForExit(); cmd.Close(); File.Delete(batfilePath); File.Delete(templatePath);
### [やったこと] ### [やること] ### [共有事項]
wikiのサブページは後に追加したものが一番上にくるため、25行目のindexを弄って逆順に実行されるようにしています。
実行結果は以下です。
無事に追加されていることがわかります。
まとめ
今回はAzure CLI を使ってDevOpsのwikiのページ追加をプログラム化しました。
CLIコマンドが用意されていると、ツールの自作とかが現実的でよいですね。
上記のツールで作業が楽になるかは微妙ですが、もうちょっと改良して使いやすくしていきたいと思います!
本記事が少しでも誰かの手助けになれば幸いです。
佐藤 晴輝/FIXER
フロントからバック、ネットワークまである程度触れるガジェットオタクです。
好きな言語は C# で IoT と画像処理が得意です。