kkamegawa's weblog

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

Azure DevOps(クラウド)とAzure DevOps Server 2019(オンプレミス)の比較

QiitaのAzure DevOps アドベントカレンダー1日目の記事です。結局参加者少ない…。連続は難しいですが、ちょいちょいなんか書いてみます。

qiita.com

最初は軽めに…Azure DevOpsとブランド変更された旧Visual Studio Team Servicesですが、オンプレミスもAzure DevOps Serverとなりました。現在2019のRCが公開されています。

大きな機能としては大体同じなのですが、ちょいちょい差があります。いわゆる非機能要件的なものが多いですが、わかる範囲でまとめてみました。

※:突っ込みいただいて訂正…逆だった(恥)

クラウド オンプレミス
名前 Azure DevOps Azure DevOpsサーバー
ローカライズ ほぼなし あり
英語版Azure DevOps Serverでも日本語ブラウザからアクセスすればローカライズされたコンテンツが表示されます
機能更新 ほぼ三週間に一度 四半期に一度程度
価格 いろいろあり 5人までは無料のExpress版あり
有償版への切り替えもOK
バックアップなどの保守 すべてMicrosoft OS, SQL Server, Azure DevOps
すべて自前
Boardsの違い 全機能あり 全機能あり
検索にはJavaランタイムが必要
Boardsのカスタマイズ プロセステンプレートを継承して簡単に項目追加可能 プロセステンプレートを一から作成する
照合順序 英語 インストール時任意に選択可能
ただし補助文字(SC照合順序)は非サポート
Repos 基本的に無制限 SQL Serverの容量に依存
検索にはJavaランタイムが必要
Artifacts 現在上限なし SQL Serverの容量に依存
Test Plans Visual Studio Enterprise サブスクリプション ユーザーには含まれる
その他は別料金
←同じ
負荷テスト あり なし
Pipelines Microsoft提供
Linux
Windows
macOS
自前(Self-host)管理
自前管理のみ
Preview Feature
プレビュー機能の有効化
あり
(ユーザー/組織ごとに切り替え)
原則なし
(一部過渡的な機能はできることもある)
認証 Azure AD
MSアカウント
PAT
SSH
別名認証
Active Directory
OSローカルアカウント
PAT
SSH
別名認証
サポート 最新版のみ(随時更新) バージョン毎に10年
ただし、依存するOSやSQL Serverのサポート期限を超えることはできない(はず)
稼働場所 現在7リージョンで稼働
稼働状況
USの中でも2箇所で動いているなど、Azureリージョンと対応するともっと多い
オンプレミス環境
クラウドのIaaSなど
パブリックプロジェクト あり なし
レポート機能 ウィジェットによるグラフ表示
Power BI(プレビュー)
SQL Server Reporting Servcices
ウィジェットによるグラフ表示
Power BI(プレビュー)
アクセス履歴 Organization SettingsのUsageから IISのログなどで見る

ほかに漏れているところがあれば。

Azure DevOps Server 2019 RC1インストール

Team Foundation Server改め、Azure DevOps Server 2019のRC1が公開されました。

azure.microsoft.com

定期的に公開されるモデルになっており、今回はクラウドサービスのAzure DevOpsのSprint 141か142あたりまでの内容が入っているようです。

今回はUIが刷新されており、クラウドサービスのように切り替えはできないようなので、慣れていく必要がありますね。

Azure DevOps Server 2019ではWindows Server 2019とAzure SQL Databaseをサポートしています。Azure等で試すときSQL Server入れるのややめんどくさかったのですが、そういう面から解放されそうです。

docs.microsoft.com

f:id:kkamegawa:20181122053143p:plain

インストールを始めます。TFSと違って青基調の画面になっています。内容は大体TFS2018と同じ内容なので、迷わないと思います。

f:id:kkamegawa:20181122053138p:plain

次へをクリック。

f:id:kkamegawa:20181122053135p:plain

今回はアップグレードなので、「既存のデータベースがあります」を選択。これ以降、一部英語がありますが、次のリリースまでには直るそうです。

f:id:kkamegawa:20181122053256p:plain

運用環境のアップグレードです。本番環境を更新する前には別のインスタンスでテストアップグレードを試してみましょう。

f:id:kkamegawa:20181122053132p:plain

TFS2018からのアップグレードです。

f:id:kkamegawa:20181122053253p:plain

Azure DevOps Serverのサービスアカウントを指定します。

f:id:kkamegawa:20181122053250p:plain

Webサイトの設定です。ここではNTLMで指定していますが、本来はKerberosが推奨です。

f:id:kkamegawa:20181122053247p:plain

検索設定です。Elastic Searchを使うので事前にJavaランタイムが必要です。

f:id:kkamegawa:20181122053244p:plain

レポートを構成します。SQL Serverのレポートを使っていますが、SQL Server 2017で使う場合は事前にSQL Server Reporting Serviceを構成しておく必要があります。将来的にAzure DevOpsと同等のAnalytics Servicesへの移行が発表されているので、検討しておいてください。

f:id:kkamegawa:20181122053358p:plain

Reporting Servicesのインスタンスを指定します。

f:id:kkamegawa:20181122053355p:plain

使用するデータベースインスタンスです。

f:id:kkamegawa:20181122053352p:plain

同様にAnalytics Servicesのインスタンス(通常同じ)を指定します。

f:id:kkamegawa:20181122053349p:plain

Reporting Services読み取り用のアカウントを指定します。低い権限のユーザーアカウントを指定します。

f:id:kkamegawa:20181122053429p:plain

適合性チェックを実施します。引っかかるところといえばこのくらいでしょうか(実はよく引っかかる)。

  • Javaランタイムが入ってない
  • ディスクの空き容量
  • 何らかの理由でReporting Servicesが止まってる
  • 古いXAMLビルドが動いている(登録していると警告が出ますが続行可能)

f:id:kkamegawa:20181122053426p:plain

構成を実行して

f:id:kkamegawa:20181122053423p:plain

アップグレードです。古いバージョンから累積的に実施するので、ジャンプアップが長い、データベースのサイズによっては時間がかかります。古い添付ファイルやテスト結果を削除しておくのがいいでしょう。

f:id:kkamegawa:20181122053141p:plain

終わりました。再起動がかかります。

f:id:kkamegawa:20181122065855p:plain

こんな感じになります。日本語になっていること以外はクラウドサービスと変わらないですね。

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 ...