kkamegawa's weblog

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

Visual Studio Team ServicesとAzure App Servicesの継続的デプロイメント(29日目)

はじめに

Azure App Servivesには二つデプロイ方法が用意されています。現在プレビューの継続的配信昨日はVSTS側に設定を行います。

更新のお知らせ

この記事のタスクはproject.jsonを使う古い.NET Core 1.0ベース(VS2015といってもいい)のやり方になっています。VS2017を使うやり方は別途書きましたので、そちらをみてください。

kkamegawa.hatenablog.jp

デプロイオプション

f:id:kkamegawa:20170108160044p:plain

今まであった、デプロイオプションはこんな感じで作れます。これはGitリポジトリのみサポートのようでGitリポジトリにコミットがあれば自動的にAzure App Services側にデプロイされます。

一切処理がない、静的コンテンツを配置するときに便利だと思います。VSTSのHosted Agentのビルド時間を消費しないのでお得です。

Azureの継続的配信(プレビュー)

f:id:kkamegawa:20170108160045p:plain

しかし、ASP.NET(Core)のデプロイするときは困るためかどうか知りませんが、継続的配信という機能が追加されました。Configureをクリックすると、設定が始まります。

f:id:kkamegawa:20170108160046p:plain

ソースリポジトリ、プロジェクト、ブランチを選択します。

f:id:kkamegawa:20170108160047p:plain

ASP.NETかASP.NET Coreかを選択します。注意点として、現時点においてVSTSのHosted AgentはASP.NET Core 1.1に対応していないので、1.0のプロジェクトである必要があります。

f:id:kkamegawa:20170108160048p:plain

負荷テストとApp Servicesのデプロイメントスロットを使っている場合はここで指定できます。

f:id:kkamegawa:20170108160049p:plain

これで完了です。左からリンクをクリックするとVSTS側のビルド定義の確認、リリース定義の確認、ビルド実行となります。

VSTS側の設定

f:id:kkamegawa:20170108181358p:plain

Azure側で作成した継続的配信はVSTS側でこんな風に既定のビルド定義が作成されます。TriggersタブにContinuous integrationオプションが設定されているので、リポジトリにコミットされるとAzure側へのデプロイが行われます。

f:id:kkamegawa:20170108160051p:plain

デプロイも設定されています。つまり、ビルド→リリースが自動的に行われます。Hosted Agentの時間もそれだけ使われます。

不要になった場合

不要になった場合、以下の手順で削除します。

  1. Azureポータルの継続的配信のdisconnectをクリックして削除する。
  2. VSTS側のリリース定義を削除する
  3. VSTS側のビルド定義を削除する

まとめ

Azureにデプロイする場合、VSTSからビルド定義を作るとちょっと手順が多いですが、Azure側から作成すると簡単にできますね。

Python 2.7.xをWindowsでビルドする

たまにしかやらないので、忘れてしまうから自分用にメモ。

(2017/9/28)Python2.7.14用に更新

必要なもの

  • Visual Studio 2008
  • Active Perl
  • TortoiseSVN(コマンドラインツールも必ずインストールします)
  • Git for Windows 2.10 (XP/2003をサポートする最後のGitのため)

OSはVisual Studio 2008がサポートされているものならいいはずです。XP世代のOSを使おうとすると、Active PerlとかTortoiseSVNは一世代以上古いものを入手する必要があります。64bit版のPythonをビルドする場合、ビルド後イベントで生成したPythonを実行するため、64bit OSを使うほうがいいでしょう。

MSがPython 2.7の拡張機能をビルドするために配布しているVisual C++ 2008コンパイラをPython自身のビルドに使えるかどうかはわかりません。

Download Microsoft Visual C++ Compiler for Python 2.7 from Official Microsoft Download Center

Gitインストール(9/28追記)

Pythonはいくつか外部のソース(OpenSSLやbzipなど)に依存しています。これらのソースコードはGitレポジトリで管理されているため、Git for Windowsをインストールします。

