Skip to content

Use local builder

Use local builder #968

Workflow file for this run

name: ci
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
# Job to run change detection
changes:
runs-on: ubuntu-latest
outputs:
# Expose matched filters as job 'images' output variable
images: ${{ steps.filter.outputs.changes }}
steps:
- uses: actions/checkout@v4
- name: Determine Paths to Build for Auto Trigger
uses: dorny/paths-filter@v3
id: filter
with:
# Use context to get the branch where commits were pushed.
# If there is only one long-lived branch (e.g. master),
# you can specify it directly.
# If it's not configured, the repository default branch is used.
base: ${{ github.ref }}
filters: |
aws-cli: 'aws-cli/**'
black: 'black/**'
buildpack-deps/ubuntu/jammy: 'buildpack-deps/ubuntu/jammy/**'
buildpack-deps/ubuntu/focal: 'buildpack-deps/ubuntu/focal/**'
buildpack-deps/ubuntu/noble: 'buildpack-deps/ubuntu/noble/**'
cmake/clang: 'cmake/clang/**'
cmake/gcc: 'cmake/gcc/**'
dokken/almalinux-9: 'dokken/almalinux-9/**'
dokken/amazonlinux-2: 'dokken/amazonlinux-2/**'
dokken/amazonlinux-2023: 'dokken/amazonlinux-2023/**'
dokken/centos-stream-9: 'dokken/centos-stream-9/**'
dokken/debian-11: 'dokken/debian-11/**'
dokken/debian-12: 'dokken/debian-12/**'
dokken/eurolinux-9: 'dokken/eurolinux-9/**'
dokken/opensuse-leap-15.3: 'dokken/opensuse-leap-15.3/**'
dokken/opensuse-leap-15.4: 'dokken/opensuse-leap-15.4/**'
dokken/opensuse-leap-15.5: 'dokken/opensuse-leap-15.5/**'
dokken/opensuse-leap-15.6: 'dokken/opensuse-leap-15.6/**'
dokken/oraclelinux-7: 'dokken/oraclelinux-7/**'
dokken/oraclelinux-8: 'dokken/oraclelinux-8/**'
dokken/oraclelinux-9: 'dokken/oraclelinux-9/**'
dokken/rockylinux-8: 'dokken/rockylinux-8/**'
dokken/rockylinux-9: 'dokken/rockylinux-9/**'
dokken/ubuntu-20.04: 'dokken/ubuntu-20.04/**'
dokken/ubuntu-22.04: 'dokken/ubuntu-22.04/**'
dokken/ubuntu-24.04: 'dokken/ubuntu-24.04/**'
doctl: 'doctl/**'
erlang/26/slim: 'erlang/26/slim/**'
erlang/26: 'erlang/26/**'
flake8: 'flake8/**'
fpm: 'fpm/**'
glab: 'glab/**'
go2chef: 'go2chef/**'
golang/1.22/noble: 'golang/1.22/noble/**'
golang/1.23/noble: 'golang/1.23/noble/**'
hashicorp/vagrant-libvirt: 'hashicorp/vagrant-libvirt/**'
haskell/9.8/slim-jammy: 'haskell/9.8/slim-jammy/**'
jupyter/docker-stacks-foundation: 'jupyter/docker-stacks-foundation/**'
jupyter/base-notebook: 'jupyter/base-notebook/**'
jupyter/minimal-notebook: 'jupyter/minimal-notebook/**'
jupyter/scipy-notebook: 'jupyter/scipy-notebook/**'
jupyter/datascience-notebook: 'jupyter/datascience-notebook/**'
jupyter/tensorflow-notebook: 'jupyter/tensorflow-notebook/**'
meshcmd: 'meshcmd/**'
node/18/noble: 'node/18/noble/**'
node/20/noble: 'node/20/noble/**'
node/22/noble: 'node/22/noble/**'
opam: 'opam/**'
pgweb: 'pgweb/**'
postgres/15/noble: 'postgres/15/noble/**'
postgres/16/noble: 'postgres/16/noble/**'
prometheus/alertmanager: 'prometheus/alertmanager/**'
prometheus/blackbox_exporter: 'prometheus/blackbox_exporter/**'
prometheus/node_exporter: 'prometheus/node_exporter/**'
prometheus/prometheus: 'prometheus/prometheus/**'
pulumi/pulumi-base: 'pulumi/pulumi-base/**'
pulumi/pulumi-python: 'pulumi/pulumi-python/**'
python/3.8/jammy: 'python/3.8/jammy/**'
python/3.8/slim-jammy: 'python/3.8/slim-jammy/**'
python/3.9/jammy: 'python/3.9/jammy/**'
python/3.9/slim-jammy: 'python/3.9/slim-jammy/**'
python/3.10/jammy: 'python/3.10/jammy/**'
python/3.10/slim-jammy: 'python/3.10/slim-jammy/**'
python/3.11/jammy: 'python/3.11/jammy/**'
python/3.11/slim-jammy: 'python/3.11/slim-jammy/**'
python/3.12/jammy: 'python/3.12/jammy/**'
python/3.12/slim-jammy: 'python/3.12/slim-jammy/**'
redis/7.0/jammy: 'redis/7.0/jammy/**'
redis/7.2/jammy: 'redis/7.2/jammy/**'
ruby/3.1/jammy: 'ruby/3.1/jammy/**'
ruby/3.1/slim-jammy: 'ruby/3.1/slim-jammy/**'
ruby/3.2/jammy: 'ruby/3.2/jammy/**'
ruby/3.2/slim-jammy: 'ruby/3.2/slim-jammy/**'
ruby/3.3/jammy: 'ruby/3.3/jammy/**'
ruby/3.3/noble: 'ruby/3.3/noble/**'
ruby/3.3/slim-jammy: 'ruby/3.3/slim-jammy/**'
ruby/3.3/slim-noble: 'ruby/3.3/slim-noble/**'
rust/jammy: 'rust/jammy/**'
shellcheck: 'shellcheck/**'
ubuntu-autoinstall: 'ubuntu-autoinstall/**'
# Job to build and test each of the modified images
build:
needs: changes
strategy:
matrix:
# Parse JSON array containing names of all filters matching any of changed files
# e.g. ['image1', 'image2'] if both image folders contains changes
image: ${{ fromJSON(needs.changes.outputs.images) }}
if: ${{ needs.changes.outputs.images != '' && needs.changes.outputs.images != '[]' }}
runs-on: ubuntu-latest
steps:
- uses: boxcutter/container-build-publish-action@main
with:
workdir: ${{ matrix.image }}
dockerhub-username: ${{ secrets.CONTAINER_REGISTRY_USERNAME }}
dockerhub-password: ${{ secrets.CONTAINER_DESCRIPTION_PASSWORD }}