Bruce Atherton wrote:
[EMAIL PROTECTED] wrote:
Is that ok?
http://svn.apache.org/viewvc/ant/core/trunk/docs/manual/install.html?view=diff&r1=577182&r2=577183&pathrev=577183
Wow, quick work. Thanks, Jan, that looks great. I have a few minor edits and wanted to get the subdirectory info in there, but I'm having Subversion issues today so I'll have to check in the changes later.

and not all Ant users are programmers. Thanks.


??? really? What are the other scenarios (for non-developers)?
Well, I can think of several groups that I've seen running it. One is sysadmins that use Ant for various deployment and system maintenance tasks. They may even be responsible for keeping a build machine running for developers. They are technical, yes, but not necessarily programmers.

Another group is QA testers who may use Ant to automate testing, particularly with tools like Canoo WebTest[1] or with a custom built system.

Yet another is anyone installing an application that requires the running of Ant to perform or complete the installation. Any application distributed using Ant Installer[2] or Antigen[3] would fit into this category, to name just two.

Then there are all the document handling solutions such as the one Mark mentioned in his email. Ant is ideal for hiding multiple XSLT transforms and just "building" output documents from input XML. XML Publication[4] is another example of this.

Those are just a few examples that spring to mind. I'm sure there are many others.


Testers are a special case...they are part of the dev team, but they shouldnt be assumed to know about XML namespaces, class not found exceptions, etc, only about the systems they test.

I think all my work this week has been on ant and RPM creation, with no line of java code involved. Instead its all creating rpm files and shell scripts that work. And how do I know they work? In the build, I scp them over to a vmware image of RedHat enterprise linux 5 and install the rpms, then walk the initd through its operations

<target name="rpm-remote-initd" depends="rpm-ready-to-remote-install,rpm-remote-install"
      description="check that initd works">
    <rootssh command="${remote-smartfrogd} start"/>
    <rootssh command="${remote-smartfrogd} status"/>
    <rootssh command="${remote-smartfrogd} start"/>
    <rootssh command="${remote-smartfrogd} status"/>
    <rootssh command="${remote-smartfrogd} stop"/>
    <rootssh command="${remote-smartfrogd} stop"/>
    <rootssh command="${remote-smartfrogd} restart"/>
    <rootssh command="${remote-smartfrogd} status"/>
    <rootssh command="${remote-smartfrogd} restart"/>
    <rootssh command="${remote-smartfrogd} status"/>
    <rootssh command="${remote-smartfrogd} stop"/>
  </target>

then I go on to issue some rpm commands to make sure all directories are explicitly owned by the rpm, otherwise some distros dont make them accessible to non-root users

  <target name="rpm-queries-test" depends="rpm-remote-install"
      description="check that files and directories belong to the RPMs">
    <expandingcopy file="${rpm.metadata.dir}/rpm-queries.txt"
      todir="${build.dir}"/>
    <rootssh commandResource="${build.dir}/rpm-queries.txt"
    failonerror="true"/>
  </target>

where the rpm-queries file is a list of directories and files we expect to have
rpm -qf ${rpm.install.dir}
rpm -qf ${rpm.install.dir}/bin
rpm -qf ${rpm.install.dir}/lib
rpm -qf ${rpm.install.dir}/links
rpm -qf ${rpm.install.dir}/bin/security
rpm -qf ${rpm.install.dir}/bin/metadata
rpm -qf ${rpm.log.dir}
rpm -qf ${rpm.etc.dir}
rpm -qf ${rpm.install.dir}/testCA
rpm -qf ${rpm.install.dir}/private
rpm -qf ${rpm.install.dir}/signedLib
rpm -qf /etc/profile.d/smartfrog.sh
rpm -qf /etc/profile.d/smartfrog.csh
rpm -qf ${rpm.install.dir}/docs
rpm -qf ${rpm.install.dir}/src
rpm -qf ${rpm.install.dir}/src.zip

So, No Java. It is a java system we're publishing, but this build file is there to build Linux RPMs and test them, using remote SSH commands to a linux system hosted in its own VM to test it. The nice thing about this approach is it scales out to different linuxes, just with new VMs.

I'm actually thinking of using AntUnit to run these actions as unit tests, just for the better reporting. Right now the thing blocks on the first failure, whereas I could make every rpm -qf query its own test target, I could make different initd sequences their own stuff too. That would be slick, wouldn't it. Remote install of your RPMs and test results presented junit style, even on a CI server.

--
Steve Loughran                  http://www.1060.org/blogxter/publish/5
Author: Ant in Action           http://antbook.org/

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to