XP/2003を使ってビルドする場合、Git for Windows 2.10が最終版なので、これを使いましょう。もちろん最新版に比べてセキュリティの問題が多く入っているバージョンなので、使用時には気を付けて。

ソース入手

公式からダウンロードします。

www.python.org

注意点として、Pythonが依存している外部ライブラリ(OpenSSL,SQLiteなど)は含まれていません。ダウンロードにGitを使うようになったので、前述の手順で入れておきましょう。

ソースを展開してできた、Python-2.7.xxフォルダの下にPCBuildフォルダがあります。そのなかにget_externals.batというバッチファイルがあるので、実行します。依存しているライブラリのソースコードをSVN経由でとってきます。なので、TotoiseSVNインストール時にコマンドラインツールも必ず入れてください。

ビルド

Pythoon-2.7.xx\PCの下にVC6とかVC7.1とかあります。VS2008の場合、VS9.0フォルダに移動して、コマンドプロンプトからbuild.batを実行するだけです。標準ではWin32のReleaseビルドがVS9.0フォルダ内に生成されます。オプションをいくつか指定できます。

-c Debug:デバッグ版Pythonが生成されます
-p x64:64bit版Pythonが生成されます(32bit OSでもビルドできますが、最後にPython自身が実行できなくてエラーになります)
-t Rebuild:クリーンビルドします
-d -c Debugと同じ意味です
-e ビルド時にget_externals.batを自動的に実行して、依存しているライブラリをダウンロードします
-k 何らかのサービスなどでPythonをバックグラウンドで実行している場合、自動的に終了させます。

注意点として、DebugとReleaseで異なるフォルダに出力する、ということはやっていないようです。大体ファイル名が違う(デバッグ版は_dがつく)ので区別はできますが、後の作業がめんどくさいので、ビルド前にVS9.0フォルダもしくはamd64フォルダを複製しておくといいと思います。

Visual Studio Team ServiceのLibrary機能で複数の値を一括管理する(28日目)

はじめに

ユーザーIDやパスワードをリリース定義のスクリプトに埋め込まず、外部に定義したいことはよくあります。そういう時、Release ManagementではVariableに設定することで、複数のリリース環境に同じ値を使えます。

そういう時、関連した値をひとまとめに管理したいという要求もよくあります。まだリリースノートが出ていない機能ですが、Libraryはそういう時に役立ちます。

作成

f:id:kkamegawa:20170104070641p:plain

LibraryからAdd variable groupをクリックして、新規のグループを作成します。ユーザーとパスワード、DBへの接続文字列のように関連する値をグループとして管理しましょう。

f:id:kkamegawa:20170104070642p:plain

グループ名と、説明、追加したい名前と値を指定します。パスワードのように表示したくない場合は右端の鍵アイコンをクリックすれば秘密文字列として表示されません。

参照する

f:id:kkamegawa:20170104070643p:plain

リリース定義のVariablesにLink variable groupがあるので、クリックします。

f:id:kkamegawa:20170104070644p:plain

作成したVariable groupが表示されているので、Linkをクリックします。

f:id:kkamegawa:20170104070645p:plain

作成したVariable groupをリリース定義から参照可能になっています。もちろん、Variable groupは履歴管理されていて、誰が編集したか確認できます。

まとめ

関連する複数の値を外だしで一括管理できる新機能Libraryを紹介しました。便利だとは思うのですが、どうせならBuildとReleaseで共通に受け渡しできるといいなと思います。環境変数とかでBuildとReleaseで値を受け渡しできればいいのですが、今の所どうもできないようです。

この辺は将来に期待ですかね。

2016年振り返り

関西方面の生活もだいぶ慣れてきましたが、予想以上に東京行かないですね…。もうちょっと機会があるかなと思ったのですが。来年のde:codeはたぶん行けると思うので、その時はよろしゅうに。

今年は一人アドベントカレンダーなぞやってしまってかなり死ぬかと思いました…。ブログのPV的には昨年比30%くらい伸びたのでびっくりしてます(ネタとしてはニッチなんですが)。Bash on Windowsの話という、一つどかんとでっかい山がありましたが、それを除いても全般的に伸びたようです。

