読者です 読者をやめる 読者になる 読者になる

kkamegawa's weblog

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

Ubuntu 16.04 LTSの設定

Docker Linux OSS Git UNIX

設定するときいろいろ情報検索するのがめんどくさいので(自動化するときも)、自分用にまとめ。適当に更新します。

Hyper-V用設定

sudo apt-get install linux-virtual
sudo apt-get install linux-tools-virtual linux-cloud-tools-virtual

これやっておくと、Hyper-Vで動かす場合、ホストからファイルコピーできるので便利(もちろんSSHd動かしてもいいんだけど)。

Copy-VMFile -Name 'Ubuntu1604LTS' -SourcePath 'C:\temp\install.sh' -DestinationPath '/home/kkamegawa' -FileSource Host

apt-get時に/dev/fd0に書き込めないという警告が出るので、

rootで/etc/modprobe.d/blacklist を編集して、以下の一行を追加する。

blacklist floppy

OS再起動すれば、OK。

フロッピーディスクがないのにfdエラーが出るときの対処 | Scribble

Proxy使う場合

環境変数http_proxy, https_proxyに設定しておく。ほかにもいろいろ方法があるようだけど、Docker以外は大体環境変数で大丈夫。.bashrcに設定している。apt-getなどは別ファイルらしいけど、OSインストールするときに設定できるので基本問題ない。

qiita.com

Git最新版

sudo apt-get install software-properties-common
sudo add-apt-repository ppa:git-core/ppa
sudo apt-get update

sudoそのままではProxyの環境変数を引き継がないので、sudo -E を指定すればいいらしい。Git最新版を入れておかないとDockerが使えない。

node.js

Installing Node.js via package manager | Node.js

curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install -y nodejs
オプション
sudo apt-get install -y build-essential

npm

$ sudo apt-get update
$ sudo apt-get install nodejs npm
$ node -v

Docker

docs.docker.com

Proxy環境下で動かす方法がいまいちよくわからない…(hello worldまではいけたけど)。行けた。Proxy経由する場合、GitにもProxyを設定しなければならなかった。

git config --global http.proxy http://proxyhost:port
git config --global https.proxy http(s)://proxyhost:port

.NET Core

.NET - Powerful Open Source Development

Visual Studio Team Services 2016/8/19の更新

ALM DevOps Git VSO VSTS

今回はちょっといろいろあって遅くなりましたが、2016/8/19付のVSTSのリリースノートの翻訳を行いました。オリジナルはこちらから読んでください。

2016-Aug-17 Release Notes | Visual Studio Team Services

今回の更新はすごく多くて、翻訳するのもちょっと苦労しました。ビルド周りは割と簡単なことしか書いてないのでよかったのですが、Rate Limit(負荷をかけているユーザーのリクエストを遅延させる)とか、テストマネージャー関係の機能は結構苦労しました。

Jenkin周りは私がよく知らないので、特にCSRF関係に関する記述について、ご存知の方教えてください。

Gitのpull requestのレビュー関係はすごくよくなっているようですね。GitHubにも負けてないように思います。ブランチポリシー設定時、承認されたら自動マージはほしかった。

ビルド定義の階層化とセキュリティ一括設定もほしかったので助かります。

ではまた三週間後。

translate to Japanese toVSTS release notes from ht ...

TFS "15" RC1公開

ALM Git ReleaseManagement TFS VisualStudio

blogs.msdn.microsoft.com

Team Foundation Server "15" RC1 | Visual Studio

次期TFSのRC1が公開されています。現時点では、日本語優先にしているブラウザで見るとPreview版のリリースノートが表示されますが、一番下にあるロケール設定でUnited Statesに変更すると英語版が見えます。RC1で変更されたところだけ別に書かれているので、見比べると差分がわかります。

残念ながらRC1の日本語版は出ないようなので、次に期待ですかね…どうしても使いたい場合は英語OS,英語SQL Serverでインストールしてみてください。ブラウザが日本語受け入れる設定になっていれば、日本語UIで表示されます。

