kkamegawa's weblog

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

Azure DevOpsでのCIとファイルエンコーディング

Azure Pipelinesでビルドすると、こんなエラーが出てしまいました。

f:id:kkamegawa:20181120063311p:plain

ローカルのVisual Studioでは問題なくビルドできます。このエラーはここで出ています。

testStep.Step = new string[] {"ブラウザ起動", "ログイン", "About表示", "終了" };

原因は「表」の字ですね。「表」には\と同じコードである0x5cを含んでいるので、エンコーディングエラーが発生しています。昔からCコンパイラとか使っている人にはおなじみです。

何故ローカルで出なくて、Azure Pipelinesで起きるかといえば、PipelinesのMicrosoft Hosted Agentは英語版OSで動いているため、Visual Studio 2017の標準エンコーディングであるSHIFT-JISのファイルが解釈できないからです。ローカルでは日本語OSなので、SHIFT-JISで問題がないと。

回避するにはソースファイルをUTF-8で保存しましょう。ファイル保存時にやってもいいですが、こういう拡張機能を使うと楽です。

marketplace.visualstudio.com

ロケールに依存するようなテストも発生します。こちらは逆で、USロケールに依存するようなテストがローカルの日本語OSではFailになるということが起きえます。今は見てないですが、昔のCoreFXのUnit Testにもそういうところがありました。

Azure Pipelinesに限らないと思いますが、ベースのOSでこういうところに引っかかることがあるので、気を付けてください。

Azure DevOps 2018/11/12の更新

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

docs.microsoft.com

今回の強化点はpull requestの下書き機能は便利そうです。GitHubではタイトルにWIPとつけているPull Requestのマージを抑止するという機能がありますが、それに近い感じで運用できますね。

新しい作業項目エディターも最近使っていますが、前よりはもちろんいいです。でも、markdownサポートも待ち遠しい。markdownはQ4の機能強化リストに入っているそうなので、そのうち、ですかね。GitHubのroosterjsを見ればわかるでしょう。

パブリックプロジェクト公開以降、ちょこちょこ権限周りに手が入っています。Contributerにビルド定義が作れなかったのは、Azure DevOpsプロジェクトやWeb AppsでCI/CDをAzure DevOpsに作るときに誰もが一度ははまっていたと思います。ようやく解決することになって助かりますね。もちろん従来通りビルド定義を作らせないのも可能です。パブリックプロジェクト以外、ビルド定義は費用に直結する話なので、気を付けて運用してください。

Deployment Groupで失敗時のリカバリーを自動的にやってくれる機能や、失敗したとき再デプロイもうれしいです。

ではまた三週間後。

Translate to Japanese to Azure DevOps release note ...

Azure DevOps 2018/10/22の更新

遅くなりましたが、Azure DevOps Sprint 142のリリースノートの翻訳を行いました。オリジナルはこちらから読んでください。

docs.microsoft.com

今回もいろいろ目玉となる新機能があります。作業項目の添付ファイルが容易になること、世の中の流れに乗ったダークテーマのサポート、カスタムビルドコンテナーのサポート、App ServicesのRun from Zipの標準サポート、Pipeline Artifactsのパブリックプレビュー、複数のAzure DevOpsをまたいだ作業項目の依存関係整理、コミットの関連付けの強化、どれも非常に便利ですね。

qiita.com

Azure DevOpsアドベントカレンダーも用意しましたが、今年は参加してくれる人いるかなーと思ったけど、参加者0*1。また一人で書く羽目になるのか?お気軽にどうぞ。

ではまた三週間後。

Translate to Japanese to Azure DevOps release note ...

*1:´・ω・`

Azure DevOps 2018/10/1の更新

三週間と思っていたのですが、前回のSprint 140から二週間くらいなので、やっぱりAzure DevOps Launchから三週間後、考えると今回のSprint 141はしっくりきますね(どうでもいい話ですが)。

今回のSprint 141のリリースノートの翻訳を行いました。オリジナルはこちらから読んでください。

docs.microsoft.com

Azure PipelinesがAzure Policyと統合されたのはエンタープライズ向けには便利な機能だと思います。VMのデプロイもめんどくさいことが多いんですが、これも便利になったのはうれしい。

あとはPipelinesへのビルドキュー投入が早くなったのはいいですね。今まで無意味に数分待つことが多かったので、もうちょっと使ってみたら実感するかもしれません。

Gitのクロスプラットフォームでのファイル名の非互換をブロックできる機能も便利です。ちょっと前、Gitの脆弱性でsubmoduleで : (コロン)がつかえてしまったために、意図しないhttpリダイレクトしてしまうというものがありました。Windows(NTFS)ではコロンは特別な意味を持つので、この脆弱性の影響は受けなかったのですが、こういうファイルがあるとWindowsではcloneできません。事前に抑止できるのはいいことです。

Remediating the October 2018 Git Security Vulnerability – Microsoft DevOps Blog

個人的に最大限に便利だと思っているのはMSアカウントのAzure DevOpsにAzure Active Directory(AAD)のユーザーが招待できることになったようです。今までMSアカウントのVisual Studioサブスクリプション特典で作ったAzure DevOpsにAADのユーザーを連れてこれませんでした。しかし、現在のポリシーではAADに使ってしまった会社のメールアドレスでMSアカウントが取れないので、悩ましいところでした。

Azure DevOpsをAADベースで動かすようにする変更もできることはできるのですが、大変難しく、失敗するとサポートのお世話にならざるを得ません。AADベースで動かすとO365(Teams)との連携も容易なので、便利ではあるのですが、そこまでしたくないという人には大変便利です。

ではまた三週間後。

Translate to Japanese to Azure DevOps release note ...