سؤال

الخلفية

أنا أضع معا المستمر لمنظومة التكامل في العمل على اثنين من رصد السفن التي تعمل على سطح المكتب المحلي.VM #1 (الأدوات) يعمل CruiseControl.Net والتخريب BugTracker.Net و SQL Server Express.VM #2 (BuildMaster) يعمل نانت مع NAntContrib وقد VB 6.0 1.0/1.1/2.0/3.5 .Net Framework تطوير البرامج المثبتة.والقصد من ذلك هو السيطرة بإحكام ما مثبتا على BuildMaster و تكون أكثر ليونة في أدوات المطور محطات العمل.

المسألة

كان CCNet المشروع على الأدوات التي نجحت في تجميع اختبار VB 6.0 التطبيق على BuildMaster ، ولكن بناء بدأت الفشل في الأسبوع الماضي.الشيء الوحيد الذي تذكر به تثبيت BugTracker.Net و SQL Server Express على الأدوات.

الأعراض

فشل البناء و يعود استثناء:

<![CDATA[Starting 'vb6 ( /make "\\buildmaster\Working\TestApp\TestApp.vbp" /outdir "\\buildmaster\Working\TestApp\build" /out "\\buildmaster\Working\TestApp\TestApp.build.err")' in '\\buildmaster\Working\TestApp']]></message><duration>711.02240000000006</duration></task><duration>761.09440000000006</duration></target><failure><builderror><type>NAnt.Core.BuildException</type><message><![CDATA['vb6' failed to start.]]></message><location><filename>\\buildmaster\Working\TestApp\TestApp.build</filename><linenumber>39</linenumber><columnnumber>4</columnnumber></location><stacktrace><![CDATA[   at NAnt.Core.Tasks.ExternalProgramBase.StartProcess() in c:\Nant\src\NAnt.Core\Tasks\ExternalProgramBase.cs:line 501
   at NAnt.Core.Tasks.ExternalProgramBase.ExecuteTask() in c:\Nant\src\NAnt.Core\Tasks\ExternalProgramBase.cs:line 386
   at NAnt.Contrib.Tasks.Vb6Task.ExecuteTask() in c:\Nant\contrib\src\Tasks\Vb6Task.cs:line 220
   at NAnt.Core.Task.Execute() in c:\Nant\src\NAnt.Core\Task.cs:line 186
   at NAnt.Core.Target.Execute() in c:\Nant\src\NAnt.Core\Target.cs:line 247
   at NAnt.Core.Project.Execute(String targetName, Boolean forceDependencies) in c:\Nant\src\NAnt.Core\Project.cs:line 910
   at NAnt.Core.Project.Execute() in c:\Nant\src\NAnt.Core\Project.cs:line 862
   at NAnt.Core.Project.Run() in c:\Nant\src\NAnt.Core\Project.cs:line 947]]></stacktrace><internalerror><type>System.ComponentModel.Win32Exception</type><message><![CDATA[The system cannot find the file specified]]></message><stacktrace><![CDATA[   at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo)
   at System.Diagnostics.Process.Start()
   at NAnt.Core.Tasks.ExternalProgramBase.StartProcess() in c:\Nant\src\NAnt.Core\Tasks\ExternalProgramBase.cs:line 498]]></stacktrace></internalerror></builderror></failure><duration>1211.7424</duration></buildresults>

ومن الواضح أن لحوم استثناء [CDATA['vb6' فشل بدء تشغيل.]].مشكلتي هي عند تشغيل نانت بناء مباشرة على BuildMaster أنه يكمل بناء بنجاح في كل مرة.

لأجل اكتمال هنا هو بلدي نانت بناء النصي:

<?xml version="1.0" ?>
<project name="TestApp" default="build">
    <!-- set build.date property to current date in format yyyy-MM-dd -->
    <tstamp property="build.date" pattern="yyyy-MM-dd" />

    <!-- global project settings -->
    <property name="project.name" value="TestApp" />
    <property name="project.version" value="1.00" unless="${property::exists('project.version')}" />
    <property name="project.release.type" value="release" unless="${property::exists('project.release.type')}" /> <!-- nightly / dev / alpha / beta# / rc# / release -->
    <property name="build.warnaserror" value="false" />

    <!-- default configuration -->
    <property name="project.client" value="" />
    <property name="build.defines" value="" />
    <property name="build.number" value="${math::abs(math::floor(timespan::get-total-days(datetime::now() - datetime::parse('01/01/2000'))))}" />

    <!-- platform specific properties. These are the defaults -->
    <property name="current.build.defines" value="${build.defines}" />

    <!-- Build Tasks -->
    <target name="init" description="Initializes build properties">
        <property name="build.dir" value="${project::get-base-directory()}\build" />
        <echo message="Build Directory is ${build.dir}" />
    </target>

    <target name="clean" depends="init" description="Deletes current build configuration">
        <echo message="Clearing out files before recompiling..." />
        <delete verbose="true">
            <fileset basedir="${build.dir}">
                <include name="TestApp*.exe" />
            </fileset>
        </delete>
    </target>

    <target name="build" depends="clean" description="Perform a build of the base TestApp product">
        <mkdir dir="${build.dir}" unless="${directory::exists(build.dir)}" />

        <!-- Actually compile VB6 project into executable -->
        <vb6 project="TestApp.vbp" outdir="${build.dir}" errorfile="TestApp.build.err" verbose="true" />
    </target>
</project>

مساعدتكم هو موضع تقدير كبير!

هل كانت مفيدة؟

المحلول

قد أكون أسأت فهم السؤال الخاص بك لذا يرجى العارية معي.CCNet هو نانت المهمة operatates على الجهاز المحلي (الجهاز تشغيل CCNet).

إذا أدوات تشغيل CCNet ولكن BuildMaster تشغيل جميع الأدوات (أيVB6, الخ), أنا متأكد هناك طريقة لفعل ما يجري محاولة.عموما, CCNet يجب أن تكون قيد التشغيل على الجهاز فعلا أداء يبني. لذلك VB6 لا يمكن العثور لأن VB6 لم يتم تثبيت في مربع الأدوات.

ومع ذلك ، CCNet لا يكون وسيلة إلى رصد/مراقبة متعددة بناء الخوادم من واحد.لذا في حال كنت قد تكوين أدوات التحكم BuildMaster ما يبني ، ولكن CCNet سوف تحتاج إلى أن تكون مثبتة على كل من.إشارة على شيء من هذا القبيل يمكنك التحقق من تقسيم بناء على CCNet الموقع.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top