Skip to content

Add script to build and push images without GitHub Actions - #45

Draft
kdambekalns wants to merge 2 commits into
mainfrom
task/local-build-script
Draft

kdambekalns wants to merge 2 commits into
mainfrom
task/local-build-script

Conversation

@kdambekalns

@kdambekalns kdambekalns commented Nov 4, 2026 •

Copy link
Copy Markdown
Member

If GitHub Actions is not available, bin/build-and-push.sh builds and pushes the Beach PHP images from a workstation the way .github/workflows/docker.build.yaml does:

  • builds the latest release tag (v*) in a temporary git worktree, not the working copy
  • reads the PHP branches from the build workflow of that tag
  • takes the PHP version of each branch from the org.opencontainers.image.version label of harbor.flownative.io/docker/php:<branch>, like flownative/action-docker-get-label, and builds on exactly that image (--pull, because the nightly builds replace it)
  • linux/amd64,linux/arm64, the same tags (8.4, 8.4.27) for Docker Hub and Harbor, the same OCI labels
  • falls back to the locally known tags if git fetch fails
  • without options it only shows the plan; --build builds without pushing, --push builds and pushes after a confirmation (--yes skips it)
  • runs with the Bash 3.2 that ships with macOS; shellcheck is clean

It notifies neither docker-beach-php-k8s nor versions.flownative.io; it prints what to do next.

Companion of flownative/docker-php#69.

Measured on Apple Silicon with OrbStack, PHP 8.4.27, --build --no-cache: 2 min 35 s.

Not tested yet: an actual --push.

Refs OPS-8S (https://minka.flownative.com/go/card/OPS-8S)

bin/build-and-push.sh builds the images on a workstation the way the
build workflow does: from the latest release tag, for linux/amd64 and
linux/arm64, with the same tags and labels. The PHP branches are read
from the workflow of that tag, and the PHP version of each is taken from
the version label of the newest harbor.flownative.io/docker/php image,
as flownative/action-docker-get-label does.

Without options it only shows the plan; --build builds without pushing,
--push builds and pushes after a confirmation.

Refs OPS-8S

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
On GitHub the matrix comes from the workflow on main, while the code is
the one of the latest release tag. The script read the matrix from the
workflow of the tag instead, so a version entered on main but not yet
tagged was built by the workflow but not by the script.

Refs OPS-8S

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant