Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improved caching with Docker in CI #803

Draft
wants to merge 5 commits into
base: develop
Choose a base branch
from

Commits on Nov 12, 2024

  1. Basic linting on Dockerfile

    mec committed Nov 12, 2024
    Configuration menu
    Copy the full SHA
    8375a51 View commit details
    Browse the repository at this point in the history

Commits on Nov 18, 2024

  1. Initial update to CI

    We wanted to try and speed up the CI tasks for the Rails Template.
    
    This work introduces the same approach we took to save time on the DfE
    Complete project.
    
    We use Docker supplied actions to build the image and cache the layers
    to the Github actions cache.
    
    Subsequent jobs are set to use the layers from the cache which, in most
    cases, gives us a nice speed boost.
    
    We've split the jobs so they can be run in parallel, as we know the
    image is the same for each job they all use the strategy.
    
    We've kept the Shellcheck task separate as this code is not strictly
    speaking the application code, so doesn't really need to be inside the
    image.
    mec committed Nov 18, 2024
    Configuration menu
    Copy the full SHA
    b342160 View commit details
    Browse the repository at this point in the history
  2. Remove unused CI scripts

    Now that we have all the CI tasks in Github Actions these scripts are
    never used.
    mec committed Nov 18, 2024
    Configuration menu
    Copy the full SHA
    b22c388 View commit details
    Browse the repository at this point in the history
  3. DRY up cache loading in CI workflow

    This adds a composite action to run the two cache-loading steps that are
    reused across three of the jobs in the continuous integration workflow.
    The second of these steps is a little long and detailed, and differs
    slightly but meaningfully from a similar step in the build cache job, so
    it might be useful to DRY this up. This also allows us to see the meat
    of the post-cache jobs a little easier in the continuous integration
    workflow
    
    The `actions/checkout@v4` step is needed in each job in order to load
    our action (and presumably also the external ones used in the composite
    action)
    
    It would be quite nice to use a YAML anchor or alias to do this kind of
    reuse, but these are currently unsupported in GitHub Actions. They might
    be on the way soon, so watch this space: actions/runner#1182
    yndajas authored and mec committed Nov 18, 2024
    Configuration menu
    Copy the full SHA
    f4b9263 View commit details
    Browse the repository at this point in the history
  4. Remove independent build and cache job

    Our caching strategy is to cached across CI jobs with the focus on
    caching the layers in the Docker image.
    
    As each job has to build the image from (using the cache) regardless, we
    think we can get rid of the independent build and cache job and let the
    caching happen as we run each job.
    
    The only way to see if this pays off is to merge the changes and run
    another CI workflow to see how much caching we get.
    
    We have also split each linter and formatter into their own `run` steps,
    this is for clarity.
    mec committed Nov 18, 2024
    Configuration menu
    Copy the full SHA
    ca62b83 View commit details
    Browse the repository at this point in the history