このページの本文へ

FIXER cloud.config Tech Blog

Azure DevOpsのwikiにAzure CLIを使ってページを追加する!

2022年08月25日 19時00分更新

文● 佐藤 晴輝/FIXER

  • この記事をはてなブックマークに追加
  • 本文印刷

 本記事は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 と画像処理が得意です。

[転載元]
 Azure DevOps のwikiにAzure CLIを使ってページを生やす!

カテゴリートップへ