ぼちぼちはじめたVSTSのリリースノート翻訳もわりといいブログの更新ネタになっています。世間様というか自分に役立つネタとしてNuGetパッケージを公開したのもいい勉強になりました。これらのNuGetパッケージは別のOSSを公開するための下準備として作ったものなんですが、アドベントカレンダーやってたおかげで、そちらに時間が取れなくて困ったものです。

アドベントカレンダーネタはもう少し残っているので、次のVSTSのスプリントが公開される前に(もうすでになんか新機能が細々と公開されているようだけど)やり切りたいなと思っています。

延び延びになっていた本をなんとかTFSUGのみんなで出せてよかったです。

アジャイルでやってみた。ウォーターフォールしか知らなかった僕らSIerのスクラム日記

アジャイルでやってみた。ウォーターフォールしか知らなかった僕らSIerのスクラム日記

この都合もあって、しばらく登壇とかありませんでしたが、1月末にぶりしゃぶ食べに…もとい、Hokuriku.netでお話しさせていただきます。今回はちょっと趣向を変えてみようかなと思っています(準備が大変だけど)。

toyama-eng.connpass.com

執筆やイベントは時間の都合がつく限りお受けいたします。

来年はXamarinでアプリ作ることと、伸ばしていたOSSの公開をやろうかなと…できれば3月までに。ではよいお年を!&来年もよろしくお願いします。

追記。今年読まれた記事TOP10。BoW強いですね。

  1. Windows 10のbash on Windowsを試す - kkamegawa's weblog
  2. Windows 10に.NET Framework 3.5を追加する - kkamegawa's weblog
  3. Surface Book と MacBook Proを使い比べてみて - kkamegawa's weblog
  4. Visual Studioに統合されるデータベース開発ツール- SSDT - kkamegawa's weblog
  5. Windows 8にオフラインで.NET Framework 3.5を追加する方法 - kkamegawa's weblog
  6. Windows 10でMS Moneyが動くようになった - kkamegawa's weblog
  7. bitnami Redmine(Windows版)のメール送信設定ではまるところ - kkamegawa's weblog
  8. Windows 7/8.1/Server 2012/Server 2012 R2用PowerShell v5リリース! - kkamegawa's weblog
  9. プログラマ的にWindows 10 Anniversary Updateのうれしいところ - kkamegawa's weblog
  10. ビックカメラタブレットを買った - kkamegawa's weblog

ICU4C 58.2のNuGetパッケージ公開

www.nuget.org

年の瀬ですが、一人アドベントカレンダー書いていて全く手を付けられなかったICU4C 58.2に対応したNuGetパッケージを公開しました。

ソースというか、パッケージはGitHubで公開しています。57_1のパッケージに含まれるバイナリはICU4C_571というブランチをクローンしてもらえればとってこれます。58.2は現時点のmasterかICU4C_582というブランチになっています。今後もこうしていこうかな、と思っています。

github.com

今回、公式ではx64版しか公開しないよう(?)ですが、別にビルド定義が消えているわけではないようなので、私のほうでx86版をビルドして同梱しています。したがって、x64のライブラリおよび、ランタイムは公式版そのままですが、x86に関してはテストしてないので、気を付けてください。

これを公開することが目的ではなくて、別のオープンソースの公開のためなのですが、それが全くできてません。冬休み中に何とか…。

Visual Studio Team ServicesとFirefoxで未知のバグを探索する

年末休暇中ですが、Firefox版Test & Feedback拡張機能が公開されました。

marketplace.visualstudio.com

f:id:kkamegawa:20161227051611p:plain

EdgeがComming soon!ですが、いつになるのかなー。Downloadをクリックすると、拡張機能のファイルがダウンロードされるので、Firefoxのタブにドロップすると、インストールが開始されます。まだFirefoxの拡張機能の一覧からの検索はできないようですね。

f:id:kkamegawa:20161227051612p:plain

問題なければインストール。

f:id:kkamegawa:20161227051613p:plain

