2019年8月19日月曜日

CIツールとの連携③ - MSBuildによるチーム開発その1

さて、次はいよいよチーム開発機能をMSBuildで利用します。

チーム開発機能とはGeneXus Serverとの連携を意味し、GeneXus IDE上では「Serverからナレッジベースを作成」「ナレッジベースをServerへ送信」「アップデート」「コミット」等の操作になります。

まずはプロジェクトファイルです。




チーム開発機能を使用するためにはtargetsファイル(GeneXus.Server.Tasks.targets)のインポートを追加します。

今回は「Serverからナレッジベースを作成」を試してみます。PropertyGroupで必要な操作に必要なプロパティを定義しています。





それぞれ以下になります。

  • GeneXus Serverへの接続情報およびServerからナレッジを作成時の指定情報
  • ナレッジベースを新規作成する時の情報
  • ビルド時に必要な情報(データストアプロパティ)


<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="C:\Program Files (x86)\GeneXus\GeneXus16JP\Genexus.Tasks.targets" />
  <Import Project="C:\Program Files (x86)\GeneXus\GeneXus16JP\Genexus.Server.Tasks.targets"/>

  <PropertyGroup> <!--Input Parameters-->

    <!-- Server Properties -->
    <ServerUrl>https://sandbox.genexusserver.com/v16/</ServerUrl>
    <ServerUsername>GXTechnical\*******</ServerUsername>
    <ServerPassword>*******</ServerPassword>
    <GetAllKbVersions>false</GetAllKbVersions>
    <ServerKbAlias>GX16U2JP_Demo</ServerKbAlias>
    <ServerKbVersion>GX16U2JP_Demo</ServerKbVersion>
    <KBName>GX16U2JP_Demo</KBName>
    <WorkingKBName>GX16U2JP_Demo</WorkingKBName>

    <!-- Working KB Properties -->
    <KBDir>C:\Models\$(WorkingKBName)</KBDir>
    <DbaseServerInstance>localhost</DbaseServerInstance>
    <CreateDbInKbFolder>true</CreateDbInKbFolder>
    <DbaseUseIntegratedSecurity>true</DbaseUseIntegratedSecurity>
    <DbaseServerUsername></DbaseServerUsername>
    <DbaseServerPassword></DbaseServerPassword>
    <DbaseName>GX_KB_$(WorkingKBName)</DbaseName>

    <!-- DataStore Properties -->
    <Datastore>Default</Datastore>
    <Datastore_Property_DBName>$(WorkingKBName)</Datastore_Property_DBName>
    <Datastore_Property_ServerName>(local)</Datastore_Property_ServerName>
  </PropertyGroup>


  <Target Name="CreateKBFromServer">
    <Error Condition="'$(KBDir)'==''" Text="KBDir cannot be null" />
    <Message Text="CreateKBfromServer Directory=$(KBDir)" />
    <CreateKnowledgeBaseFromServer
        Directory="$(KBDir)"
        CreateDbInKbFolder="$(CreateDbInKbFolder)"
        DBName="$(DbaseName)"
        IntegratedSecurity="$(DbaseUseIntegratedSecurity)"
        UserId="$(DbaseServerUsername)"
        Password="$(DbaseServerPassword)"
        ServerUri="$(ServerUrl)"
        ServerInstance="$(DbaseServerInstance)"
        ServerKBAlias="$(ServerKbAlias)"
        ServerVersionName="$(ServerKbVersion)"
        ServerUserName="$(ServerUsername)"
        ServerPassword="$(ServerPassword)"
        FullKB="$(GetAllKbVersions)"/>
  </Target>

  <Target Name="OpenKB">
    <Message Text="OpenKB:$(KBDir)"/>
    <OpenKnowledgeBase Directory="$(KBDir)" />
  </Target>

  <Target Name="SetDataStoreProperty">
    <SetDataStoreProperty Datastore="$(Datastore)" Name="Database name" Value="$(Datastore_Property_DBName)" />
    <SetDataStoreProperty Datastore="$(Datastore)" Name="Server name" Value="$(Datastore_Property_ServerName)" />
  </Target>

  <Target Name="BuildAll">
    <BuildAll />
  </Target>

</Project>


実行は以下の通りです。

>MSBuild.exe GeneXus.msbuild /t:CreateKBFromServer;SetDataStoreProperty;BuildAll /p:WorkingKBName=GX16U2JP_Demo_20190819




0 件のコメント:

コメントを投稿