The Nix Build Farm: A Declarative Approach to Continuous Integration
|
|
|
- Shawn Short
- 10 years ago
- Views:
Transcription
1 The Nix Build Farm: A Declarative Approach to Continuous Integration Eelco Dolstra, Eelco Visser Delft University of Technology Abstract There are many tools to support continuous integration (the process of automatically and continuously building a project from a version management repository). However, they do not have good support for variability in the build environment: dependencies such as compilers, libraries or testing tools must typically be installed manually on all machines on which automated builds are performed. The Nix package manager solves this problem: it has a purely functional language for describing package build actions and their dependencies, allowing the build environment for projects to be produced automatically and deterministically. We have used Nix to build a continuous integration tool, the Nix build farm, that is in use to continuously build and release a large set of projects. 1. Introduction Continuous integration (Fowler and Foemmel 2006), also known as daily builds, is a simple technique to improve the quality of the software development process. An automated system continuously or periodically checks out the source code of a project, builds it, runs tests, and produces reports for the developers. Thus, various errors that might accidentally be committed into the code base are automatically caught. Such a system allows more in-depth testing than what developers could feasibly do manually: Portability testing: The software may need to be built and tested on many different platforms. It is infeasible for each developer to do this before every commit. Likewise, many projects have very large test sets (e.g., regression tests in a compiler, or stress tests in a DBMS) that can take hours or days to run to completion. Many kinds of static and dynamic analyses can be performed as part of the tests, such as code coverage runs and static analyses. addresses: [email protected] (Eelco Dolstra), [email protected] (Eelco Visser). 1
2 It may also be necessary to build many different variants of the software. For instance, it may be necessary to verify that the component builds with various versions of a compiler. Developers typically use incremental building to test their changes (since a full build may take too long), but this is unreliable with many build management tools (such as Make), i.e., the result of the incremental build might differ from a full build. It ensures that the software can be built from the sources under revision control. Users of version management systems such as CVS and Subversion often forget to place source files under revision control. The machines on which the continuous integration system runs ideally provides a clean, well-defined build environment. If this environment is administered through proper SCM techniques, then builds produced by the system can be reproduced. In contrast, developer work environments are typically not under any kind of SCM control. In large projects, developers often work on a particular component of the project, and do not build and test the composition of those components (again since this is likely to take too long). To prevent the phenomenon of big bang integration, where components are only tested together near the end of the development process, it is important to test components together as soon as possible (hence continuous integration). In its simplest form, a continuous integration tool sits in a loop building and releasing software components from a version management system. For each component, it performs the following tasks: (i) It obtains the latest version of the component s source code from the version management system. (ii) It runs the component s build process (which presumably includes the execution of the component s test set). (iii) It presents the results of the build (such as error logs) to the developers, e.g., by producing a web page. Examples of continuous integration tools include CruiseControl (ThoughtWorks 2005), Tinderbox (Mozilla Foundation 2005), Sisyphus (van der Storm 2005), Anthill (Urbancode 2005) and BuildBot. However, these tools have various limitations. First, they do not manage the build environment. The build environment consists of the dependencies necessary to perform a build action, e.g., compilers, libraries, etc. Setting up the environment is typically done manually, and without proper SCM control (so it may be hard to reproduce a build at a later time). Manual management of the environment scales poorly in the number of configurations that must be supported. For instance, suppose that we want to build a component that requires a certain compiler X. We then have to go to each machine and install X. If we later need a newer version of X, the process must be repeated all over again. An ever worse problem occurs if there are conflicting, mutually exclusive versions of the dependencies. Thus, simply installing the latest version is not an option. Of course, we can install these components in different directories and manually pass the appropriate paths to the build processes of the various components. But this is a rather tiresome and error-prone process. The second problem with existing continuous integration tools is that they do not easily support variability in software systems. A system may have a great deal of buildtime variability: optional functionality, whether to build a debug or production version, different versions of dependencies, and so on. (For instance, the Linux kernel now has 2
3 over 2,600 build-time configuration switches.) It is therefore important that a continuous integration tool can easily select and test different instances from the configuration space of the system to reveal problem, such as erroneous interactions between features. In a continuous integration setting, it is also useful to test different combinations of versions of subsystems, e.g., the head revision of a component against stable releases of its dependencies, and vice versa, as this can reveal various integration problems. This paper briefly describes the Nix build farm, a continuous integration tool that solves these problems. ( Build farm refers to the large set of different machines necessary for portability testing (Hemel 2003).) It is built on top of the Nix package manager (Dolstra et al. 2004b,a; Dolstra 2006; Nix project 2008), which has a purely functional language for describing package build actions and their dependencies. This allows the build environment for projects to be produced automatically and deterministically, and variability in components to be expressed naturally using functions. 2. The Nix build farm The Nix package manager ( has precisely the properties needed to address the problems of managing the build environment and supporting variability. As a source-based deployment system, Nix has a lazy purely functional language (the Nix expression language) to describe how to build packages and how to compose them. This allows the build environment to be expressed in a self-contained and reproducible way, and it enables variability to be expressed by turning packages into functions of the desired variabilities. Laziness is important because it prevents function arguments, typically representing large package build actions, from being evaluated when they are not needed. The functional language also abstracts over multi-platform builds Nix automatically dispatches the building of subexpressions to machines of the appropriate type. Nix also stores packages in such a way that variants of packages do not interfere with each other (e.g., overwrite each other) and that prevents undeclared dependencies. The build result of each package instance is stored in the file system under a cryptographic hash of all inputs involved in building the package, such as its sources, build scripts, and dependencies such as compilers. For instance, a build of a particular package instance (e.g. Firefox) might be stored under /nix/store/1wxsnm40dvlfcb4cqff0kjb1dqllrr3v-firefox / where 1wxsnm40dvlf... is a 160-bit cryptographic hash. The directory /nix/store is called the Nix store. If any input differs between two package build actions, then the resulting packages will be stored in different locations in the file system and will not overwrite each other. Thus, conflicting dependencies such as different versions of a compiler no longer cause a problem; they are stored in isolation from each other. At the same time, if any two packages between different build farm jobs have the same inputs, they will be built only once. This prevents unnecessary rebuilds. An added advantage of the hash approach is that it prevents undeclared build-time dependencies in build actions. If a build action does not explicitly declare an input, then it won t be able to find the input (e.g., the package won t appear in the C compiler s header search path). This is in contrast to build tools such as Make (Feldman 1979) or Ant (Apache Software Foundation 2005), which have no way to verify the completeness of 3
4 {nixpkgs, patchelfcheckout}:... rec { } patchelftarball = makesourcetarball { src = patchelfcheckout; inherit stdenv; buildinputs = [autoconf automake patchelfnixbuild = docoverageanalysis: pkgs: nixbuild { src = patchelftarball; inherit (pkgs) stdenv; lcovfilter = ["/nix/store/*" "tests/*" inherit docoverageanalysis; patchelfrpmbuild = diskimage: rpmbuild { inherit diskimage; src = patchelftarball; patchelfdebianbuild = diskimage: debianbuild {... patchelfrelease = makereleasepage { fullname = "PatchELF"; contact = "[email protected]"; sourcetarball = patchelftarball; nixbuilds = [ (patchelfnixbuild false pkgsi686linux) (patchelfnixbuild false pkgsx86_64linux) coverageanalysis = patchelfnixbuild true pkgsi686linux; rpmbuilds = [ (patchelfrpmbuild vmtools.diskimages.redhat9i386) (patchelfrpmbuild vmtools.diskimages.fedora2i386) (patchelfrpmbuild vmtools.diskimages.fedora3i386) (patchelfrpmbuild vmtools.diskimages.fedora5i386) (patchelfrpmbuild vmtools.diskimages.fedora7i386) (patchelfrpmbuild vmtools.diskimages.fedora8i386) (patchelfrpmbuild vmtools.diskimages.suse90i386) (patchelfrpmbuild vmtools.diskimages.opensuse103i386) nodistbuilds = [ (patchelfdebianbuild vmtools.diskimages.ubuntu710i386) (patchelfdebianbuild vmtools.diskimages.debian40r3i386) Fig. 1. patchelf.nix: Nix expression for the PatchELF job dependency specifications. (This is why Make users often have to do a make clean before a build to ensure that everything that should be rebuilt really is.) The hash approach also allows runtime dependencies to be found generically by scanning for hashes in binaries, a technique reminiscent of how conservative garbage collectors find pointers (Dolstra et al. 2004b). Figure 1 shows the Nix expression for the build farm job for a simple Unix package, PatchELF, a tool to modify ELF executables. Testing and releasing this package involves a number of actions: The sources from the version management repository must be turned into a proper source distribution by generating a variety of files, such as a configure script. This is 4
5 done using tools such as Autoconf and Automake. This source distribution must then be compiled on a variety of platforms, in this case Linux distributions such as various versions of Fedora, opensuse, Ubuntu and Debian. A code coverage analysis is also performed by building an instrumented binary, running the test suite and generating a coverage report. Finally, a web page is generated that contains build logs and the coverage report as well as end-user downloadable packages. All these actions have specific dependencies that must be present, in the right versions, on the machines on which they are performed. For instance, building the source distribution requires specific versions of Autoconf and Automake, while the coverage analysis requires a tool called lcov. Different build farm jobs can have conflicting version dependencies, but this is no problem due to Nix s hashing scheme; different versions are installed in different locations of the file system automatically. The expression in Figure 1 is a function that takes two arguments nixpkgs and patchelfcheckout and yields an attribute set (a set of name/value pairs) containing the build actions of the job. Functions are defined by the syntax args: body. Attribute sets are defined as {name 1 = value 1 ;... name n = value n ;}. The keyword rec before an attribute set makes the set recursive, i.e., values can refer to other attributes. The build farm calls the job with a value for the function argument patchelfcheckout containing a copy in the Nix store of the sources of the package obtained from its version management repository. The argument nixpkgs contains the source of the Nix Packages collection, a set of Nix expressions for hundreds of common Unix packages (such as autoconf or gcc). The attribute patchelftarball is defined as the result of a call to the function make- SourceTarball, which applies Autoconf and Automake to build a source distribution (in.tar.bz2 format) in the Nix store. The attribute patchelfnixbuild is a function that builds the source distribution patchelftarball on a platform defined implicitly by the function argument pkgs, which contains the dependencies of the build, such as the C compiler to be used. For instance, if called with the argument pkgsx86 64Linux, the build is performed on a 64-bit x86 Linux machine. The argument docoverageanalysis determines whether a normal build is done, or a build that uses lcov to generate a code coverage report. The function nixbuild performs a typical Nix build, with the dependencies stored in the Nix store. For instance, the C compiler gcc would reside in a path such as /nix/store/13b5y3n2jfzx...-gcc-4.2.3/bin/gcc rather than /usr/bin/gcc. For portability testing, this is a problem: while it tests compatibility with platform characteristics such as endianness, it doesn t build in the native way for that platform, i.e., using tools in the conventional locations for that platform. Thus, there are also functions such as rpm- Build and debianbuild that perform a build action in a virtual machine instantiated and started on the fly (for Linux distributions based on the Red Hat Package Manager (Foster- Johnson 2003) and on the Debian Packager, respectively). In the virtual machine, the package is compiled and installed in the native way, e.g. in /usr/bin/patchelf, and a binary package for that particular platform is generated. Finally, the attribute patchelfrelease uses the function makereleasepage to generate a web page containing the results of the build jobs. A release page produced by patchelfrelease is shown in Figure 2. The importance of a functional language for describing build jobs is that it makes it easy to build a package in various variants. For instance, we may want to test the 5
6 Fig. 2. Release page for PatchELF package with several versions of the GNU C compiler. The package stdenv, which provides a standard Unix build environment and which patchelfnixbuild uses, contains a default version of GCC, but this can be overriden. For instance, we can add a function argument gcc to patchelfnixbuild, allowing specific versions of GCC to be passed in: patchelfnixbuild = docoverageanalysis: pkgs: gcc: nixbuild { src = patchelftarball; stdenv = overridegcc pkgs.stdenv gcc;... We can then call this function with the desired versions of GCC: nodistbuilds = [ (patchelfnixbuild false pkgsi686linux pkgsi686linux.gcc295) (patchelfnixbuild false pkgsi686linux pkgsi686linux.gcc34) (patchelfnixbuild false pkgsi686linux pkgsi686linux.gcc42) (patchelfnixbuild false pkgsi686linux pkgsi686linux.gcc43) Of course, if we also want to do these builds on x86 64, we can turn this expression into a function over pkgs, and call it once for each platform. Another example of the usefulness of the purely functional approach is the construction of virtual machine disk 6
7 images. For instance, the disk image in the value vmtools.diskimages.fedora8i386 is built by a function that creates a disk image from a subset of RPM packages that constitute an RPM-based Linux distribution. This image doesn t contain all RPMs; for instance, it doesn t contain the readline package. If we need this for our build, we can easily synthesise a new VM disk image that does contain it: fedora8i386extra = vm.diskimagefuns.fedora8i386 { packages = fedorapackages ++ ["readline"... rpmbuilds = [ (patchelfrpmbuild fedora8i386extra)... Thus, virtual machine images are not created manually, as is typical, but are instead automatically instantiated from a declarative specification. The declarative specification of the PatchELF build farm job in Figure 1 abstracts over physical machines and platform types. That is, it doesn t mention on what particular machines specific build actions must be performed. Rather, Nix takes care of automatically distributing build actions to machines of the appropriate type (such as x86 64-linux), performing actions in parallel on multiple machines if possible. All function inputs (dependencies) are automatically copied to the machine on which the function is executed. For instance, the various calls to rpmbuild will be distributed over multiple machines, and the dependencies (such as the virtual machine software, the disk image, and the source distribution) will be copied automatically. No system administrator action is necessary to install dependencies on the appropriate machines. 3. Experience The Nix build farm has been in use for a number of years by a variety of projects. It is used to build NixOS, a Linux distribution with a purely functional configuration model built on top of the Nix package manager, and the Nix Packages collection (Nixpkgs), which alone consists of over 600 package builds (see Another major use is to build and release the Stratego/XT program transformation toolset (Visser 2004) and its ecosystem of related projects (see org/releases). Nixpkgs contains Nix expressions for many common dependencies such as compilers and runtime environments for many languages, making it easier to add jobs to the build farm. Nix itself is written in C++, using the ATerm term manipulation library (van den Brand et al. 2000) to concisely implement the language evaluation machinery using term rewriting (Dolstra 2008). One might ask whether the Nix expression language could not be implemented as an embedded DSL in a language such as Haskell. While this would have definite advantages, such as the availability of the libraries of such a host language, it has the significant downside of creating a dependency on a large piece of software such as GHC. A deployment tool should itself be easy to deploy, which is not the case if it has large external dependencies. Second, embedded DSLs make it harder to provide syntax convenient to the domain at hand. 7
8 4. Future work The main focus of future research is automatic testing in large configuration spaces. When testing a component with a large amount of variabilities, the build farm should automatically select interesting configurations in order to maximize the amount of useful knowledge that it produces for the developers. For instance, if a certain configuration succeeds and another does not, the build farm should explore the configuration space, building different configurations, to discover which parameter causes the failure. Similarly, if a certain configuration fails while it did not previously, the build farm should try to isolate the specific commit that introduced the fault. Another interesting direction is to discover possibly troublesome configurations using source code analysis. For instance, nested #ifdefs in C programs conditional on options in the configuration space may indicate a potential feature interaction that must be tested specifically. 5. Conclusion A build farm is an indispensable tool in any software development project, but existing implementations have serious limitations: they are hard to maintain because the build environment is not managed, have poor reproducibility, and have no explicit support for building variants of systems. The Nix-based build farm, by virtue of its purely functional component description language, solves these issues. With respect to tool development, the Nix build farm supports the development of other tools in several ways. First, continuous integration improves the quality of tools built in the build farm, just as with any other package. Second, the continuous release of source and binary packages by the build farm improves dissemination of the tool, and thus the underlying research results. This should help to prevent the common problem of interesting tools fading into obscurity because they are not available in an easily installable form. Finally, the build farm serves as a test bed for analysis tools (such as dynamic tools like coverage analysers or static tools like FindBugs (Hovemeyer and Pugh 2004)), which can be plugged into the build farm and applied to the large corpus of software built by it. Acknowledgements. The authors would like to thank the anonymous reviewers for their comments. This research was supported by the NIRICT LaQuSo Build Farm project. References Apache Software Foundation, Apache Ant. accessed 15 August Dolstra, E., Jan The purely functional software deployment model. Ph.D. thesis, Faculty of Science, Utrecht University, The Netherlands, eelco/pubs/phd-thesis.pdf. Dolstra, E., Apr Maximal laziness an efficient interpretation technique for purely functional DSLs. In: Eighth Workshop on Language Descriptions, Tools and 8
9 Applications (LDTA 2008). Electronic Notes in Theoretical Computer Science. Elsevier Science Publishers, to appear. Dolstra, E., de Jonge, M., Visser, E., Nov. 2004a. Nix: A safe and policy-free system for software deployment. In: Damon, L. (Ed.), 18th Large Installation System Administration Conference (LISA 04). USENIX, Atlanta, Georgia, USA, pp Dolstra, E., Visser, E., de Jonge, M., May 2004b. Imposing a memory management discipline on software deployment. In: Proceedings of the 26th International Conference on Software Engineering (ICSE 2004). IEEE Computer Society, pp Feldman, S. I., Make a program for maintaining computer programs. Software Practice and Experience 9 (4), Foster-Johnson, E., Red Hat RPM Guide. John Wiley & Sons, also at http: //fedora.redhat.com/docs/drafts/rpm-guide-en/. Fowler, M., Foemmel, M., Continuous integration. com/articles/continuousintegration.html. Hemel, A., Aug Using buildfarms to improve code. In: UKUUG Linux 2003 Conference. Hovemeyer, D., Pugh, W., Finding bugs is easy. SIGPLAN Notices 39 (12), Mozilla Foundation, Tinderbox. Nix project, Nix homepage. ThoughtWorks, Cruise Control. Urbancode, Anthill. jsp, accessed 21 August van den Brand, M. G. J., de Jong, H. A., Klint, P., Olivier, P. A., Efficient annotated terms. Software Practice and Experience 30, van der Storm, T., Sep Continuous release and upgrade of component-based software. In: 12th International Workshop on Software Configuration Management (SCM- 12). Visser, E., Jun Program transformation with Stratego/XT: Strategies, tools, and systems in StrategoXT-0.9. In: Lengauer, C., et al. (Eds.), Domain-Specific Program Generation. Vol of Lecture Notes in Computer Science. Spinger-Verlag, pp
Hydra: A Declarative Approach to Continuous Integration 1
Hydra: A Declarative Approach to Continuous Integration 1 Eelco Dolstra, Eelco Visser Department of Software Technology, Faculty of Electrical Engineering, Mathematics and Computer Science (EWI), Delft
The Nix project. Sander van der Burg. June 24, 2013. Delft University of Technology, EEMCS, Department of Software Technology
Delft University of Technology, EEMCS, Department of Software Technology June 24, 2013 Software deployment Software deployment Software deployment All of the activities that make a software system available
Using NixOS for declarative deployment and testing
Using NixOS for declarative deployment and testing Sander van der Burg Eelco Dolstra Delft University of Technology, EEMCS, Department of Software Technology February 5, 2010 Linux distributions There
A Reference Architecture for Distributed Software Deployment
A Reference Architecture for Distributed Software Deployment Delft University of Technology, EEMCS, Department of Software Technology August 2, 2013 A Reference Architecture for Distributed Software Deployment
Service Configuration Management
Service Configuration Management Eelco Dolstra, Martin Bravenboer, and Eelco Visser Department of Information and Computing Sciences, Universiteit Utrecht, P.O. Box 80089 3508 TB Utrecht, The Netherlands
Service Configuration Management
Service Configuration Management Eelco Dolstra Martin Bravenboer Eelco Visser Technical Report UU-CS-2005-039 Institute of Information and Computing Sciences Universiteit Utrecht August 2005 Preprint of:
How To Write A Distributed Deployment System On Nix (Programming)
Delft University of Technology, EEMCS, Department of Software Technology Philips Healthcare, Philips Informatics Infrastructure (PII), Best February 2, 2012 Service Oriented Computing The Service Oriented
Automating System Tests Using Declarative Virtual Machines
Automating System Tests Using Declarative Virtual Machines Sander van der Burg Delft University of Technology Delft, The Netherlands [email protected] Eelco Dolstra Delft University of Technology
What Is Software Configuration Management?
C H A P T E R 1 What Is Software Configuration Management? The title of this chapter asks such a simple question, the answer to which, one would think, ought to be known by anyone with any kind of record
Build management & Continuous integration. with Maven & Hudson
Build management & Continuous integration with Maven & Hudson About me Tim te Beek [email protected] Computer science student Bioinformatics Research Support Overview Build automation with Maven Repository
Automating System Tests Using Declarative Virtual Machines
Automating System Tests Using Declarative Virtual Machines Sander van der Burg Delft University of Technology Delft, The Netherlands [email protected] Eelco Dolstra Delft University of Technology
Zend Server 4.0 Beta 2 Release Announcement What s new in Zend Server 4.0 Beta 2 Updates and Improvements Resolved Issues Installation Issues
Zend Server 4.0 Beta 2 Release Announcement Thank you for your participation in the Zend Server 4.0 beta program. Your involvement will help us ensure we best address your needs and deliver even higher
The FOSSology Project Overview and Discussion. » The Open Compliance Program. ... By Bob Gobeille, Hewlett-Packard
» The Open Compliance Program The FOSSology Project Overview and Discussion By Bob Gobeille, Hewlett-Packard A White Paper By The Linux Foundation FOSSology (http://fossologyorg) is an open source compliance
Jonathan Worthington Scarborough Linux User Group
Jonathan Worthington Scarborough Linux User Group Introduction What does a Virtual Machine do? Hides away the details of the hardware platform and operating system. Defines a common set of instructions.
Software Construction
Software Construction Martin Kropp University of Applied Sciences Northwestern Switzerland Institute for Mobile and Distributed Systems Learning Target You can explain the importance of continuous integration
A Reference Architecture for Distributed Software Deployment
A Reference Architecture for Distributed Software Deployment Delft University of Technology, EEMCS, Department of Software Technology June 3, 2013 A Reference Architecture for Distributed Software Deployment
Software Configuration Management
Software Configuration Management 1 Software Configuration Management Four aspects Version control Automated build Change control Release Supported by tools Requires expertise and oversight More important
The programming language C. sws1 1
The programming language C sws1 1 The programming language C invented by Dennis Ritchie in early 1970s who used it to write the first Hello World program C was used to write UNIX Standardised as K&C (Kernighan
Linux Distributions. What they are, how they work, which one to choose. [email protected]> +55-11-2132-2327. Avi Alkalay <[email protected].
Linux Distributions What they are, how they work, which one to choose Avi Alkalay +55-11-2132-2327 Linux, Open Standards Consultant IBM Corporation Before You Start...
Developing Software in a Private workspace - 4.01 PM PMS
SBCH06.fm Page 67 Friday, October 4, 2002 4:01 PM 6 Private Workspace A government clerk s room, showing a desk with books, telephone and directory, and a desk lamp on it. Washington, D.C., 1939. Photo
Continuous Release and Upgrade of Component-Based Software
Continuous Release and Upgrade of Component-Based Software Tijs van der Storm Centrum voor Wiskunde en Informatica (CWI) P.O. Box 94079, 1090 GB Amsterdam The Netherlands, [email protected] Abstract. We show
Continuous Integration with Jenkins. Coaching of Programming Teams (EDA270) J. Hembrink and P-G. Stenberg [dt08jh8 dt08ps5]@student.lth.
1 Continuous Integration with Jenkins Coaching of Programming Teams (EDA270) J. Hembrink and P-G. Stenberg [dt08jh8 dt08ps5]@student.lth.se Faculty of Engineering, Lund Univeristy (LTH) March 5, 2013 Abstract
DRUPAL CONTINUOUS INTEGRATION. Part I - Introduction
DRUPAL CONTINUOUS INTEGRATION Part I - Introduction Continuous Integration is a software development practice where members of a team integrate work frequently, usually each person integrates at least
Virtualization Techniques for Cross Platform Automated Software Builds, Tests and Deployment
Virtualization Techniques for Cross Platform Automated Software Builds, Tests and Deployment Thomas Müller and Alois Knoll Robotics and Embedded Systems Technische Universität München Blotzmannstr. 3,
Red Hat Developer Toolset 1.1
Red Hat Developer Toolset 1.x 1.1 Release Notes 1 Red Hat Developer Toolset 1.1 1.1 Release Notes Release Notes for Red Hat Developer Toolset 1.1 Edition 1 Matt Newsome Red Hat, Inc [email protected]
SECURE YOUR NETWORK WITH FIREWALL BUILDER
SECURE YOUR NETWORK WITH FIREWALL BUILDER firewall isolates a trusted, secure internal network from another network like the Internet, which is not regarded as either trusted or secure. Firewall Builder
CS197U: A Hands on Introduction to Unix
CS197U: A Hands on Introduction to Unix Lecture 4: My First Linux System J.D. DeVaughn-Brown University of Massachusetts Amherst Department of Computer Science [email protected] 1 Reminders After
Run-time Variability Issues in Software Product Lines
Run-time Variability Issues in Software Product Lines Alexandre Bragança 1 and Ricardo J. Machado 2 1 Dep. I&D, I2S Informática Sistemas e Serviços SA, Porto, Portugal, [email protected] 2 Dep.
using version control in system administration
LUKE KANIES using version control in system administration Luke Kanies runs Reductive Labs (http://reductivelabs.com), a startup producing OSS software for centralized, automated server administration.
RED HAT DEVELOPER TOOLSET Build, Run, & Analyze Applications On Multiple Versions of Red Hat Enterprise Linux
RED HAT DEVELOPER TOOLSET Build, Run, & Analyze Applications On Multiple Versions of Red Hat Enterprise Linux Dr. Matt Newsome Senior Engineering Manager, Tools RED HAT ENTERPRISE LINUX RED HAT DEVELOPER
Configuration Management
83 Chapter 6 Configuration Management Published as: Configuration Management in Component Based Product Populations, Rob van Ommering, 10th International Workshop on Software Configuration Management,
Software infrastructure for Java development projects
Tools that can optimize your development process Software infrastructure for Java development projects Presentation plan Software Development Lifecycle Tools What tools exist? Where can tools help? Practical
PERFORMANCE ANALYSIS OF KERNEL-BASED VIRTUAL MACHINE
PERFORMANCE ANALYSIS OF KERNEL-BASED VIRTUAL MACHINE Sudha M 1, Harish G M 2, Nandan A 3, Usha J 4 1 Department of MCA, R V College of Engineering, Bangalore : 560059, India [email protected] 2 Department
Kevin Lee Technical Consultant [email protected]. As part of a normal software build and release process
Agile SCM: Realising Continuous Kevin Lee Technical Consultant [email protected] Agenda What is Continuous? Continuous in Context As part of a normal software build and release process Realising Continuous
Red Hat Enterprise Linux Rebuild mini-howto
Red Hat Enterprise Linux Rebuild mini-howto Michael Redinger [email protected] This document describes how to build a Linux server based on the SRPMS from Red Hat Enterprise Linux 2.1. Table
RISC-V Software Ecosystem. Andrew Waterman UC Berkeley [email protected]!
RISC-V Software Ecosystem Andrew Waterman UC Berkeley [email protected]! 2 Tethered vs. Standalone Systems Tethered systems are those that cannot stand alone - They depend on a host system to
PrimeRail Installation Notes Version A-2008.06 June 9, 2008 1
PrimeRail Installation Notes Version A-2008.06 June 9, 2008 1 These installation notes present information about installing PrimeRail version A-2008.06 in the following sections: Media Availability and
Testing Automation for Distributed Applications By Isabel Drost-Fromm, Software Engineer, Elastic
Testing Automation for Distributed Applications By Isabel Drost-Fromm, Software Engineer, Elastic The challenge When building distributed, large-scale applications, quality assurance (QA) gets increasingly
Automated Deployment of a Heterogeneous Service-Oriented System
Automated Deployment of a Heterogeneous Service-Oriented System Sander van der Burg Department of Software Technology Delft University of Technology Delft, The Netherlands [email protected] Eelco
CONTINUOUS INTEGRATION
CONTINUOUS INTEGRATION REALISING ROI IN SOFTWARE DEVELOPMENT PROJECTS In the following pages we will discuss the policies and systems that together make up the process called Continuous Integration. This
CatDV Pro Workgroup Serve r
Architectural Overview CatDV Pro Workgroup Server Square Box Systems Ltd May 2003 The CatDV Pro client application is a standalone desktop application, providing video logging and media cataloging capability
Software Deployment and Configuration
www.dcs.ed.ac.uk/~paul/publications/deployment.pdf Software Deployment and Configuration Paul Anderson Division of Informatics University of Edinburgh
Introduction to Software Development
C HAPTER 1 Introduction to Software Development S oftware development is a complicated process. It requires careful planning and execution to meet the goals. Sometimes a developer must react quickly and
How To Migrate To Redhat Enterprise Linux 4
Migrating to Red Hat Enterprise Linux 4: Upgrading to the latest Red Hat release By Donald Fischer Abstract Red Hat Enterprise Linux subscribers may choose to deploy any of the supported versions of the
Automated build service to facilitate Continuous Delivery
MASTER S THESIS LUND UNIVERSITY 2015 Automated build service to facilitate Continuous Delivery Ture Karlsson Department of Computer Science Faculty of Engineering LTH ISSN 1650-2884 LU-CS-EX 2015-27 Automated
HYDRA: TOP-NOTCH CONTINUOUS INTEGRATION FOR DEMANDING PEOPLE
HYDRA: TOP-NOTCH CONTINUOUS INTEGRATION FOR DEMANDING PEOPLE Ludovic Courtès Service d expérimentation & développement Inria Bordeaux Sud-Ouest 3 November 2011 introduction features practice closing L.
Nexus Professional Whitepaper. Repository Management: Stages of Adoption
Sonatype Nexus Professional Whitepaper Repository Management: Stages of Adoption Adopting Repository Management Best Practices SONATYPE www.sonatype.com [email protected] +1 301-684-8080 12501 Prosperity
Software Engineering Process. Kevin Cathey
Software Engineering Process Kevin Cathey Where are we going? Last Week iphone Application Technologies Workshop This Week Software Engineering Process Thanksgiving Break Write some code, yo 2 Dec Options:
CSCI E 98: Managed Environments for the Execution of Programs
CSCI E 98: Managed Environments for the Execution of Programs Draft Syllabus Instructor Phil McGachey, PhD Class Time: Mondays beginning Sept. 8, 5:30-7:30 pm Location: 1 Story Street, Room 304. Office
Maven or how to automate java builds, tests and version management with open source tools
Maven or how to automate java builds, tests and version management with open source tools Erik Putrycz Software Engineer, Apption Software [email protected] Outlook What is Maven Maven Concepts and
CSE 373: Data Structure & Algorithms Lecture 25: Programming Languages. Nicki Dell Spring 2014
CSE 373: Data Structure & Algorithms Lecture 25: Programming Languages Nicki Dell Spring 2014 What is a Programming Language? A set of symbols and associated tools that translate (if necessary) collections
The Importance of Continuous Integration for Quality Assurance Teams
The Importance of Continuous Integration for Quality Assurance Teams Without proper implementation, a continuous integration system will go from a competitive advantage for a software quality assurance
SOFTWARE DEVELOPMENT BASICS SED
SOFTWARE DEVELOPMENT BASICS SED Centre de recherche Lille Nord Europe 16 DÉCEMBRE 2011 SUMMARY 1. Inria Forge 2. Build Process of Software 3. Software Testing 4. Continuous Integration 16 DECEMBRE 2011-2
Fully Automated Static Analysis of Fedora Packages
Fully Automated Static Analysis of Fedora Packages Red Hat Kamil Dudka August 9th, 2014 Abstract There are static analysis tools (such as Clang or Cppcheck) that are able to find bugs in Fedora packages
Software Configuration Management
Reto Bonderer [email protected] University of Applied Sciences Chur V 1.01 2002, R. Bonderer 1 Learning Goals The participant knows why configuration management is important knows what version,
Introduction to Automated Testing
Introduction to Automated Testing What is Software testing? Examination of a software unit, several integrated software units or an entire software package by running it. execution based on test cases
Acronis Backup & Recovery 10 Server for Linux. Installation Guide
Acronis Backup & Recovery 10 Server for Linux Installation Guide Table of contents 1 Before installation...3 1.1 Acronis Backup & Recovery 10 components... 3 1.1.1 Agent for Linux... 3 1.1.2 Management
Copyright 1999-2011 by Parallels Holdings, Ltd. All rights reserved.
Parallels Virtuozzo Containers 4.0 for Linux Readme Copyright 1999-2011 by Parallels Holdings, Ltd. All rights reserved. This document provides the first-priority information on Parallels Virtuozzo Containers
TIME. Programming in the large. Lecture 22: Configuration Management. Agenda for today. About your Future. CM: The short version. CM: The long version
1 2 Last update: 17 June 2004 Programming in the large Bertrand Meyer Lecture 22: Configuration Management Bernd Schoeller [email protected] Agenda for today 3 About your Future 4 Motivation
The BackTrack Successor
SCENARIOS Kali Linux The BackTrack Successor On March 13, Kali, a complete rebuild of BackTrack Linux, has been released. It has been constructed on Debian and is FHS (Filesystem Hierarchy Standard) complaint.
Improve Fortran Code Quality with Static Analysis
Improve Fortran Code Quality with Static Analysis This document is an introductory tutorial describing how to use static analysis on Fortran code to improve software quality, either by eliminating bugs
Delivering Quality Software with Continuous Integration
Delivering Quality Software with Continuous Integration 01 02 03 04 Unit Check- Test Review In 05 06 07 Build Deploy Test In the following pages we will discuss the approach and systems that together make
Preparing Your Computer for LFS101x. July 11, 2014 A Linux Foundation Training Publication www.linuxfoundation.org
Preparing Your Computer for LFS101x July 11, 2014 A Linux Foundation Training Publication www.linuxfoundation.org This class is intended to be very hands-on: in order to learn about Linux you must use
Idea: Measuring the Effect of Code Complexity on Static Analysis Results
Idea: Measuring the Effect of Code Complexity on Static Analysis Results James Walden, Adam Messer, and Alex Kuhl Department of Computer Science Northern Kentucky University Highland Heights, KY 41099
An Object Oriented Database for Network Management Data
Master Project Report An Object Oriented Database for Network Management Data by Qifeng Zhang Department of Computer Science Rennselaer Polytechnic Institute May 25, 1999 1. INTRODUCTION The goal of this
Efficient Automated Build and Deployment Framework with Parallel Process
Efficient Automated Build and Deployment Framework with Parallel Process Prachee Kamboj 1, Lincy Mathews 2 Information Science and engineering Department, M. S. Ramaiah Institute of Technology, Bangalore,
SSL for VM: The Hard Way and the Easy Way
SSL for VM: The Hard Way and the Easy Way David Boyes 2007 Agenda Overview of SSL and the VM Implementation Setup Steps for a DIY Version SSL Enabler, aka the Easy Way A Little Bit About Clients Q&A What
Open source business rules management system
JBoss Enterprise BRMS Open source business rules management system What is it? JBoss Enterprise BRMS is an open source business rules management system that enables easy business policy and rules development,
How to use PDFlib products with PHP
How to use PDFlib products with PHP Last change: July 13, 2011 Latest PDFlib version covered in this document: 8.0.3 Latest version of this document available at: www.pdflib.com/developer/technical-documentation
Symantec Protection for SharePoint Servers 6.0.4. Getting Started Guide
Symantec Protection for SharePoint Servers 6.0.4 Getting Started Guide Symantec Protection for SharePoint Servers Getting Started Guide The software described in this book is furnished under a license
Meister Going Beyond Maven
Meister Going Beyond Maven A technical whitepaper comparing OpenMake Meister and Apache Maven OpenMake Software 312.440.9545 800.359.8049 Winners of the 2009 Jolt Award Introduction There are many similarities
StreamServe Persuasion SP5 StreamStudio
StreamServe Persuasion SP5 StreamStudio Administrator s Guide Rev B StreamServe Persuasion SP5 StreamStudio Administrator s Guide Rev B OPEN TEXT CORPORATION ALL RIGHTS RESERVED United States and other
How To Run A Password Manager On A 32 Bit Computer (For 64 Bit) On A 64 Bit Computer With A Password Logger (For 32 Bit) (For Linux) ( For 64 Bit (Foramd64) (Amd64 (For Pc
SafeNet Authentication Client (Linux) Administrator s Guide Version 8.1 Revision A Copyright 2011, SafeNet, Inc. All rights reserved. All attempts have been made to make the information in this document
My DevOps Journey by Billy Foss, Engineering Services Architect, CA Technologies
About the author My DevOps Journey by Billy Foss, Engineering Services Architect, CA Technologies I am going to take you through the journey that my team embarked on as we looked for ways to automate processes,
CPSC 491. Today: Source code control. Source Code (Version) Control. Exercise: g., no git, subversion, cvs, etc.)
Today: Source code control CPSC 491 Source Code (Version) Control Exercise: 1. Pretend like you don t have a version control system (e. g., no git, subversion, cvs, etc.) 2. How would you manage your source
Network operating systems typically are used to run computers that act as servers. They provide the capabilities required for network operation.
NETWORK OPERATING SYSTEM Introduction Network operating systems typically are used to run computers that act as servers. They provide the capabilities required for network operation. Network operating
How To Port A Program To Dynamic C (C) (C-Based) (Program) (For A Non Portable Program) (Un Portable) (Permanent) (Non Portable) C-Based (Programs) (Powerpoint)
TN203 Porting a Program to Dynamic C Introduction Dynamic C has a number of improvements and differences compared to many other C compiler systems. This application note gives instructions and suggestions
Apache 2.0 Installation Guide
Apache 2.0 Installation Guide Ryan Spangler [email protected] http://ceut.uww.edu May 2002 Department of Business Education/ Computer and Network Administration Copyright Ryan Spangler 2002 Table of
Application Release Automation (ARA) Vs. Continuous Delivery
Application Release Automation (ARA) Vs. Continuous Delivery A whitepaper review of the feature and process differences between Continuous Delivery and Application Release Automation (ARA) By Tracy Ragan,
GECKO Software. Introducing FACTORY SCHEMES. Adaptable software factory Patterns
Introducing FACTORY SCHEMES Adaptable software factory Patterns FACTORY SCHEMES 3 Standard Edition Community & Enterprise Key Benefits and Features GECKO Software http://consulting.bygecko.com Email: [email protected]
Chapter 5 Names, Bindings, Type Checking, and Scopes
Chapter 5 Names, Bindings, Type Checking, and Scopes Chapter 5 Topics Introduction Names Variables The Concept of Binding Type Checking Strong Typing Scope Scope and Lifetime Referencing Environments Named
Monitoring, Tracing, Debugging (Under Construction)
Monitoring, Tracing, Debugging (Under Construction) I was already tempted to drop this topic from my lecture on operating systems when I found Stephan Siemen's article "Top Speed" in Linux World 10/2003.
So today we shall continue our discussion on the search engines and web crawlers. (Refer Slide Time: 01:02)
Internet Technology Prof. Indranil Sengupta Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Lecture No #39 Search Engines and Web Crawler :: Part 2 So today we
Document management and exchange system supporting education process
Document management and exchange system supporting education process Emil Egredzija, Bozidar Kovacic Information system development department, Information Technology Institute City of Rijeka Korzo 16,
Nick Ashley TOOLS. The following table lists some additional and possibly more unusual tools used in this paper.
TAKING CONTROL OF YOUR DATABASE DEVELOPMENT Nick Ashley While language-oriented toolsets become more advanced the range of development and deployment tools for databases remains primitive. How often is
Curriculum Map. Discipline: Computer Science Course: C++
Curriculum Map Discipline: Computer Science Course: C++ August/September: How can computer programs make problem solving easier and more efficient? In what order does a computer execute the lines of code
Measuring the Effect of Code Complexity on Static Analysis Results
Measuring the Effect of Code Complexity on Static Analysis Results James Walden, Adam Messer, and Alex Kuhl Department of Computer Science Northern Kentucky University Highland Heights, KY 41099 Abstract.
Professional. SlickEdif. John Hurst IC..T...L. i 1 8 О 7» \ WILEY \ Wiley Publishing, Inc.
Professional SlickEdif John Hurst IC..T...L i 1 8 О 7» \ WILEY \! 2 0 0 7 " > Wiley Publishing, Inc. Acknowledgments Introduction xiii xxv Part I: Getting Started with SiickEdit Chapter 1: Introducing
The Impact of Release Management and Quality Improvement in Open Source Software Project Management
Applied Mathematical Sciences, Vol. 6, 2012, no. 62, 3051-3056 The Impact of Release Management and Quality Improvement in Open Source Software Project Management N. Arulkumar 1 and S. Chandra Kumramangalam
