Развертывание сборки с помощью CruiseControl.net

Вы хотите вернуть все допустимые строки из таблицы, верно?
Таким образом, вы должны объединить результаты после получения doc_owner_id с, которые удовлетворяют условиям таблицы:

select t.* 
from tablename t inner join (
  select doc_owner_id 
  from tablename
  where 
    str_to_date('4/9/2018', '%m/%d/%Y') between doc_start_date and doc_end_date
    and
    doc_type in ('JANUARY', 'DRIVER', 'LICENCE')
  group by doc_owner_id
  having count(distinct doc_type) = 3
) g on g.doc_owner_id = t.doc_owner_id
where
  str_to_date('4/9/2018', '%m/%d/%Y') between t.doc_start_date and t.doc_end_date
  and
  t.doc_type in ('JANUARY', 'DRIVER', 'LICENCE')
6
задан user17222 1 October 2008 в 07:34
поделиться

6 ответов

я не сделал этого с nant, но мы записали пользовательское приложение в C#, который читает блок и увеличивает номер выпуска.

мы называем его от исполнительного блока в конфигурации ccnet.

создание папки и копирование файлов были бы тривиальны для добавления к тому приложению

наши взгляды были, мы весь день используем C#, таким образом, это было бы более быстро для фиксирования/изменения программы сборки, записанной в C#, затем если бы мы должны были изучить intracies nant сценариев к тому же

очевидно, при использовании nant все время не было бы никакой причины не создать пользовательский nant плагин, чтобы сделать задание

1
ответ дан 8 December 2019 в 14:49
поделиться

Проверьте этот проект с открытым исходным кодом. Хотя, это использует MSBuild, различия незначительны.

CC.NET передает distrib каталог и версию к сценарию Photon.ccnet, который является простой оберткой вокруг сценария Photon.build. Номер версии используется в папке и именовании пакета и также в версиях блока.

Номера версий прибывают из svnRevisionLabellerPlugin для CC.NET

И это - то, как все смотрит в конце.

2
ответ дан 8 December 2019 в 14:49
поделиться

Я довольно плохо знаком с Круиз-контролем и nAnt также, но я нашел Сообщение в блоге Scott Hanselman очень полезным.

Не прекрасный и не симпатичное, но это действительно делало задание.

Существует также Утилита UpdateVersion (который Scott также, кажется, принял участие в).

2
ответ дан 8 December 2019 в 14:49
поделиться

Развертывание сборки к папке с номером сборки довольно просто. задача CruiseControl.NET NAnt автоматически передает много свойств Вашему сценарию NAnt. Свойство CCNetLabel является тем, которое Вы использовали бы для создания каталога развертывания. Существует на самом деле немного устаревшее пример сценарий NAnt в документации CruiseControl.NET, которая делает просто это. Вот более хорошая версия его:

<target name="publish">
    <if test="${not property::exists('CCNetLabel')}">
        <fail message="CCNetLabel property not set, so can't create labelled distribution files" />
    </if>

    <property name="publishDirectory" value="D:\Public\Project\Builds\${CCNetLabel}" />

    <mkdir dir="${publishDirectory}" />
    <copy todir="${publishDirectory}">
        <fileset basedir="${buildDirectory}\bin">
            <include name="*.dll" />
        </fileset>
    </copy>         
</target>

До управления версиями идут Ваши двоичные файлы, я нахожу следующий подход намного более чистым и легче, чем попытка изменить Ваши файлы AssemblyInfo.cs. В основном я создаю файл CommonAssemblyInfo.cs, который живет за пределами любых проектов в том же каталоге как Ваш файл решения. Этот файл включает вещи, которые характерны для всех блоков, которые я создаю, как название компании, информация об авторском праве, и конечно - версия. Этот файл связан в каждом проекте в Visual Studio, таким образом, каждый проект включает эту информацию (наряду с намного меньшим файлом AssemblyInfo.cs, который включает определенную для блока информацию как заголовок блока).

