[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[Ovirt-devel] oVirt / Autobuild



I just committed the necessary autobuild.sh files to get oVirt /
autobuild working together. Attached is the auto-build.conf file used to
build all the modules. If building for yourself make sure to replace the
necessary "replace_me" with your own config, eg. server urls, emails,
and such. If building for yourself it also might be desirable to comment
out the base-urls pointing to the git.et.redhat.com repository and
uncomment the local filesystem uris. After this, subsequence commits to
the ovirt projects checked out in the indicated directory will be picked
up and run by your local auto-build process.

Two caveats are required before you can setup oVirt autobuild for
yourself. The first is that the "builder" user needs passwordless sudo
access so as to be able to automatically run the portions of the build
process that require sudo. The second is that you need a reworked
autobuild workflow file, host-build-modrepo.conf, which will be added to
the upstream autobuild project sometime in the near future.

As far as the commits that I made this afternoon, these include fixes to
all the autobuild.sh scripts to work with new changes to the oVirt build
system as well as the addition of the ovirt-appliance autobuild.sh
script which contains most of the cruft, previously in the ovirt project
autobuild.sh, to get the test / demo appliance up and running. The
ovirt-docs autobuild.sh control file will be written / added in the near
future.

Enjoy,
   Mo
#
# Test-AutoBuild main configuration file.
#
# Short documentation can be found inline, and for further
# information consult the manual page 'man 5 auto-build.conf'
#

# Path to the build engine definition. This determines the
# sequence of stages executed by the build engine, package
# types to publish, and other miscellaneous aspects of the
# build engine's runtime environment. 
# It will typically suffice to leave this on the default
# setting
engine = /etc/auto-build.d/engine/host-build-modrepo.conf
# If you want to use SELinux MAC, then uncomment this
# and run with '/usr/bin/auto-build-secure' instead
#engine = /etc/auto-build.d/engine/host-build-secure.conf

# The location of the directory containing the template files
# for the HTML status pages, and email alert messages
templateDir = /etc/auto-build.d/templates

# The directory under which the build engine will run. This
# should match whatever path was provided when running the 
# 'auto-build-make-root' script. /var/lib/builder is the default
# directory created by the RPM perl-Test-AutoBuild-account
buildRoot = /var/lib/builder

# A name for the build instance. This is used in the HTML
# status pages, email alert subject, and RSS feeds
label = Continous Automatic Builder

# Name and email address of the build administrator
adminEmail = replace_me
adminName = Replace Me

# Name and email address of the development team writing the
# software being built. Typically point it to the main developer
# mailing list
groupEmail = replace_me
groupName = Replace Me

# If the build host has multiple names, then specify which
# one is used for the virtual host publishing the HTML status
# pages. This will be used to construct links in the RSS feed
# and email alert messages. If not set, defaults to the primary
# hostname of the machine
hostname = example.com

# The prefix under which the HTML status pages are located.
# If using /etc/auto-build.d/httpd/aliased.conf, then
#httpPrefix  = /builder
# Else with /etc/auto-build.d/httpd/user.conf, then
#httpPrefix  = /~builder
# Finally with /etc/auto-build.d/httpd/vhost.conf, then
httpPrefix  = /builder

# Where to save a log of the build engine progress (this
# data is also sent to STDERR, but when run from cron this
# typically ends up in /dev/null)
engineLogFile = /var/lib/builder/autobuild.log

# The method used for acquiring a lock file to prevent multiple
# build instances running at the same time against the same
# buildRoot directory. 
#  * fcntl - Best option, but only implemented for Linux, SunOS
#            and FreeBSD
#  * flock - Portable to any UNIX, but does not completely protect
#            if buildRoot is on an NFS volume
#  * file  - Simple file creation/deletion test. If the build engine
#            or host machine crashes, it will be neccessary to manually
#            delete the lock file ($buildRoot/.build.mutex)
lockMethod = fcntl

# Define what high level features you want enabled
features = {
  # If the cache is enabled, then modules will only be built if their
  # sources have changed since the previous build cycle. This provides 
  # much faster cycle times if there are many modules in the build
  # config, only a few of which ever change
  cache = 1

  # Whether to try and checkout the latest sources from version control
  # If checkout is disabled, the build will run with whatever sources
  # were checked out on the previous cycle.
  checkout = 1

  # Whether to run the 'createrepo' tool against the RPMs on the HTTP
  # distribution site
  createrepo_index = 1

  # Whether to run the 'yum-arch' tool against the RPMs on the HTTP
  # distribution site
  yum_index = 0

  # Whether to generate an APT index of RPMs / Debian packages on the
  # HTTP distribution site
  apt_index = 0

  # Whether to send email alerts at the end of cycles
  email_alerts = 0
}

# Describe 'interesting' metadata about the build platform
platform = {
  # Taken from /etc/issue, if not set
  #label = RHEL-4, Update 2

  # Taken from uname(2) 'sysname' if not set
  #operating_system = GNU/Linux

  # Taken from uname(2) 'machine' if not set
  # architecture = i386

  # Arbitrary administrator specific options...
  #options = {
  #  compiler.cc = GCC 4.0.2
  #  linker = GNU ld 2.15.94.0.2.2
  #}
}

# Criteria for sending email alerts
alert = {
  # If the scope is set to
  #  * builder - one email is sent with info on all modules
  #  * module  - one email is sent for each module
  scope = builder

  # Conditions for sending alerts
  #  * always     - send regardless of status
  #  * fail       - send whenever the status is 'failed'
  #  * first-fail - send on the first failure only
  trigger = first-fail

  # If scope is set to 'builder' then
  #
  #  * admin - use the global address defined for $adminEmail
  #  * group - use the global address defined for $groupEmail 
  #
  # If scope is set to 'module' then
  #
  #  * admin - use the module specific address defined for $adminEmail
  #  * group - use the module specific address defined for $groupEmail
  #
  # Or just set an explicit email address (separate multiple address with ,)
  to = group

  # What to set the 'From' address to
  #from = builder example com
  from = replace_me

  # The SMTP server to relay the mail via, defaults to localhost
  #smtpServer = mail.example.com
}

# Set the maximum disk space allowed for use by the cache
maxCacheSize = 100M

# Set the maximum number of days to keep a cache around before
# considering it expired
maxCacheAge = 7d


# Module groups (for web status)
groups = {
  oVirt = {
      label = oVirt Modules
  }
}

# Global environment variables which will be set whenever
# any command is run by the build engine
env = {
  USER = builder
  PKG_CONFIG_PATH = /var/lib/builder/install-root/lib/pkgconfig/
  PYTHONPATH = /var/lib/builder/install-root/lib/python2.5/site-packages
  LD_LIBRARY_PATH = /var/lib/builder/install-root/lib
}

# Define the source control repositories from which modules
# will be checked out. There are 7 supported repository types
# at this time. Depending on the 'type' parameter, various
# 'env' or 'option' parameters may be required
#
#  cvs  - CVS. Specify the CVSROOT environment variable, and 
#         optionally a CVS_RSH variable
#
#           env = {
#             CVSROOT = :pserver:anonymous cvs gna org:/cvs/testautobuild
#           }
#
#  p4   - Perforce. Specify the P4CONFIG environment variable 
#         for a client view. The viewspec will be filled in 
#         automatically
#
#           env = {
#             P4CONFIG = /var/lib/builder/.p4config
#           }
#
#  tla  - GNU Arch. Specify the 'archive-name' and 'archive-uri'
#         options for the remote repository. eg, 
#
#           options = {
#             archive-name = lord emf net--2004
#             archive-uri = http://arch.quackerhead.com/~lord/archives/lord emf net--2004
#           }
#
#  hg   - Mercurial. Specify the 'base-url' option to refer to
#         the base URL under which the repositories are located
#
#           options = {
#             base-url = http://www.selenic.com/
#           }
#
#  git  - Git. Specify the 'base-url' option to refer to
#         the base URL under which the repositories are located
#
#           options = {
#             base-url = git://anongit.freedesktop.org/git/
#           }
#
#  darcs - Darcs. Specify the 'base-url' option to refer to
#          the base URL under which the repositories are located
#
#           options = {
#             base-url = http://www.darcs.net/repos/
#           }
#
#  bzr   - Bazaar. Specify the 'base-url' option to refer to
#          the base URL under which the repositories are located
#
#           options = {
#             base-url = http://www.darcs.net/repos/
#           }
#
#  mtn   - Monotone. Specify the 'server' option to refer to
#          the hostname under which the repository is located
#
#           options = {
#             server = guitone.thomaskeller.biz
#           }
#
#          Or the path to the dir containing local DBs
#
#           options = {
#             path = /path/to/repo/dir/
#           }
#
#  svn  - Subversion. Specify the 'url' option to refer to the base
#         URL for the repository
#
#           options = {
#             url = http://aplaws.redhat.com/svn/aplaws/
#           }
#
#  svk  - SVK. No special options. The modules contain the full URL
#
#  disk - Local disk. Specify the 'directory' otion to refer to the 
#         base directory containing the files
#
#           options = {
#             directory = /var/lib/builder/local-files
#           }
#
repositories = {
  ovirt-release-repo = {
    label = oVirt Release Repo
    type = git
    options = {
      base-url = git://git.et.redhat.com/ovirt-release.git
      #base-url = file:///home/builder/ovirt/release
    }
  }
  ovirt-recipe-repo = {
    label = oVirt Recipe Repo
    type = git
    options = {
      base-url = git://git.et.redhat.com/ovirt-recipe.git
      #base-url = file:///home/builder/ovirt/recipe
    }
  }
  ovirt-server-repo = {
    label = oVirt Server Repo
    type = git
    options = {
      base-url = git://git.et.redhat.com/ovirt-server.git
      #base-url = file:///home/builder/ovirt/server
    }
  }
  ovirt-node-repo = {
    label = oVirt Node Repo
    type = git
    options = {
      base-url = git://git.et.redhat.com/ovirt-node.git
      #base-url = file:///home/builder/ovirt/node
    }
  }
  ovirt-node-image-repo = {
    label = oVirt Node Image Repo
    type = git
    options = {
      base-url = git://git.et.redhat.com/ovirt-node-image.git
      #base-url = file:///home/builder/ovirt/node-image
    }
  }
  ovirt-appliance-repo = {
    label = oVirt Appliance Repo
    type = git
    options = {
      base-url = git://git.et.redhat.com/ovirt-appliance.git
      #base-url = file:///home/builder/ovirt/appliance
    }
  }
}

# Now, the list of modules to checkout from the repositories
# defined above.
modules = {
  ovirt-release = { 
    label = oVirt Release (Development Branch)

    source = { 
      repository = ovirt-release-repo
      path = :next
    }

    groups = (
      oVirt
    )
   
    links = (
      {
        href = http://git.et.redhat.com/?p=ovirt-release.git;a=summary
        label = Browse Source Repository
      }
    )
  }

  ovirt-recipe = { 
    label = oVirt Recipe (Development Branch)

    source = { 
      repository = ovirt-recipe-repo
      path = :next
    }

    groups = (
      oVirt
    )
   
    links = (
      {
        href = http://git.et.redhat.com/?p=ovirt-recipe.git;a=summary
        label = Browse Source Repository
      }
    )
  }

  ovirt-server = { 
    label = oVirt Server (Development Branch)

    source = { 
      repository = ovirt-server-repo
      path = :next
    }

    groups = (
      oVirt
    )
   
    links = (
      {
        href = http://git.et.redhat.com/?p=ovirt-server.git;a=summary
        label = Browse Source Repository
      }
    )

    artifacts = (
       {
          src = src/*
          dst = wui/
          label = oVirt Wui
       }
    )
  }

  ovirt-node = { 
    label = oVirt Node (Development Branch)

    source = { 
      repository = ovirt-node-repo
      path = :next
    }

    groups = (
      oVirt
    )
   
    links = (
      {
        href = http://git.et.redhat.com/?p=ovirt-node.git;a=summary
        label = Browse Source Repository
      }
    )
  }

  ovirt-node-image = { 
    label = oVirt Node Image (Development Branch)

    depends = (
      ovirt-node
    )

    source = { 
      repository = ovirt-node-image-repo
      path = :next
    }

    groups = (
      oVirt
    )

    links = (
      {
        href = http://git.et.redhat.com/?p=ovirt-node-image.git;a=summary
        label = Browse Source Repository
      }
    )

  }

  ovirt-appliance = { 
    label = oVirt Appliance (Development Branch)

    depends = (
      ovirt-release
      ovirt-server
      ovirt-node-image
    )

    source = { 
      repository = ovirt-appliance-repo
      path = :next
    }

    groups = (
      oVirt
    )

    links = (
      {
        href = http://git.et.redhat.com/?p=ovirt-appliance.git;a=summary
        label = Browse Source Repository
      }
    )

  }
}

# Optionally, the packages (RPMs, etc) generated during the
# build can be built into an ISO image for distribution
isos = {
}

# That's all folks!

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]