1台でvsoagentを複数個立ち上げる

昨日のブログについて、MVP ALMの亀川さんからこんなフォローを頂きました。

005

ということで、1台でエージェントが複数立ち上げれるか、実機で確認してみます。
Visual Studio Online(VSO)のサイトを複数作成するのはちょっと面倒かな?(ユーザを複数作成しないといけない気がします)というのと、自分にしてはめずらしく、オンプレミスのTeam Foundation Server2015の環境がまだ構築できていないので、1つのVSOサイトに対して複数のエージェントを登録してみました。

まず、Windowsから。
Visual Studio Online(VSO)のサイトからエージェントをダウンロードしておき、「ZIP展開→フォルダ名変更→ConfigureAgent.ps1で設定&起動」を繰り返すだけです。
別々のフォルダ名で展開し、エージェント名をユニークに設定すれば複数立ち上がりました。

003

次にLinux(CentOS7)。
※実環境を持っていないので確認できていませんが、たぶんMacでも同じだと思います。
‘sudo npm install vsoagent-installer -g’まで完了していれば、「ディレクトリ作成&移動→’vsoagent-installer’→’node agent/vsoagent’で設定&起動」を繰り返すだけです。
こちらも別々のディレクトリ名で作成し、エージェント名をユニークに設定すれば複数立ち上がりました。

002

VSOサイトでもちゃんとエージェントは登録されています。

004

自分の環境での参考値ですが、エージェント1つあたりの消費メモリは、Windowsで約100MB、Linuxで約20MiBぐらいでした。

複数のプロジェクトが平行で走っているけどビルド用端末が複数構築できないとか、開発用ライブラリのライセンスの都合上複数台用意できないような時にはこんな感じで構築してみてはどうでしょうか?
※ライブラリのライセンスによってはNGな場合のありえますので、構築前にちゃんと確認はしてください。

vsoagentの接続先情報のリセット

Visual Studio Online(VSO)やTeam Foundation Server 2015(TFS2015)のビルドが新しくなり、実際にビルドを実行するエージェントも新しくなっています。

エージェントのインストールは
 ・ConfigureAgent.ps1 (Windows)
 ・npm install vsoagent-installer -g (Linux/Mac)
で行いますが、一度設定した接続先を変更したい場合の情報がないような気がしたので調べてみました。
※Windows用は、2回目以降「ConfigureAgent.ps1」を実行しても、全ての項目を確認(デフォルトは前回設定時の値)してくれますが、Linux/Mac用は2回目以降は接続時ユーザ名とパスワードのみ再入力し、接続先URL/エージェントプール名/エージェント名は聞かれません。

接続先の変更は、一度接続先の情報を削除したあとで、再度設定しなおすことで対応できるみたいです。
※ちょっと探してみましたが、ドキュメントが見当たらなかったです。
1.VSO/TFS2015のWebサイトで、エージェント情報を削除する。
  コントロールパネルの「Build」タブにあるエージェント一覧から、「×」で削除します。

001


  このイメージだと、エージェントプール「CentOS7」に登録されているエージェント「cent71」を削除します。

2.接続先が格納されているファイルを削除する。
  以下のファイルを削除します。
   ・settings.json (Windows)
   ・.agent (Linux/Mac)
  ※どちらとも、エージェントのインストール先に格納されています。

あとは、初回設定時と同じです。(接続先URLなどを再設定します)

TFS2015のインストールで早速

