2016-12-02 15:57:06 +01:00
|
|
|
\input texinfo
|
|
|
|
@setfilename cuirass.info
|
|
|
|
@documentencoding UTF-8
|
|
|
|
@include version.texi
|
|
|
|
@settitle Cuirass Reference Manual
|
|
|
|
@setchapternewpage odd
|
|
|
|
|
|
|
|
@copying
|
|
|
|
|
2016-12-08 21:34:14 +01:00
|
|
|
This manual is for Cuirass version @value{VERSION}, a build automation
|
|
|
|
server.
|
2016-12-02 15:57:06 +01:00
|
|
|
|
|
|
|
Copyright @copyright{} 2016 Mathieu Lirzin
|
|
|
|
|
|
|
|
@quotation
|
|
|
|
Permission is granted to copy, distribute and/or modify this document
|
|
|
|
under the terms of the GNU Free Documentation License, Version 1.3 or
|
|
|
|
any later version published by the Free Software Foundation; with no
|
|
|
|
Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
|
|
|
|
copy of the license is included in the section entitled ``GNU Free
|
|
|
|
Documentation License''.
|
|
|
|
@end quotation
|
|
|
|
@end copying
|
|
|
|
|
2016-12-08 21:34:14 +01:00
|
|
|
@dircategory Software development
|
2016-12-02 15:57:06 +01:00
|
|
|
@direntry
|
2016-12-08 21:34:14 +01:00
|
|
|
* Cuirass: (cuirass). Build automation server.
|
2016-12-02 15:57:06 +01:00
|
|
|
@end direntry
|
|
|
|
|
|
|
|
@titlepage
|
|
|
|
@title Cuirass Reference Manual
|
2016-12-08 21:34:14 +01:00
|
|
|
@subtitle Build automation server
|
|
|
|
@subtitle for version @value{VERSION}, @value{UPDATED}
|
2016-12-02 15:57:06 +01:00
|
|
|
@author by Mathieu Lirzin
|
|
|
|
|
|
|
|
@page
|
|
|
|
@vskip 0pt plus 1filll
|
|
|
|
@insertcopying
|
|
|
|
@end titlepage
|
|
|
|
|
|
|
|
@contents
|
|
|
|
|
|
|
|
@ifnottex
|
|
|
|
@node Top
|
|
|
|
@top Cuirass
|
|
|
|
@insertcopying
|
|
|
|
@end ifnottex
|
|
|
|
|
|
|
|
@c *********************************************************************
|
|
|
|
@menu
|
|
|
|
* Introduction:: What is Cuirass about?
|
|
|
|
* Continuous Integration:: A practical solution
|
|
|
|
* Invocation:: How to run Cuirass.
|
|
|
|
* Contributing:: Your help needed!
|
|
|
|
* GNU Free Documentation License:: The license of this manual.
|
|
|
|
* Concept Index:: Concepts.
|
|
|
|
|
|
|
|
@end menu
|
|
|
|
|
|
|
|
@c *********************************************************************
|
|
|
|
@node Introduction
|
2016-12-09 00:02:22 +01:00
|
|
|
@unnumbered Introduction
|
|
|
|
@cindex introduction
|
|
|
|
|
|
|
|
@dfn{Cuirass} is a general-purpose build automation server that checks
|
|
|
|
out source files from @acronym{VCS, Version Control System}
|
|
|
|
repositories, executes a @dfn{build job}, and notifies the results of
|
|
|
|
that job. A build job consists of a combinaison of tasks such as
|
|
|
|
compiling source code to binary code and running automated tests.
|
|
|
|
Notification is achieved by using a database that stores the build
|
|
|
|
results associated with an HTTP server that provides a convenient way to
|
|
|
|
access them.
|
|
|
|
|
|
|
|
Cuirass is inspired by the @url{https://nixos.org/hydra/, Hydra}
|
|
|
|
continuous build system. Unlike Hydra, it is built on top of the
|
|
|
|
@url{https://www.gnu.org/software/guix/, GNU Guix} functional package
|
|
|
|
manager.
|
|
|
|
|
|
|
|
The goal of Cuirass is to provide both on-demand, scheduled, and
|
|
|
|
triggered builds. A Build server is an important tool in the software
|
|
|
|
development process, because it allows modifying the source code while
|
|
|
|
ensuring the portability and robustness of those changes. It is the
|
|
|
|
basis of the @dfn{Continuous integration} practice.
|
2016-12-02 15:57:06 +01:00
|
|
|
|
|
|
|
@c *********************************************************************
|
|
|
|
@node Continuous Integration
|
|
|
|
@chapter Continuous Integration
|
|
|
|
|
|
|
|
@c *********************************************************************
|
|
|
|
@node Invocation
|
|
|
|
@chapter Invoking cuirass
|
|
|
|
@cindex invoking cuirass
|
|
|
|
@cindex cuirass invocation
|
|
|
|
@cindex options for invoking cuirass
|
|
|
|
|
|
|
|
The usual way to invoke @code{cuirass} is as follows:
|
|
|
|
|
|
|
|
@example
|
|
|
|
cuirass --specifications @var{specs}
|
|
|
|
@end example
|
|
|
|
|
|
|
|
Additionally the following options can be used.
|
|
|
|
|
|
|
|
@table @code
|
|
|
|
@item --one-shot
|
|
|
|
Instead of executing @code{cuirass} as a daemon looping over the jobs.
|
|
|
|
Only evaluate and build the specifications once.
|
|
|
|
|
|
|
|
@item --cache-directory=@var{directory}
|
|
|
|
@var{directory} is the place where the VCS repositories used by the jobs
|
|
|
|
are stored.
|
|
|
|
|
|
|
|
@item --specifications=@var{specifications-file}
|
|
|
|
@itemx -S @var{specifications-file}
|
|
|
|
Add the specifications defined in @var{specifications-file} in the job
|
|
|
|
database before launching the evaluation and build processes.
|
|
|
|
|
|
|
|
@item --database=@var{database}
|
|
|
|
@itemx -D @var{database}
|
|
|
|
Use @var{database} as the database containing the jobs and the past
|
|
|
|
build results. Since @code{cuirass} uses SQLite as a database engine,
|
|
|
|
@var{database} must be a file name. If the file doesn't exist, it will
|
|
|
|
be created.
|
|
|
|
|
|
|
|
@item --interval=@var{n}
|
|
|
|
@itemx -I @var{n}
|
|
|
|
Wait @var{n} seconds between each poll.
|
|
|
|
|
|
|
|
@item --use-substitutes
|
|
|
|
This can be useful when you are not interested in building the
|
|
|
|
dependencies of a particular job.
|
|
|
|
|
|
|
|
@item --version
|
|
|
|
@itemx -V
|
|
|
|
Display the actual version of @code{cuirass}.
|
|
|
|
|
|
|
|
@item --help
|
|
|
|
@itemx -h
|
|
|
|
Display an help message that summarize all the options provided.
|
|
|
|
@end table
|
|
|
|
|
|
|
|
@c *********************************************************************
|
|
|
|
@node Contributing
|
|
|
|
@chapter Contributing
|
|
|
|
|
|
|
|
Everyone is welcome to contribute to Cuirass. You can send patches and
|
|
|
|
share your ideas at @email{guix-devel@@gnu.org} or contact directly the
|
|
|
|
maintainer at @email{mthl@@gnu.org}.
|
|
|
|
|
|
|
|
@c *********************************************************************
|
|
|
|
@node GNU Free Documentation License
|
|
|
|
@appendix GNU Free Documentation License
|
|
|
|
@cindex license, GNU Free Documentation License
|
|
|
|
@include fdl-1.3.texi
|
|
|
|
|
|
|
|
@c *********************************************************************
|
|
|
|
@node Concept Index
|
|
|
|
@unnumbered Concept Index
|
|
|
|
@printindex cp
|
|
|
|
|
|
|
|
@bye
|