TFS "15"ではソフトウェアの要件が変わっています。

www.visualstudio.com

  • Windows Server 2016サポート(2008 R2までサポート)
  • SQL Server 2016サポート(例によってCU1入れたほうがいいでしょう)

SharePoint 2016サポートしないってのはちょっと意外ですが、将来のUpdateでやるんでしょうかね。

RC2は出ることが決まっていますが、RC3はRC2までのフィードバック次第、ということだそうです(でも最近の品質を見ると出さないといけないんじゃないかな…)。

テスト関係のUIがものすごく変わっていますね。もうほとんどTest Managerリッチクライアント必要なさそうな。より大規模環境での品質状態のトラッキングがやりやすくなっていますね(VSTSと同じですが)。また、Chrome拡張機能を使用した探索テストの強化が著しいですが、Edgeにも出してほしいものです。

コード検索が入ったけど、Elastic Search使っているとはちょっとびっくりです。これにより、コード検索を使う場合、TFSにもJava Runtimeが必要になります。Server JREでいいそうですが、OracleのサイトにはWindows版にもかかわらず、tar.gzしかなかったので、私はJDKを入れました。事前にJAVA_HOMEの環境変数を設定して、インストーラーが環境変数を認識できるようにしておかないと(つまり再起動しておかないと)インストーラーが失敗します。

Elastic Searchを疑うわけじゃないけど、Java使っているということで、wavedashとかhalfwidth kanaとか大丈夫なんかな…。ちょっと調べてみたいところです。

個人的にはNuGetパッケージサーバー機能がありがたいですね。オンプレミスでNuGet使いたい場合、もともと立てる方法はありますが、TFS使っているなら統合されていたほうが便利ですし。VSTS使っている人ならわかると思いますが、フィードを見せる見せないといったセキュリティが統合されているのは便利です。

Visual Studio Team Services 2016/7/29の更新

Linux ReleaseManagement VSO VSTS Java

だいぶ遅れましたが、VSTSの7/29の更新分に関するリリースノートのざっくり翻訳を行いました。相変わらず操作してみないとわからないことが結構多くて悩みます…。リポジトリを作るときにreadmeも一緒に作れるのはすぐに気づいてました。

2016-Jul-29 Release Notes | Visual Studio Team Services

やっとというか、AzureへのARMデプロイがすごくよくなりましたね。今までAzure ADの証明書アプリ登録して、うんたらかんたらやるの面倒で面倒で。VSTSをAzure ADで、Azureも同じ組織アカウントに関連付けてないといけないようですが…うーん、これあると楽なんだよなーVSTSを組織アカウントで運用したくなってきました。

リリース物件の論理削除や、複数の成果物(ビルド後にできたバイナリ)を関連付ける機能もほしかった機能です。

作業項目とテスト関連付けておいて、まだやってないの探すのも大規模な環境では便利そうですね。ぼっちテナントではありがたみの理解が難しいですが…。

再リリース機能と、探索機能拡張で自動的にWebページの読み込みキャプチャもいいですね。「遅い」と思った時にもう一度やっても(キャッシュ全クリアしても)遅くないとか往々にしてあったので。

ではまた三週間後。

translate to Japanese toVSTS release notes from ht ...

TFS2015 Update3でSonarQube連携ができない場合の対処

TFS ALM SonarQube VisualStudio

TFSおよび、VSTSでビルド時にSonarQubeを呼び出すことにより、C#コードの静的解析及び、品質情報の管理を行うことができます。

Microsoft Azure - SonarQube と TFS による技術的負債の管理

SonarQube™ » Announcing SonarQube integration with MSBuild and Team Build

最初はうまく動いていたのですが、Update3のころからうまく動かなくなっていました。原因はConnectに報告するときに調べていたのですが、その通りだよということでした。

SonarQube Tasks Failed in non-english OS | Microsoft Connect

例によって、ビルドタスクのエンコーディングがANSIで、- がコードページISO-8859-1の文字だったおかげで、英語OS以外では動かないということです。