ようやくTFS2015環境を作成してみようと思い、OS→SQL Server→TFS2015とインストールし、構成ウィザードを実行したところ、早速ハマりました。(;´Д`)

作業していたのはこんな感じ。
1.Windows Server 2012 R2(Core)でActive Directoryサーバを作成
2.別サーバでWindow Server 2012 R2(GUIあり)をインストール
3.SQL Server 2014 SP1をインストール
4.続けてTFS 2015をインストール
5.インストール後の構成ウィザードで「完全インストール」を選択
6.ウィザードで
  ・各種サービスの起動アカウントをADのアカウントに変更
  ・レポートサービスを使用
  ・レポート実行アカウントはTFSサービスのアカウントと同じ
  ・ビルドサービスを自動起動
  を変更し、構成を実行
7.データベースの構成でながーいこと待たされた後、突然構成ウィザードが終了する(;゚Д゚)

ちなみに、基本インストールだと正常にインストールできました。

Hyper-Vなので、スナップショットでTFSインストール前に戻して何回もインストールしてみたり、SQL ServerをGUIからインストールしてみたりしたのですが、「構成ウィザード実行前にOSを再起動する
」ことで回避できました。

原因は全くわかりませんが、とりあえず覚書きということで。
(まぁ、インストールなんてそんなにすることないでしょうし)
  

Visual Studio 2015とTeam Foundation Server 2015の変更概要まとめ

Visual Studio 2015が7/20に、Team Foundation Server 2015が8/6にリリースされました。
今回はクロスプラットフォームが目玉となっているのですが、いろいろありすぎて整理しないと
把握しきれないので、ちょっとリンク先と個人的に興味があることをまとめてみようかと。
☆Visual Studio 2015
 ・エディションごとの機能比較
  https://www.visualstudio.com/products/compare-visual-studio-2015-products-vs
  CodeLensがProfessionalでも使用可能になったことはありがたいです。
 ・Visual Studio 2015の変更機能/新機能
  https://www.visualstudio.com/news/vs2015-vs
  →ざっと25個ぐらい記載されています。
☆Team Foundation Server 2015
 ・Visual Studioのエディションごとの使用可能機能
  https://www.visualstudio.com/products/compare-visual-studio-2015-products-vs
  以下の機能がProfessionalでも使用可能に。
   ・チームルーム(チーム内でのチャット機能)
   ・アジャイルポートフォリオ管理
   ・ストーリーボーディング
   ・コードレビュー
   ・タスクの一時停止/再会
    →割り込みで作業が入った時に、IDEの状態をシェルブ機能を使用して保存しておき、割り込み作業が完了したら
     アンシェルブしてIDEの状態を戻す機能です。
 ・Team Foundation Server 2015の新機能
  https://www.visualstudio.com/news/tfs2015-vs
  ※タイトルがRC2のままなので、最新版ではないと思いますが、あまり変わらないような気がします。
   また、「データベーススキーマの変更」というところで「アップグレードに時間がかかるよ」と明記していあるので、
   アップグレードされる方はそれなりの覚悟が必要なようです。
   
☆ライセンス関連
 ・製品条項(Windowsとかも含め、丸ごとあります)
  http://www.microsoft.com/ja-jp/licensing/product-licensing/products.aspx
  ※2015年7月から、ライセンスに関する条件については「製品使用権説明書」から「製品条項」に変更されているようです。

CLR/H 第96回に参加しました

2015/0711に開催された、CLR/Hさんの勉強会に参加してきました。

今回、参加申し込みを全くしていない状態で、受付で初めて事実を認識するという失態をかまし、さらにLTをやれとのお達しを頂いたのに、デモ用プログラムがビルドできなくなっていたという状況も重なり、相当楽しい(?)状況でした。

全体としては
 ・Minecraftサーバ立てれば楽しいよ
 ・Azure全体こんな感じ
 ・Dockerすげぇ
 ・Windows女子部の方々のセッション内容が凄い
 ・ジニアスのデモ楽し~
 ・LTでデモ失敗した( ;∀;)
といった感じです。

LTではVS2015/TFS2015で新しく追加されるビルド機能についてお話させていただきました。(デモ:Xamarin Android版を新しいビルド/ローカルエージェントでビルドし、実機に転送する)
使用したスライドは、Slideshareと、Beta版のDcosに上げていますので、ご興味があればどうぞ。
http://www.slideshare.net/__Black/team-foundation-server-50413718
https://docs.com/ja-JP/d/team-foundation-server_DaWUZJSYpAWd2kAAACHUoBg~M95adf90c-aa5c-294e-1556-727ca3fb8ea1


7/20には新しいVisual Studio/Team Foundation Serverもリリースされるので、もうちょっと更新頻度を上げたいですねw

Microsoft MVP Award受賞

またもやご無沙汰しております。

なんとか今年もMVP Award(Visual Studio ALM)を受賞させていただけることとなりました。
この1年は本業が多忙だったのであまり情報発信できなかったと反省しております。
これからはWindows 10やVisual Studio 2015/Team Foundation Server 2015といったリリースがてんこ盛りなので、いろいろ情報を提供できればと思います。

簡単ですが、今後ともよろしくお願いいたします。<(_ _)>

de:code 2015参加

またもや更新が滞っております( ;∀;)

早速ですが、5/26~27で開催されたde:code 2015に参加してきました。
今回、Galaxy Note 3+OneNodeの構成で手書きでメモを残してみましたが、以外にバッテリーが持ってくれたのと、
手書きの適当さがイイ感じでした。
仕事の都合で聞けなかったセッションもありますが、簡単にまとめてみます。
※あくまで個人的なメモですので、情報が欠如/一部異なるところもあるかもしれませんがご容赦願います。
 また、記載した内容は2015/05/27時点のものですので、変更される可能性が大いにあります。
 
○基調講演
メッセージとしては、「今までの「クラウド、モバイル」に加えて「IoT」が追加され、あらゆるものが繋がる。
その全てに対してMicrosoftは価値を提供してく」といったところでしょうか。
事例として面白かったのは、TOYOTAの「T-Connect」で車の情報をAzure上に集め、Map上にどれぐらいの速度でどこを走っているのかをマッピングするというものでした。Mapの移動/縮小・拡大に対する反応も即時だったので、「これがクラウドの力か・・・
」という感じですが。
(実は、友山専務のJZA80スープラの写真が一番興味深かったですがw)

○アジャイルなビジネスに貢献するIT アーキテクトの役割
 ・(主に)Webサービスのレガシー化に対する「MSA(Micro Service Architecture)」は現実解
 ・SOAとMSAの違いは文化面。
  SOAはトップダウン/理想の世界
  MSAはボトムアップ
 ・ドメインは分割、プラットフォームは共通化する方向で検討する
 ・要件定義に「ビジネスの価値」を取り込む
 ・予算主導→価値の検証/人材の育成ができなくなる

○クラウドプラットフォーム 次期 Windows Server 概要
 ・Storage ReEplica
  SMB3.0、ハード非依存、構築前にレポート作成可能(クラスタと同様)
  Destination側はレプリカディスクの内容は見れない
 ・VM Resiliency(一時的な障害[ちょっとネットワークが見れなくなったとか])への対応として、
  -Vの仮想マシンのStateが追加
  ストレージ:Pause→Stop(30分)
  ハード間(Quorumが見れないとか):Isolate, UnMonitor
 ・Host Guardian Service(仮想VMのセキュリティ強化)
  vTPMを使用/保護されたVM(Shield VM)のみ起動
  →Gen2, Win8以降, LinuxもOK
 ・必要な時に必要な特権→Identity Manager
  新たなADを追加。既存のADは変更不要
 ・Hyper-V
  ・構成バージョン:5.0→6.0、構成ファイルがバイナリ化
  ・チェックポイント
   今までと同じもの:Standard Checkpoint
   VSSベース:Production Checkpoint
 ・Nano Server
  GUIが全くない
  とにかくリソースが少ない
 ・Docker
  Serverコンテナ/Hyper-Vコンテナの2種類

○MS版Docker 誕生!Windows Server Containers とは?
 ・GUI系の操作が必要な場合は「Container Connect」で表示
  →リモートデスクトップのようなもの
 ・テンプレートを集約(セントラルリポジトリ)

○Windows 10 “Windows as a Service”
 ・Cortanaで社内データのBI連携(イベントの参加人数を確認/どこから来たのかをMapping)
 ・機能改善/新機能の追加を無料サービス化(Windows Update経由)
 ・Windows 10への(無償)アップデートはリリースから1年間
 ・機能更新は2~3回/年の予定
 ・Windows Update for Business(WSB)
  更新タイミングの調整(早く/遅めに)
 ・P2PキャッシュでWU経由でなくても更新ファイルが取得可能
 ・リリースまでの工程が大幅変更
  ・開発ビルド
  ・MS社内ベータ
  ・Insider Preview Branch
  ・Current Branch
   一般向け、4ヶ月程度を想定、全エディションが対象
  ・Current Branch for Business
   ビジネスユーザ向け、4~8ヶ月程度を想定、Professional/Enterprise/Educationが対象
  ・Long Time Servecing Branch
   最大10年は機能を固定化(メインストリーム5年、拡張サポート5年)、要SA
   WSUS経由のみ対応予定、Enterprise/Educationのみ対象

○Xamarin.Forms と Web API による実践的クロスデバイス業務アプリケーション開発
 ・Xamarin.Formからはサービス参照できない→WCF/Webサービスが使えない
  →WebAPIを使用
 ・IIS Expressが使えない → Azure Webサイトを使用

○Windows 開発における Visual Studio Online を用いたプロジェクト管理
 ・IMEチームでの実例
 ・月単位でのサイクル
 ・VSOはカスタマイズしたものを使用
 ・必ずランク付けを行う
 ・各種情報がハイパーリンクで参照できるので、透明性が高くなった
 ・パーミッションを変更
  今まで:部門ごと(アプリ/OSなど)、現在:アクセスフリー
 ・マイルストーンごとの成果→月ごとの成果
 ・ミーティング:週次→日次
 ・担当を固定化→状況により柔軟に割り当て
  →結果として開発者のカバー範囲が広がる(人材育成)
 ・「綿密なリリース」から「試して修正」
 ・(チーム?)組織変更
  ・今まで
   Developer:内部設計、コード
   Tester  :テスト
   PM    :外部仕様
  ・現在
   Developer:内部設計、コード、テスト
   Quality :ユーザシナリオ検証(基準設定と測定)
   PM    :外部仕様、シナリオ作成
 ・顧客体験と機能に対する成功基準を定義、測定

○これが噂の Nano Server ~期待に応えるために小さくなった次期サーバー OS~
 ・MSが考えている「データセンターアーキテクチャ」がすごいらしい
 ・不要なものは削除
  ・「役割と機能の追加」で持っているインストールモジュール
  ・WOW64
  ・一部サーバコンポーネント
  ・MSIが使えない
  ・GUIスタック
   ローカルログオンすらNG
  ・操作はPowerShell
  ・Azure Stack重要
  ・Setup & BootEvent Collectionでセットアップ時や起動時のイベント情報を集約
  ・使える役割は、Hyper-V, クラスタ, File Server, Containerだけ
  ・TechNetにTP2でのNano Serverの作り方が掲載されている
   →「Getting Started with Nano Server」
    https://msdn.microsoft.com/en-us/library/mt126167.aspx
    
自分が参加したセッションはインフラ寄りでしたが、印象として次期Windows Server(Windows Server 2016)が
凄そうということと、いままでサーバ系がメインだった高添さんがクライアント(Windows 10)やDevOps関係の
内容を入れてきているところ、IMEチームのVSO使用実例など、今までとは少し違うところがあり、「ナデラに
なってからMSがまた変わってきているかな」ということを実感しました。

あと、参加者パーティの抽選で、ラズパイ頂きました。
最近やっとXamarin触り始めたばかりなのですぐにはIoTまで手が回りませんが、何か使ってみたいと思います。

参加された皆様、イベントを作られたMS社員および関係者の方々、お疲れ様でした。

TFSとGradleの連携7:Ivy環境作成2

年明け1発目は、去年書き残したIvyのリポジトリ作成の続きです。

とりあえず、今回の環境構築で使ったリポジトリダウンロード用のbuild.xmlを置いてみます。

<?xml version="1.0"?>
<!–
   Licensed to the Apache Software Foundation (ASF) under one
   or more contributor license agreements.  See the NOTICE file
   distributed with this work for additional information
   regarding copyright ownership.  The ASF licenses this file
   to you under the Apache License, Version 2.0 (the
   "License"); you may not use this file except in compliance
   with the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing,
   software distributed under the License is distributed on an
   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
   KIND, either express or implied.  See the License for the
   specific language governing permissions and limitations
   under the License.   
–>
<!–
   2014/12/01 Changed by @__Black
     checkstyle, findbugs用のライブラリをリポジトリに追加するだけの処理に変更
–>

<project name="ivyRepositoryInstall" default="add-repos"  xmlns:ivy="antlib:org.apache.ivy.ant">
<property name="repositoryBase" value="c:/ivy-repository"/>

<property name="originalResolver" value="libraries"/>
<property name="installFolder" value="my-repository"/>

<property name="ivy.cache.dir" value="${repositoryBase}/cache" />
<property name="dest.repo.dir" value="${repositoryBase}/myrepository" />

<property name="ivy.jar.dir" value="${repositoryBase}/.ivy2/jars" />
<property name="ivy.jar.file" value="${ivy.jar.dir}/ivy.jar" />

<!– =================================
          target: load-ivy         
            this target is not necessary if you put ivy.jar in your ant lib directory
            if you already have ivy 1.4 in your ant lib, you can simply remove this
            target
         ================================= –>
    <target name="load-ivy">
     <path id="ivy.lib.path">
      <pathelement location="${ivy.jar.file}"/>
     </path>
     <taskdef resource="org/apache/ivy/ant/antlib.xml"
               uri="antlib:org.apache.ivy.ant" classpathref="ivy.lib.path"/>
        <ivy:settings id="settingsFile" file="${repositoryBase}/settings/ivysettings-basic.xml"/>
    </target>   

    <target name="add-repos"  depends="load-ivy">
     <ivy:install settingsRef="settingsFile"
      organisation="com.puppycrawl.tools" module="checkstyle" revision="6.1.1"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
     <ivy:install settingsRef="settingsFile"
      organisation="junit" module="junit" revision="4.11"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
     <ivy:install settingsRef="settingsFile"
      organisation="org.hamcrest" module="hamcrest-core" revision="1.3"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
     <ivy:install settingsRef="settingsFile"
      organisation="org.jacoco" module="jacoco"  revision="0.7.2.201409121644"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
     <ivy:install settingsRef="settingsFile"
      organisation="antlr" module="antlr"  revision="2.7.7"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
     <ivy:install settingsRef="settingsFile"
      organisation="org.antlr" module="antlr4-runtime"  revision="4.3"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
     <ivy:install settingsRef="settingsFile"
      organisation="commons-beanutils" module="commons-beanutils-core"  revision="1.8.3"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
     <ivy:install settingsRef="settingsFile"
      organisation="commons-cli" module="commons-cli"  revision="1.2"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
     <ivy:install settingsRef="settingsFile"
      organisation="com.google.guava" module="guava"  revision="18.0"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
     <ivy:install settingsRef="settingsFile"
      organisation="org.apache.ant" module="ant"  revision="1.7.0"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
     <ivy:install settingsRef="settingsFile"
      organisation="org.abego.treelayout" module="org.abego.treelayout.core"  revision="1.0.1"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
     <ivy:install settingsRef="settingsFile"
      organisation="org.antlr" module="antlr4-annotations"  revision="4.3"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
     <ivy:install settingsRef="settingsFile"
      organisation="org.jacoco" module="org.jacoco.agent"  revision="0.7.2.201409121644"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
     <ivy:install settingsRef="settingsFile"
      organisation="org.jacoco" module="org.jacoco.ant"  revision="0.7.2.201409121644"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
     <ivy:install settingsRef="settingsFile"
      organisation="org.jacoco" module="org.jacoco.report"  revision="0.7.2.201409121644"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
     <ivy:install settingsRef="settingsFile"
      organisation="org.jacoco" module="org.jacoco.core"  revision="0.7.2.201409121644"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />

     <ivy:install settingsRef="settingsFile"
      organisation="org.jacoco" module="org.jacoco.agent"  revision="0.7.1.201405082137"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
     <ivy:install settingsRef="settingsFile"
      organisation="org.jacoco" module="org.jacoco.ant"  revision="0.7.1.201405082137"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
     <ivy:install settingsRef="settingsFile"
      organisation="org.jacoco" module="org.jacoco.report"  revision="0.7.1.201405082137"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />

     <ivy:install settingsRef="settingsFile"
      organisation="org.ow2.asm" module="asm-debug-all"  revision="5.0.3"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />

     <ivy:install settingsRef="settingsFile"
      organisation="org.jacoco" module="org.jacoco.core"  revision="0.7.1.201405082137"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />

     <ivy:install settingsRef="settingsFile"
      organisation="com.google.code.findbugs" module="findbugs" revision="3.0.0"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
     <ivy:install settingsRef="settingsFile"
      organisation="com.google.code.findbugs" module="bcel-findbugs" revision="6.0"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
     <ivy:install settingsRef="settingsFile"
      organisation="com.google.code.findbugs" module="annotations" revision="3.0.0"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
     <ivy:install settingsRef="settingsFile"
      organisation="com.google.code.findbugs" module="jFormatString" revision="3.0.0"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
     <ivy:install settingsRef="settingsFile"
      organisation="dom4j" module="dom4j" revision="1.6.1"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
     <ivy:install settingsRef="settingsFile"
      organisation="jaxen" module="jaxen" revision="1.1.6"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
     <ivy:install settingsRef="settingsFile"
      organisation="org.ow2.asm" module="asm-debug-all" revision="5.0.2"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
     <ivy:install settingsRef="settingsFile"
      organisation="commons-lang" module="commons-lang" revision="2.6"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
     <ivy:install settingsRef="settingsFile"
      organisation="xml-apis" module="xml-apis" revision="1.0.b2"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
    </target>
</project>

GitHubにも同じファイルを置いています。

このファイルを保存して、「Ant -f build.xml」のような形で実行すると、インターネットからダウンロードしてくれます。

ちなみに、このbuild.xmlの内容を追加したいときには、「ivy:install」タスクをコピペで追加し、必要なライブラリ情報に書き換えるだけです。
「必要なライブラリ情報」をどう指定するかですが、「The Central Repository」という便利なサイトが存在します。

Snapcrab_20150101_205551_no0000

ダウンロードしたいライブラリの情報を検索します。
試しに、"Cobertura"を検索してみます。

Snapcrab_20150101_210154_no0000

過去バージョン/関連ライブラリを含め、リポジトリに登録されているものが表示されます。
(Gradle非公式ですが、Cobertura用Pluginも格納されています)

過去バージョンを選択したいときには、「Latest Version」にある"all"をクリックすると、バージョン一覧が表示されますので、そこから選択できます。

Snapcrab_20150101_210213_no0000

取得したい「Version」をクリックすると、詳細情報が表示されます。

Snapcrab_20150101_210220_no0000

左側にある「Dependency Information」にある"Apache Ivy"をクリックすると、依存関係の情報が表示されます。この内容を元に
organisation="xml-apis" module="xml-apis" revision="1.0.b2"
 org="~"→organisation="~"
 name="~"→module="~"
 rev="~"→revision="~"
としてivy:installタスクに指定すればOKです。
今回のcoberturaであれば、こうなります。
     <ivy:install settingsRef="settingsFile"
      organisation="cobertura" module="cobertura" revision="1.9rc1
  from="${originalResolver}" to="${installFolder}" overwrite="true" />

ちなみにですが、build.gradleの「repositories」に"mavenCentral()"と記載し、Mavenのセントラルリポジトリを使用する場合は、先ほどの「Dependency Information」にある"Gradle/Grails"をクリックしたところに表示される
 compile ‘cobertura:cobertura:1.9rc1’
を、build.gradleの「dependencies」に追加するだけです。

Gradleを使ってTFSのビルドを実行させるための環境構築について書いてみました。
今回紹介させていただいた「Gradle for TFS Build Automation」は、Java関連での選択肢として以前のBuild Extentionsよりも幅が広がっているのと、GradleがAnt/Mavenのビルドスクリプトをそのまま使用できることもあり、移行もやりやすいと思います。

2014年の振り返り

今年もあとわずかになりました。少し早い気もしますが、ちょっと仕事が立て込んでいるので今年を振り返ってみます。

ちょっと周りで流行ってるっぽいので、今年のアクセス数TOP10を上げてみました。

1 Windows 7 & Server 2008 R2 SP1の正しい適用
2 TFSでの分岐について:基本的な考え方
3 TFS2012ライセンスメモ
4 TFSの分岐について:ワークスペースの作成
5 ユーザコントロールとカスタムコントロールの違い?
6 Hyper-Vで「開始中」のままになったら
7 TFSの分岐について:マージ
8 TFSの分岐について:MAINブランチをどうするか
9 TFSの分岐について:マージで競合が発生したとき
10 コードカバレッジ分析の色分けがちゃんと表示されないとき

SP1の適用が1位なのはちょっと不本意ですが、それ以外にも分岐に関するものが大半を占めていたのも予想外でした。明確な正解がないので、皆さんいろいろ検索されているということでしょうか。

去年の振り返りで、「仕事でもTFSを使おうかと画策している」と書きましたが、ようやく仕事でもTFSを使い始めました。(とは言っても、Javaなんですが(^-^; )
これで最初の一歩は踏み出せました。

しかし、去年に引き続き仕事が重なったままだったので、勉強会などで登壇させていただく機会は少なかった(なぜか、12月の同日に2回w)のですが、いろいろ大きな機会をいただくことができました。

まずは共著で書籍を発行させていただくことになりました。
TECHNICAL MASTER はじめてのTeam Foundation Server [Kindle版]

発行当初も4店舗限定での発売となり、今となっては電子書籍のみの状態で少し寂しい状態ですが、こういった機会に巡り合えたことに感謝です。

また、初めてMicrosoft MVP Awardを受賞させていただくことができました。

本当にこの2つは大きな機会でした。ありがとうございました。

残念だったのは、これも去年の振り返りで書いてたのですが、TFSのハンズオンができませんでした。来年にはVisual Studio/Team Foundation Serverも次のバージョンが出るでしょうから、新しいバージョンでのハンスオンもやってみたいです。

今年もいろいろな方々にお世話になりました。来年もよろしくお願いいたします。<(_ _)>

勉強会に参加してきました

この時期は毎年恒例で
CLR/H
さんカソウ化
Day
があるのですが、今年は品川で開催されました。
しかも、以前に

Release Management
の導入をされたソフトバンク・テクノロジー株式会社の古賀さんからお誘いがあり、隣の部屋で開催されていた
Plus Programming .net
勉強会にも飛び込みで参加させていただきました。

※ソフトバンク・テクノロジー株式会社様の導入事例紹介はこちら

 

予定では、発表は
Plus
Programming .net

勉強会の
LT
だけだったのですが、
CLR/H
さん側でも
15
分のセッションを行わせていただけることになりました。

CLR/H
さんでは、最近ブログにも書いた
Gradle
との連携の概要について話しました。

つながるJavaとTFS ぱーと2

※似たようなスライドが去年上がってますが、なんせ喋る
30
分前に「
30
分ほど時間を埋めてほしい」という無茶ブリが発動したので、テンプレートとして前のスライドを使いました
w

 

 

Plus Programming .net
勉強会さんではお初だったのと
LT
でしたので、個人的に思いつく
TFS
の機能関連のキーワードを上げてみました。

Team Foundation Serverで出てくるキーワード

 

また、CLR/H
さんで
MS
荒井さんからご提供いただいた「プログラミング
Windows Runtime
」を頂きました。ありがとうございます。
<(_ _)>

最後に、「カソウ化
Day
は怖い」

(詳細は怖くて言えません
(
;゚Д゚
)