Когда проекты разрабатываются локально, или через Visual Studio или через NAnt, что файл CommonAssemblyInfo.cs используется. Однако, когда проекты разрабатываются CruiseControl.NET, я использую NAnt для замены того файла через <asminfo> задача. Вот то, на что похож сценарий NAnt:

<target name="version">
    <property name="commonAssemblyInfo" value="${buildDirectory}\CommonAssemblyInfo.cs" />

    <!-- If build is initiated manually, copy standard CommonAssemblyInfo.cs file. -->
    <if test="${not property::exists('CCNetLabel')}">
        <copy file=".\src\CommonAssemblyInfo.cs" tofile="${commonAssemblyInfo}" />
    </if>

    <!-- If build is initiated by CC.NET, create a custom CommonAssemblyInfo.cs file. -->
    <if test="${property::exists('CCNetLabel')}">
        <asminfo output="${commonAssemblyInfo}" language="CSharp">
            <imports>
                <import namespace="System" />
                <import namespace="System.Reflection" />
            </imports>
            <attributes>
                <attribute type="AssemblyCompanyAttribute" value="My Company" />
                <attribute type="AssemblyCopyrightAttribute" value="Copyright © 2008 My Company" />
                <attribute type="AssemblyProductAttribute" value="My Product" />
                <attribute type="AssemblyVersionAttribute" value="1.0.0.${CCNetLabel}" />
                <attribute type="AssemblyInformationalVersionAttribute" value="1.0.0.${CCNetLabel}" />
            </attributes>
            <references>
                <include name="System.dll" />
            </references>
        </asminfo>
    </if>
</target>

<target name="build-my-project" depends="version">
    <csc target="library" output="${buildDirectory}\bin\MyProject.dll">
        <sources>
            <include name=".\src\MyProject\*.cs"/>
            <include name=".\src\MyProject\**\*.cs"/>
            <include name="${commonAssemblyInfo}"/>
        </sources>
    </csc>
</target>

Отметьте, где значения AssemblyVersionAttribute и AssemblyInformationalVersionAttribute установлены в цели версии. Свойство CCNetLabel вставляется в номера версий. Для дополнительного преимущества Вы могли использовать плагин CruiseControl.NET как ранее упомянутый SvnRevisionLabeller. Используя это, мы получаем сборки с маркировками как "2.1.8239.0", где эти "8239" соответствует числу пересмотра Подверсии, мы создаем из. Мы выводим этот номер сборки непосредственно в наш AssemblyVersionAttribute и AssemblyInformationalVersionAttributes, и наши номера сборки и номера версий на наших блоках могут все быть легко прослежены до определенного пересмотра в нашей системе управления версиями.

11
ответ дан 8 December 2019 в 14:49
поделиться

Я соглашаюсь с BumperBox, отдельный блок, чтобы сделать, тяжелый (?) подъем постепенного увеличения номера сборки является маршрутом, которым я следовал несколько лет назад, также. Это имеет преимущество способности справиться с другими внешними факторами, также. Например, Вы могли бы хотеть увеличить номера выпуска или номера сборки, если определенные критерии существуют в рамках файла конфигурации.

0
ответ дан 8 December 2019 в 14:49
поделиться

Можно использовать свойство CCNetLabel, которое передается в сценарий NAnt для установки, где это развертывается к.

Что касается AssemblyInfo, для MSBuild существует Задача в MSBuildCommunityTasks, который работает хорошо. Не знайте то, чем был бы эквивалент NAnt то, хотя Вы могли запустить скрипт MSBuild перед своим сценарием NAnt, который изменил его.

Конфигурация проста:

<AssemblyInfo CodeLanguage="C#"
    OutputFile="%(YourProjects.RootDir)%(Directory)Properties\AssemblyInfo.cs"
    AssemblyVersion="$(CCNetLabel)"
/>

Необходимо будет добавить, в чем других атрибутах Вы нуждаетесь, а также это перезапишет файл AssemblyInfo.

0
ответ дан 8 December 2019 в 14:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: