Skip to content

Merge pull request #53 from kagenti/docs/p2-shared-sandbox-pool #15

Merge pull request #53 from kagenti/docs/p2-shared-sandbox-pool

Merge pull request #53 from kagenti/docs/p2-shared-sandbox-pool #15

Workflow file for this run

name: Build and Push Image
on:
push:
branches: [main]
tags: ['v*']
workflow_dispatch:
permissions:
contents: read
packages: write
concurrency:
group: build-${{ github.ref }}
cancel-in-progress: true
env:
REGISTRY: ghcr.io
jobs:
build-and-push:
runs-on: ubuntu-latest
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
include:
# Main harness image.
- image: ghcr.io/kagenti/serverless-harness
context: .
file: Dockerfile
# Pre-baked sandbox image for OpenShift (deploy/knative/setup-ocp.sh).
# Built the same way as the harness so OCP can pull it from GHCR instead
# of building it in-cluster (issue #41). Scoped context — sandbox.Dockerfile
# has no COPY, so deploy/knative keeps the build context small.
- image: ghcr.io/kagenti/serverless-harness-sandbox
context: deploy/knative
file: deploy/knative/sandbox.Dockerfile
steps:
- name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
submodules: recursive
- name: Set up QEMU
uses: docker/setup-qemu-action@06116385d9baf250c9f4dcb4858b16962ea869c3 # v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4
- name: Log in to ghcr.io
uses: docker/login-action@650006c6eb7dba73a995cc03b0b2d7f5ca915bee # v4
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@80c7e94dd9b9319bd5eb7a0e0fe9291e23a2a2e9 # v6
with:
images: ${{ matrix.image }}
tags: |
type=sha,prefix=main-,enable={{is_default_branch}}
type=raw,value=latest,enable={{is_default_branch}}
type=semver,pattern={{version}}
- name: Build and push
uses: docker/build-push-action@f9f3042f7e2789586610d6e8b85c8f03e5195baf # v7
with:
context: ${{ matrix.context }}
file: ${{ matrix.file }}
push: true
platforms: linux/amd64,linux/arm64
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max