Skip to content
This repository has been archived by the owner on Jun 6, 2022. It is now read-only.
/ spanner Public archive

Tool for driving "bob" to build sets of related software components from Git repositories

License

Notifications You must be signed in to change notification settings

sassoftware/spanner

Repository files navigation

README : Spanner -- Archived Repository

Notice: This repository is part of a Conary/rpath project at SAS that is no longer supported or maintained. Hence, the repository is being archived and will live in a read-only state moving forward. Issues, pull requests, and changes will no longer be accepted.

Spanner

About

Spanner is a python program that leverages wms and git to enable continuous integration builds. Spanner automates building packages from multiple git repos into conary packages as well as building conary groups after build runs.

Overview

Spanner is a command line tool written in python to automate building packages from multiple git repos into conary packages consumable for vApps. Spanner leverages WMS and git to enable continuous integration builds. Spanner automates building packages from multiple git repos into conary packages as well as building conary groups after build runs.

Spanner requires a WMS control repo with a directory of bob-plans.

The bob-plans directory must contain specific directories.

Project/ ├ ─ ─ control.yaml # Contains a list of git repos to add to your forest ├── bob-plans ├── config # Config files for bob. ├── external # Packages built outside spanner on conary label ├── products # Conary Groups └── projects # Conary Pkgs built by spanner

spanner also requires a wms url.

ie: http://wheresmystuff.unx.sas.com/api/repos/gerrit-pdt/tools:build-tools

How it works

High Level

Spanner uses a directory structure populated with config files and build plans for all the packages it intends to build. This directories are located in the control git repo of a git forest. This provides version control and branching. Spanner snapshots the control repo, reads the plan files, and creates a set of packages. The tool then iterates through the set and checks the git repo for its commit and compares it to the version of the package in the corresponding conary repo. If the commit and the version do not match spanner passes the package off to bob the builder to be built, setting the version to the commit revision of the git repo. Upon success spanner updates the package version in the set and proceeds to process. Once all the builds are finished spanner can build a group of the specific versions of all the packages in the build plans and include external packages not built by spanner with build plans located in the external directory.

Procedure

  • Fetch Plans - Snapshot the git control repo

  • Read Plans - Read the plans in the projects, products, external, and config directories

  • Check Plans - Check the git commit versions and the conary versions of the packages and set flag for build

  • Build Packages - Build all packages marked as changed

  • Group Build - [Optional] Build a group from all packages in the projects dir and optionally include packages from the external dir

  • Product Build - [Optional] Build plans located from the products dir.

Common Reference

-   build  Build all packages that have changed in the git forest.

-   plan   Make a set of bob plan templates for a git forest.

-   config Show spanner config

-   OPTIONS

   --branch=BRANCH

          Specifies the branch to build. Defaults to master  if  not  sup-
          plied ie: --branch master

   --cfgfile=CFGFILE

          Specifies  a specific spannerrc. Defaults to none using internal
          hard coded config. Not required in most instances.   ie:  --cfg-
          file ~/spannerrc

   --debug-logging

          Toggles  debug log level on. Defaults to off (quiet) if not sup-
          plied. Provides useful output when run in jenkins.

   --dry-run

          Toggles test mode on. Defaults to off. Used on initial  runs  to
          test outputs. usually paired with --debug-logging

   --group

          Toggles  group  build  on. Defaults to off. When on spanner will
          create a group at the end of the  build  run.  The  contents  of
          which  include all packages in projects and optionally the pack-
          ages specified in external directories. Uses  a  special  config
          file group.conf in the config directory.


   --products

          Toggles  products build on. Defaults to off. Builds the plans in
          the products directory. Used for packages or group  builds  that
          require pkgs in projects to be built before building.

   --quiet

          Toggles silent mode. Defaults to off. Deprecated.

Credits

  • Credits -- Brett Smith bc.smith@sas.com
  • Copyright -- (c) SAS Institute Inc.
  • License -- SEE LICENSE

About

Tool for driving "bob" to build sets of related software components from Git repositories

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •