|
1 | 1 | # CernVM-FS specific Continuous Integration Scrips
|
2 | 2 | This directory contains build scripts for CernVM-FS and its related packages. They are targeted to be used for continuous integration systems like Jenkins (that is currently used at CERN). However, they shall be portable and therefore not contain any CI system specific logic. For testing purposes those scripts can also be run from the command line.
|
3 | 3 |
|
4 |
| -## Build Script Naming Convention |
5 |
| -To simplify the integration with CI systems most of the scripts in this directory follow a naming and parameter convention: `${package_identifier}_${package_type}.sh ${source_location} ${build_location} $@`. |
6 |
| - |
7 |
| -## Scripts |
8 |
| -* `build_cvmfs_???.sh <source location> <build location>` |
9 |
| - * builds the CernVM-FS main packages (cvmfs, cvmfs-server, cvmfs-unittests). Depending on the target platform there might be different packages or individual packages might be omitted. |
10 |
| -* `build_config_???.sh <source location> <build location> [<nightly number>]` |
11 |
| - * builds the cvmfs-config-default and cvmfs-config-none packages |
12 |
| -* `build_auto_setup_rpm.sh <source location> <build location>` |
13 |
| - * builds the cvmfs-auto-setup RPM to facilitate CernVM-FS installation under certain circumstances |
14 |
| -* `build_incremental_multi.sh <source location> [<number of cores to use>]` |
15 |
| - * performs an incremental build without producing any packages. This script is meant to be platform independent and should not install anything into system paths. |
| 4 | +## Build Script Conventions |
| 5 | +To simplify the integration with CI systems most of the scripts in this directory follow a naming and parameter convention: `${package_identifier}/${package_type}.sh ${source_location} ${build_location} $@`. |
| 6 | +I.e. scripts are grouped in sub directories according to the packages they build and are named after the package type they are building. Their first and second argument are always absolute paths to the CVMFS git repository's root and an empty build result directory. After that an arbitrary number of optional parameters can follow. |
| 7 | + |
| 8 | +## Docker Integration |
| 9 | +To simplify the necessary build machine infrastructure we base our builds on [Docker](https://www.docker.com/). Blueprints for all important build machines are provided in the sub directory `docker`. |
| 10 | + |
| 11 | +## Additional Helper Scripts |
| 12 | +* `build_on_docker.sh <source location> <build location> <docker image> <script invocation>` |
| 13 | + * lazily builds the specified docker container (name of the docker/<subdirectory>) and invokes the build script inside it. Note that you must not specify <source location> and <build location> for the script to be run! |
| 14 | +* `build_package.sh <source location> <build location> <package name>` |
| 15 | + * builds the specified package (cvmfs, cvmfs-auto-setup, cvmfs-config, cvmfs-release) for the currently running platform. Note that not all package types are implemented for all package names. |
| 16 | + |
| 17 | +## Example Usage for a Docker-based Build |
| 18 | + |
| 19 | +```bash |
| 20 | +# create a build destination |
| 21 | +mkdir /tmp/cvmfs_build |
| 22 | + |
| 23 | +# invoke the build script (assuming $PWD = git repository root) |
| 24 | +ci/build_on_docker.sh $(pwd) /tmp/cvmfs_build el6 build_package.sh cvmfs |
| 25 | +``` |
0 commit comments