GUIはChrome版と全く変わらないですね。

f:id:kkamegawa:20161227051614p:plain

VSTSもしくはTFSのURLを指定します。

f:id:kkamegawa:20161227051615p:plain

使用するチームを選択して、Saveをクリックすると、チームに接続されます。ここから先は以前書いたChrome版と変わらないので、以下の記事を参考にしてください。

kkamegawa.hatenablog.jp

ブラウザごとに違うチームに接続するもよし、ブラウザ固有のバグ探索するもよし、使ってみてください。

Visual Studio Team Servicesとエコシステム(25日目)

はじめに

一人アドベントカレンダーの最終日はちょっと毛色を変えて、VSTSのエコシステムについて書いておきます。実はまだ書いていないもの色々あるのですが、それはおいおい追加します。

VSTSとつながるIDEなど

VSTSにはSubversionのような中央型のリポジトリのTFVCと、分散型のGitの二種類をサポートしています。TFVCはチームプロジェクトで一つのみですが、Gitは複数のリポジトリがサポートされています。

Git

Visual StudioからGitをソリューションエクスプローラ経由で使う場合、Visual Studio 2015 Update3以降を使ってください。Visual Studio for Macがリリースされていますが、monodevelopベースということもあり、Gitのみ使えます。GitをサポートしているIDEやGitコマンド(Git for Windowsなど)で、ssh/httpsが使えればなんでもつながります。

f:id:kkamegawa:20161225173616p:plain

標準でこれだけサポートしています。

f:id:kkamegawa:20161225163605p:plain

Visual Studio for Macでつなぐ場合の例です。事前にPAT(Personal Access Token)を作っておいてください。

f:id:kkamegawa:20161225163606p:plain

IDEの場合は基本codeのpush,pullなどができればいいはずですが、VS Codeの場合はもうちょっと広くとります。

VS Codeの拡張機能

marketplace.visualstudio.com

VS CodeはそのままでもGitの機能を持っていますが、拡張機能をインストールすると、作業項目の作成、閲覧、pull requestの確認ができます。探してみたら、他にも有志が作成した、ビルドステータスを確認する拡張機能もあるようです。

この拡張機能はPATでのアクセス前提なので、事前に作成&VS Codeに登録してください。画面下のステータスバーをクリックすると、作業項目やブランチ切り替え、pull request表示ができます。

f:id:kkamegawa:20161225163607p:plain

(画面では出てこないですが)pull request一覧の確認ができます。

f:id:kkamegawa:20161225163608p:plain

チームプロジェクトの作業項目が確認できます。Gitコミット時に # 番号 でGitHub同様に作業項目と関連付けが行われますが、その番号確認に便利です。

TFVC

TFVCは色々対応がアレなこともあって、プラグインをそれぞれ作らないといけないようです。

Team Explorer Everywhere の導入

Javaが動く環境であればTeam Explorer Everywhereという無償ツールを使ってアクセスできますが、いつもVisual Studioよりも少し遅れての提供になるので、最新のVSTS/TFSでは少し制限が出るでしょう。Gitに慣れてないとかの理由がない限り、Visual Studio以外の環境では素直にGitを使った方がいいでしょう。

TFVCをプラグインでサポートしているIDEはEclipse, IntelliJ(自動的にAndroid Studioも)があります。

拡張機能

VSTS/TFS自身で色々できますが、拡張機能も多く提供されています。商用、フリー両方ありますが、見た所オープンソースのものが多いように思えます(数えてはいません)。

marketplace.visualstudio.com

私も10くらいしか入れていませんし、紹介するもので使っているものばかりではありませんが、参考になれば。

marketplace.visualstudio.com

作業項目の検索ができるようになる拡張機能です。今までと違い、日本語の検索もサポートしています。以前紹介したので、そちらもみてください。

kkamegawa.hatenablog.jp

marketplace.visualstudio.com

コード検索をサポートします。TFSの場合Elastic Searchを使っているので、おそらく似たようなものなのでしょう。メソッド名やシンボルといった区分で検索ができるようになります。

Work Item Visualization

