2019年8月22日木曜日

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

続いてサーバーから更新です。

プロジェクトファイルではUpdateFromServerタスクをUpdateターゲットとして追加しています。








UpdateFromServerタスクではプレビューやオブジェクトの指定も出来ますが、今回はシンプルに更新対象のオブジェクトを全て更新する事にしています。又、ナレッジベースプロパティの更新はしない指定にしています。(プロパティで動的にする/しないの指定も可能です)

<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="Update" DependsOnTargets="OpenKB">
        <UpdateFromServer
            ServerUserName="$(ServerUsername)"
            ServerPassword="$(ServerPassword)"
            UpdateKbProperties="false"/>
    </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>

チーム開発のタスクが使用できるようになると、「ナレッジベースを開く→サーバーから更新→全てをビルド」といった一連の作業が自動化出来るようになります。





0 件のコメント:

コメントを投稿