kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

Azure DevOps 2022/6/27の更新

Azure DevOps Sprint 205リリースノートの翻訳を行いました。オリジナルはこちらから見てください。

docs.microsoft.com

GitHubに何らかの理由でプッシュしてしまったソースの中にAzure DevOpsのPATが含まれていた場合、Project Collection Administratorに属する権限を持つ人に通知されることになりました。通知を受ける場合(うけましょう)、Notificationから設定してください。

X-TFS-FedAuthRedirectなんて使ったら一部のセキュリティ検証バイパスで来ていたんですね…知らなかった。これが無効になるそうです。おそらくサポートとかから教えてもらわない限り使ってなかった人だけだと思いますが、気を付けましょう。Visual StudioのIDEでも出ることがあるそうです。

Boardsに顔アイコン出るのはいいですね。Preview featuresから新しいBoardsを有効にしましょう。

超長い間待望されていたgMSAがようやくサポートされます。これを使う場合、Agentを最新に…って、Revertされてる😨?v2.205(今は非公開)でサポートされたのですが。

オンプレミスのドメイン環境で運用するときにgMSAがあると本当に助かるので、対応昔から要望していたのですが、revertされてしまったのでまた待ちたいと思います。

GitHubやAzure Reposからの取得だとほぼ問題ないのですが、それ以外のGitやSubversionのホスティング環境では様々な事情でソース取得失敗することがあります。そういう場合に「失敗した」ことを通知するためのInformational Runという機能が追加されたそうです。これは助かりますね。

Build Definition REST APIのretentionRulesプロパティ、空の値しか返さないため廃止されたそうです。

ではまた三週間後

translate to Japanese to Azure DevOps release not…

Microsoft MVP Award renewal

one more year!ということで、今年も何とかMVP Awardを Developer Technologiesのカテゴリーで受賞できました(12回目です)。ありがとうございます。今年はMicrosoftのシステムが一時的にメンテナンスしていた?のか少し遅くなったようです。

去年はラジオの紹介(今週金曜22:00〜よければ来てね)でしたが、今年もイベントを企画しています。もうすぐ集客サイトを公開します(最終確認中)。

devblog.connpass.com

ブログ書く頻度がなかなか減ってしまっていますが、ネタがいくつか下書きのまま…今年もGitHubやAzure DevOps(Server 2022?2023?はいつ出るのだろう)や開発効率化について色々考えていこうと思います。

よろしくお願いします。

Azure DevOps 2022/6/2の更新

Azure DevOps Sprint 204リリースノートの翻訳を行いました。オリジナルはこちらからご覧ください。

docs.microsoft.com

Azure PipelinesでmacOS 12とUbuntu 22.04がプレビュー公開されました。今年後半には正式になるそうです。それまでは-latestはまだ変更されません。

Azure Boardsのダッシュボードコピーが正式版に、Boards上でたくさんItemがあるとき出ていたShow more itemsのボタンが出なくなるようになるそうです。Work Itemといえば、一つのWork Itemの更新が10000を超えるとエラーになってしまうそうです。

devblogs.microsoft.com

まぁ普通に考えて一つの作業項目を10000回更新するのはちょっと荒れすぎる運用なので見直してね、ということですね。もしもAPIで更新するようなツールを使っていて、エラーが出た場合、手動でクローズ、削除などの手段をとってくださいということだそうです。

例えば特定の一つのアイテムで保守的な作業を延々やっている場合起きるかもしれませんが、作り方としてはちょっと良くないということですね。気を付けてください。ではまた三週間後。

ranslate to Japanese to Azure DevOps release note…

Azureで自動処理を行うためのPaaSは何を選ぶ?

今自分が得意だからということもあるのですが、Azure Pipelinesを使って簡単なデータ流し込み処理をしています。ふと思ったのですが、ほかにもこの手の自動化で使えるPaaSがあってどういうときに使えばいいのかなと思って考えてみました。

Azure Automation

