Uploaded image for project: 'OpenShift Builds'
  1. OpenShift Builds
  2. BUILD-825

Spike: Buildah strategy with persistent volume claim

XMLWordPrintable

    • Icon: Spike Spike
    • Resolution: Done
    • Icon: Normal Normal
    • None
    • builds-1.0
    • shipwright
    • 3
    • False
    • None
    • False
    • SECFLOWOTL-21 - Persistent Volumes for Shipwright Builds
    • Release Note Not Required
    • 3
    • Pipeline Integrations #2260

      Story (Required)

      As a developer trying to improve the performance of my builds I want to use a persistent volume to cache dependencies between builds so less things are downloaded from the internet.

      <Describes high level purpose and goal for this story. Answers the questions: Who is impacted, what is it and why do we need it? How does it improve the customer’s experience?>

      Background (Required)

      <Describes the context or background related to this story>

      Builds currently need to download fresh copies of dependencies in each build (container image layers, .jar files, node_modules, etc.). We can speed this by using a persistent volume claim across builds.

      Out of scope

      <Defines what is not included in this story>

      • s2i build strategy w/ cache
      • buildpacks build strategy w/ cache

      Approach (Required)

      <Description of the general technical path on how to achieve the goal of the story. Include details like json schema, class definitions>

      Spike - demo a Shipwright build where:

      1. The buildah strategy is extended to declare a volume for container image layers: https://github.com/shipwright-io/build/blob/main/docs/buildstrategies.md#volumes-and-volumemounts
      2. A PersistentVolumeClaim is created in a namespace (likely need 2-3Gi storage)
      3. A Build is created which mounts the PersistentVolumeClaim https://github.com/shipwright-io/build/blob/main/docs/build.md#defining-volumes
      4. Successive BuildRuns of the build in step 3. The first build should be slower than the second (and subsequent) builds.

      Dependencies

      <Describes what this story depends on. Dependent Stories and EPICs should be linked to the story.>

      1. Shipwright support of PVC volumes in build strategies

      Acceptance Criteria (Mandatory)

      <Describe edge cases to consider when implementing the story and defining tests>

      <Provides a required and minimum list of acceptance tests for this story. More is expected as the engineer implements this story>

      • Video demo of using a PVC to cache dependencies in a build
      • Submit follow up stories/tasks to support PVC volumes in our official build strategies.

      INVEST Checklist

      Dependencies identified

      Blockers noted and expected delivery timelines set

      Design is implementable

      Acceptance criteria agreed upon

      Story estimated

      Legend

      Unknown

      Verified

      Unsatisfied

      Done Checklist

      • Code is completed, reviewed, documented and checked in
      • Unit and integration test automation have been delivered and running cleanly in continuous integration/staging/canary environment
      • Continuous Delivery pipeline(s) is able to proceed with new code included
      • Customer facing documentation, API docs etc. are produced/updated, reviewed and published
      • Acceptance criteria are met

              adkaplan@redhat.com Adam Kaplan
              adkaplan@redhat.com Adam Kaplan
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Created:
                Updated:
                Resolved: