tree: c7cfd44da3ebaf99b4d08e977441839e5fa74ec8
  1. workflows/
  2. common.sh
  3. daisy_startupscript_deb.sh
  4. daisy_startupscript_goo.sh
  5. daisy_startupscript_rpm.sh
  6. README.md
  7. test_build.sh
packagebuild/README.md

Package build workflows

This directory contains the ‘package builder’, which is a set of Daisy workflows and startup scripts. A package build workflow will accept a git repository set up for package building, build it and produce a system package.

We use these packagebuild workflows from our Concourse pipelines and Prow jobs.

Repo layout for package building

The package builder expects to check out a git repository that contains a packaging/ directory. This directory may contain one or more of:

  • 1 or more RPM spec files.
  • A debian/ directory, following Debian packaging standards
  • A googet/ directory, containing GooGet specs and scripts

Workflow invocation

Build workflows accept the following parameters:

  • gcs_path - where to uploaded the resulting package, e.g. gs://my-bucket/
  • repo_owner - the repo owner, for example ‘GoogleCloudPlatform’
  • repo_name - the repo name, for example ‘guest-agent’
  • git_ref - the git ref to check out, for example ‘main’
  • version - the version for the resulting package, for example ‘20221025.00’
  • build_dir - (optional) the subdirectory in the repo to cd into before starting the build

Supported types

Each packagebuild workflow corresponds to a single package type. All builds default to the x86_64 architecture unless otherwise specified.

Debian

Debian workflows launch an instance of the specified Debian release and produce .deb packages.

Available workflows:

  • build_deb10.wf.json
  • build_deb11.wf.json
  • build_deb12.wf.json

An ARM64 workflow is also included:

  • build_deb11_arm64.wf.json

Enterprise Linux

EL (Enterprise Linux) workflows launch an instance of a predefined EL type and produce .rpm packages. The workflows use the OS that was best suited at the time of development.

Available workflows:

  • build_el6.wf.json - uses CentOS 6
  • build_el7.wf.json - uses CentOS 7
  • build_el8.wf.json - uses RHEL 8
  • build_el9.wf.json - uses CentOS Stream 9

ARM64 workflows are also included:

  • build_el8_arm64.wf.json - uses the GCP optimized version of Rocky Linux 8
  • build_el9_arm64.wf.json - uses RHEL 9

GooGet

The build_goo.wf.json (GooGet) workflow launches a Debian 10 instance and produces .goo packages.