Invoke-BatchScript $bootstrapperPath -Arguments $arguments

根本対処はTFS 2015 Update4かTFS15(Preview)になるとのことなので、以下の回避策を使用します。

  • 各エージェントのtasks\SonarQubePreBuild\1.0.35フォルダにあるSonarQubePreBuild.ps1 をUTF-8に変更して、上記のように編集する。
  • クロスプラットフォーム用ビルドエージェントtfs toolを使って、1.0.36のビルドタスクをアップロードする

簡単なのは前者ですね。ビルドタスクにはそもそもこういう英語OS以外ではうまく動かないってのがたまに出てくるので、注意が必要です。

プログラマ的にWindows 10 Anniversary Updateのうれしいところ

.NET Docker Linux PowerShell Windows10

10個あるかな、と思ったのですが、今のところ思いついたものをあげてみました。うーん、まだあるはずなんですが。とりあえず、つらつらと書いてみます。Inkとかは純粋にプログラマ向けとしてどうかなーと思って、あえて入れていません(ぉ)。

他にもお気に入りの機能があれば紹介してください。

Docker互換のコンテナ

言わずと知れたこれですね。Docker for Windowsを使えば現在でも使えます。

docs.docker.com

ただ、こちらはHyper-VでLinux仮想マシン(初期で2GB )が動くので、少しメモリがきつい。なによりもWindowsで動くコンテナであればWindowsネイティブの機能を使うことになります。

msdn.microsoft.com

コマンドはdockerコマンドで共通のようです。PowerShellコマンドレットも用意されるようですが、基本はdockerコマンドで、詳細な情報を見たいときはPowerShellという住み分けになるようです。

MAX_PATHが260バイトの制限から解き放たれる

実は今までもファイル名のprefixに\\?\とつけて、UnicodeでコンパイルしたWin32アプリケーションであれば、64KBまでのパスを使えることができました。しかし、ExplorerがWindows 95時代からのANSIモードで動いていたり、世の中MAX_PATHが260バイトという決め打ちで動いていたり、.NET FrameworkもWindows 95とかを引きずっていた都合上、最大パスは260バイトまで、となっていました。

Anniversary Update以降、グループポリシーでEnable NTFS long pathsを有効に設定すれば、Win32アプリケーションでも有効になります。もちろん、MAX_PATHが260と決め打ちしているような大多数(99.9999%くらい?)のアプリケーションに長いパスを与えると即死、もしくはバッファオーバーフロー起こすので、十分評価してからにしましょう。

betanews.com

Desktop ConverterでWin32/.NETアプリケーションの簡単展開

既存の.NETアプリケーションやWin32アプリケーションにUWPのガワだけかぶせて、ストアでより簡単に配信ができるようになるというDesktop Converterです。間違えないで欲しいのは、あくまでも「ストアに公開できるようになる」というだけで、「UWP化される(mobileやXBoxで動くようになる)わけではありません

ただし、何でもかんでもコンバートできるわけではなく、制限があります。特にVisual C++ランタイムと.NET Frameworkが限られるので、古いVCランタイムを使っているアプリケーションの場合、一度移行してから、ということもあるので、注意してください。

Convert your desktop application to a Universal Windows Platform (UWP) app

UACで特権昇格が必要なアプリや、他のアプリと連携する(AppDataに書き込む)ようなアプリがダメ、というのはややきついものの、大多数のアプリケーションでは問題無いでしょう。ただし、その前にインストーラーでインストールされるようなアプリケーションでなくてはなりませんが。

インストーラーがないようなアプリの場合、コンテナ使うしかないですかね。

ネットワークが高速化

ネットワークは門外漢ですが、Linuxなどではすでに対応している新しいRFCもしくはドラフトの規格に対応しているそうです。TFOとかは素人目に見ても頻繁にopen/closeするようなサーバにアクセスする場合の高速化が見込まれると思われます。

blogs.technet.microsoft.com