docs.microsoft.com

  • Azure インフラストラクチャの構成管理、簡単な自動化処理
  • Python, PowerShellスクリプト 5.x / 7.1(Preview)とAzモジュールで書いたスクリプトを指定した時間、指定した条件で実行する
  • 500分の無償枠あり
  • Hybrid Workerでオンプレミスも管理可能(クラウドと値段が違うのに注意)
  • ソースコードはGitHub / Azure Reposで管理&デプロイ可能
  • incoming Webhookでの実行も可能

日本ではJP1などのジョブ管理ソフトを使って「指定した時間にこのVMを再起動させる」とか「この処理を実行する」みたいなことをよくやっていますね。Azure Automationの場合、単発処理は楽ですが、「Aというジョブを実行した後にBというジョブを実行するけど、この条件の時はCというジョブを実行する」みたいな複雑な処理だとできないことはないけど、ちょっと辛いかも。特に業務的なカレンダーがあってそれを参照しながら動くとかね。あと、一応グラフィカルPowerShellワークフローというものはあるのですが、ランタイムが現在5.1のみなので、ちょっと辛い。

Runbookを使って、定期的に短時間で済むけど、手順書見ながらやらなくてはならないような処理はまずこれ検討したらいいように思います。

Azure Pipelines / GitHub Actions

よく使っています(笑)。Microsoftが運用するHosted Agentと自分で運用するself-hostedがあります。私が使うのはだいたいself-hostedのVMSSエージェントです。

self-hostedを使う理由ですがこの辺ですね。特に1番目と3番目が大きい理由です。

  • Microsoft-hostedは60分でジョブが打ち切られる
  • 仮想マシンがDS2くらいなので、2 vCore / 8GB RAMではつらいことがたまにある
  • 閉域網内で処理したい

処理はShell Script / PowerShell / 任意のプログラムなんでもいいので便利です。YAMLの試行錯誤がちょっと辛いかな。Azure Automationがローカルでテストしたスクリプトがほぼそのまま動くのと違って、参照情報が変わることが多いのがつらいかもしれないですね。

こちらも無償枠はありますが、申請式です。

docs.microsoft.com

1-2営業日で返事は来るはずです。

Microsoft Hosted agentの場合は定期的にイメージが変わるので、インストールされているソフトの変更には注意してください。node.jsとかPythonとかですね。self-hostedを使う場合、VMSSエージェントの利用が前提になると思いますが、VMイメージ作成を自動化していないと厳しいでしょうね。私は毎月OSパッチリリースのタイミングでAzure Compute Galleryに入れるイメージを作り直しています。

Azure Functions(のTimer Trigger)

docs.microsoft.com

この辺に注意ということで。実行時間を無制限にするにはPremium以上のプランにするか、Consumption planの場合は別途Container AppやAzure Batchなどにリクエストだけ投げて結果は別の方法で受け取るといった処理にする必要があるでしょうか。

こちらもAzure Automationと同様に複雑な条件分岐を実装することはできるけどコードでやるのはどうかな?というところです。Functionsなので、CI/CDもサポートされていますね。

(追記)
Logic Appsもコネクターで用意されている範囲であれば可能ですね。もちろんAzure Functionsと連携もできますが、それなら最初からFunctionsでいいじゃないかとも思います。

Azure WebJobs(2022/6/5追記)

docs.microsoft.com

すっかり忘れていましたが、Azure WebJobsもありますね。現状ほとんどFunctionsになると思いますが。

じゃあ何選ぶ?

ものによるけど、やはりAzure Automationでできるかどうか考えるかなぁ。Functionsは正直あまり考えない。Pipelinesは並列度が多くなると課金が比例するのと、イメージ作るのが面倒になりますね。

github.com

GitHub Actions / Azure Pipelinesと同じイメージを作るこのレポジトリをforkして、だいぶそぎ落としたカスタマイズ版を使っていますが、それでも1時間ちょっとはかかりますので。

ほかにこんな方法でやっているよ!とかあれば教えてください。