Setting up server hosts

Learn how to set up server hosts.

Each build server host can have a bldserver.control file, which controls its use for parallel builds. This text file, /var/adm/hcl/versionvault/config/bldserver.control, specifies when, how, and by whom the host can be used as a build server in a parallel build. This file can impose restrictions on who can use the host for parallel builds and when the host can be used for parallel builds. If a build server host has no such file, it accepts all parallel build requests.

During a parallel build, clearmake consults the build hosts file of a user to determine which hosts to use for executing build scripts. Before actually dispatching a build script, clearmake queries the albd_server process on the target build host asking if clearmake can send a build script.

If the build server control file of a host is missing or empty, no restrictions are placed on the use of the machine for parallel builds. The albd_server of the machine always sends a yes response to the clearmake process that controls a parallel build.

If the build server control file of a host is not empty, albd_server examines the load-balancing rules in order:

  • If it finds a rule that matches the parameters of the current build, albd_server sends a yes response to the originating clearmake, which then uses a remote shell command to dispatch the build script.
  • If no rule in the control file provides a match, albd_server sends a no response; the controlling clearmake proceeds to query another host.

For example, suppose this rule occurs in the control file:

-host jupiter -user *.dvt -time 21:00,07:30

This rule matches any build started on host jupiter between 9 P.M. and 7:30 A.M. by a user whose principal group is dvt.

To set up a build server host that is used for your daytime builds of the team and its overnight builds:

  1. Create a bldserver.control file. Each line of the bldserver.control file defines a situation in which it accepts parallel build requests.

    % cat > /var/adm/hcl/versionvault/config/bldserver.control

    -time 08:30,19:30 -idle 60

    -time 19:30,05:30

    -user bldmeister

    <CTRL+D>


    (1)

    (2)

    (3)


    Line 1 specifies that during the interval between 8:30 A.M. and 7:30 P.M., this host accepts a parallel request when it is at least 60% idle. Line 2 specifies that during the interval between 7:30 P.M. and 5:30 A.M., this host accepts any parallel request, no matter how busy it is. Line 3 specifies that a parallel build request from a clearmake invoked by user bldmeister is always accepted.

  2. Protect the bldserver.control file to make sure that your access-control settings cannot be deleted or altered:
    % chmod 444 /var/adm/hcl/versionvault/config/bldserver.control

Each of the following specifications is optional. A missing specification implies no restriction. The specifications are logically ANDed to form a test against the parameters of the current build.

-host host-list

Specifies client hosts that are allowed or not allowed to use the current host for builds. host-list is a comma-separated list, and white space is allowed. Each item on the list is a host name, as listed by uname(1). The asterisk (*) is a wildcard that matches all host names. To exclude a host, use the logical NOT operator ( ! ) with any host argument except *.

For example:

-host !sleepy,!crashy,neon
(matches host neon, explicitly excludes hosts sleepy and crashy, and implicitly excludes all other hosts)
-host !grumpy
(matches any host except grumpy)
Note: Be sure to include the name of the current host, if the command to perform a parallel build might ever be entered here.
-user user-list
Specifies users who are allowed or not allowed to use this host for builds. user-list is a comma-separated list, and white space is allowed. Each item on the list specifies a user by name or by number, with a group qualifier or without. For example:
jones
A user whose login name is jones.
jones.dvt
A user jones, but only if logged in with principal group dvt.
jones.*
Equivalent to specifying jones without any group qualifier.
566
A user with user ID 566.

To exclude a user, use the logical NOT operator ( ! ) with any user argument or with the asterisk ( * ). For example:

-user !george
(matches all users except george.)
-user !darren,!jo,susan
(matches user susan, excludes users darren and jo, and implicitly excludes all other users.)
-user !*
(excludes all users)

-idle percentage [ % ]

Allows use of this host only when its idleness is at least percentage, which must be an integer between 0 and 100, inclusive. Idleness is negatively correlated with the load factor of a host, as shown by uptime(1); the approximate correspondence in Load.