marketplace.visualstudio.com

作業項目には親子関係がついていますが、それを視覚化して表示してくれます。メールに添付できるので、便利ですね。

Octopus Deploy build Release

marketplace.visualstudio.com

プラグインは無償ですが、Octopus自身は有償です。Octopus自身は有名なツールなので、大規模デプロイには便利だと思います…多分。

Docker Integration

marketplace.visualstudio.com

私自身がまだDockerそんなに使ってないのですが、MS標準ということで一応。ただ、まだWindows Containerはサポートしていないようです(レビュー欄より)。おそらく早晩サポートされるのでしょうが、Windows Containerを使うときは気をつけてください。

Release Annotations for Azure Application Insights

marketplace.visualstudio.com

Application Insightsのグラフに注釈というか、印をつけられるようになります。頻繁にデプロイしている場合、Application Insightsでエラーが出たタイミングでどのリリースだったかというのがわからなくなることがあるので、そういうケースで便利でしょう。

Azure DevTest Labs Tasks

marketplace.visualstudio.com

Azure DevTest Labsは最小限の操作で仮想マシンが作れる(しかも自動起動/シャットダウンのautomationを自動設定されている)便利なサービスです。そんなVMを管理するタスクです。

Generate Release Notes Build Task

marketplace.visualstudio.com

リリースノートって作るの結構面倒ですよね。そういう作業を自動化してくれるそうです。実は使ったことがないのですが、ちゃんと書くようなものを作る場合は使おうかなと思っています。

Export/Import Build Definition

marketplace.visualstudio.com

似たようなビルド定義を作るという作業はよくあります(ブランチ違いとか、チーム違いとか)。Task Groupという機能で複数のビルドタスクをまとめられるようになりましたが、異なるチームで似たようなタスクを取り込み/入力したい場合便利ですね。

TFS artifacts for Release Management

marketplace.visualstudio.com

一台のVSTS/TFSで完結していればいいのですが、そうでないことは結構あります。組織内のTFSを使って、クラウドのサービスにリリースするというとき、直接繋げず、VSTSを経由したいというような場合です。

SonarQube

marketplace.visualstudio.com

MSが最近力を入れている品質管理系のオープンソースソフト(商用版もある)SonarQubeの拡張機能です。もともとMSがVSTS組み込みで提供していたものがあったのですが、そちらは廃止になるようです。組み込み版ではVSTS内で品質情報が見えるようになるそうです。

StyleCop Runner Build Task

marketplace.visualstudio.com

StyleCopを実行するビルドタスクだそうです。そういうもの

LaunchDarkly Integration

marketplace.visualstudio.com

DevOpsの要素の一つであるFeature FlagをサポートするLaunchDarklyの拡張機能です。拡張機能は無償ですが、LaunchDarklyは有償です(結構いいお値段します)。VSTS自身のリリースでも使っているようですね。

blogs.msdn.microsoft.com

Pester Test Runner Build Task

marketplace.visualstudio.com

PowerShellのテストフレームワークとしてPesterというツールがあります。このPesterを実行するタスクですね。

VSTS Kudu Tasks

marketplace.visualstudio.com

IIS/App ServiceへのデプロイはWebdeployを使う例が多いと思いますが、バックエンドで動いているKudoのAPIを使うこともできます。そんなKudoのAPIを使ってデプロイするタスクですね。デプロイ前にはWebdeployではないけど、zipでパッケージにしておかないといけないようです。

ストア関係

marketplace.visualstudio.com

marketplace.visualstudio.com

marketplace.visualstudio.com

MS,Apple,Googleのストアにリリースするためのタスクですね。

TeamCity artifacts for Release Management

marketplace.visualstudio.com

JetBrainsのTeamCityのartifacts(成果物)をVSTSのRelease Managementで使うための拡張機能です。

まとめ

VSTSには色々拡張機能が提供されていて、多様なニーズが充たせると思います。みんなそんなに入れていないようですが、便利な一本を見つけて、使ってみてください。いいもの見つけたらレビュー書いてみてください。