PowerShell (WMF 5.1)

WMF 5.1 リリース ノート (プレビュー)

Bashに持って行かれた感がありますが、Windows における自動化、スクリプトでの運用管理を行いたい場合はWMF(PowerShell)なのは変わりません。いろいろ聞かれましたが、Bashは(今のところ)Windows 10を開発者モードに変更しないと使用できません。つまり、Bashは管理者がシステム管理のために使うのではなく、あくまでも開発者向けのツールセットの一部となっています。

PowerShellはWindowsクライアントおよびサーバの管理、自動化のためのものです。

PowerShell 5.0 にあったバグや、高速化、PowerShell DSCをはじめとした機能強化が盛りだくさんです。

.NET Framework 4.6.2

先ほどWin32アプリケーション向けの長いファイル名を扱うようにする設定を紹介しましたが、.NETの場合はapplication manifestに指定することにより、プロセス単位で制御することが可能です。

<?xml version="1.0" encoding="utf-8" ?>  
 <configuration>
  <runtime>
    <AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=false;Switch.System.IO.BlockLongPaths=false" />
  </runtime>
</configuration>

.NET Coreおよび、.NET Framework 4.6.2がインストールされたWindows 10 Anniversary Update(1607)で有効だそうです。

blogs.msdn.microsoft.com

長いファイル名の他にもモニタごとのDPIを認識するようになったとか、新しい暗号化に対応したとか、着実な強化が行われています。

blogs.msdn.microsoft.com

Bash on Ubuntu on WindowsでツールセットがLinux共通に

//Build 2016での話題は間違いなくこれだったでしょうね。cygwinとかもまぁいいのですが、なんとなくもどかしさを感じていました。PowerShellのすべてがオブジェクトになるというのは.NETなどの相互運用で大変便利です。

しかし、他のプラットフォームの方に使ってもらおうとする場合、そのへんが足かせにもなっていました。移行のためにコマンドレットにエイリアスを登録されているものもある(lsやwgetとか)のですが、結局オプションが違うから使わないんですよね。

あと、長いファイル名の扱いも、UnicodeアプリであったとしてもWindowsだから260バイト固定とかになっているものも少なからずあり、困っていました。node.jsもしばらく困ったなぁ…。

しかしそんな時代もさようなら。パスさえ少し考慮すればUbuntuで動いているものがまぁ大体動くようです。もちろんまだ実装されていないシステムコールや実装されないであろうシステムコールもありますが、コマンドラインの開発用ツールセットは割りと動くようですね。

blogs.msdn.microsoft.com

詳細な仕組みなどは上記のブログで。もしも困る場合はGitHubにissueをたててみればいいようです。

github.com

UWPアプリのバックグラウンド実行サポート

通知ではなく、バックグラウンドで実行したいような場合よさそう?

blogs.windows.com

Visual Studio Team Services 2016/7/7の更新

VSO VSTS

なんかブログとかで告知されていないようですが、すでに2016/7/7のVSTSのリリースノートが出ているようなので、翻訳を行いました。オリジナルはこちらです。

2016-Jul-7 Release Notes | Visual Studio Team Services

一週間くらいかけて展開していくそうですが、私が使っているテナントにはすでにきているようで、あれ?こんな挙動だっけ?というところがいくつもありましたが、リリースノート見て納得でした。

Webテストランナーは大きく変わっているようで、Chromeでの実行にとても力を入れているようですね。Edgeもそのうちうまくいくんでしょうけど。将来の計画として、MTM 2016(Test Manager 2016)では大きな機能強化が予定されているようですね。2010以降ほとんど変わらなかったTest Managerが大きく変わりそうです。

ブラウザアドオンがIE11で終わることですし、モダンなWebブラウザの外部制御に準拠するんでしょうか。

でもリリースノートに書いていないことを追加したとか言ってるぞ…

blogs.msdn.microsoft.com

blogs.msdn.microsoft.com

translate to Japanese toVSTS release notes from ht ...