Files
cpanel-importer/.gitea/workflows/build-push.yaml
Claude (bootstrap) b4ecdbc3b5
Some checks failed
cpanel-importer Build and Push / Build-and-Push (push) Failing after 51s
ci: trigger on main branch (renamed from trunk)
The Gitea repo's default branch is main; the local development branch
stayed trunk and pushes via `trunk:main` refspec. Workflow needs to
match what the remote sees.

run-name now interpolates ${{ gitea.ref_name }} so it accurately names
the branch on any future renames.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-31 08:26:45 -07:00

99 lines
3.3 KiB
YAML

name: cpanel-importer Build and Push
run-name: ${{ gitea.actor }} pushed a change to ${{ gitea.ref_name }}
on:
push:
branches:
- main
tags:
- '20[0-9][0-9].[0-9][0-9].[0-9]+'
jobs:
Build-and-Push:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Gitea
uses: docker/login-action@v3
with:
registry: repo.anhonesthost.net
username: ${{ secrets.CI_USER }}
password: ${{ secrets.CI_TOKEN }}
# Compute the version tag. If the commit is on a `YYYY.MM.NNN` tag
# we tag the image with that version; otherwise we only tag :latest
# and :<sha>.
- name: Compute tags
id: tags
run: |
set -euo pipefail
SHA="${GITHUB_SHA:0:12}"
REG="repo.anhonesthost.net/cloud-hosting-platform/cpanel-importer"
TAGS="${REG}:latest"$'\n'"${REG}:${SHA}"
# If this push includes a YYYY.MM.NNN tag, add it.
VER_TAG="${GITHUB_REF_NAME:-}"
if [[ "${GITHUB_REF:-}" == refs/tags/* && "$VER_TAG" =~ ^20[0-9][0-9]\.[0-9][0-9]\.[0-9]+$ ]]; then
TAGS="${TAGS}"$'\n'"${REG}:${VER_TAG}"
fi
echo "tags<<EOF" >> "$GITHUB_OUTPUT"
echo "$TAGS" >> "$GITHUB_OUTPUT"
echo "EOF" >> "$GITHUB_OUTPUT"
echo "Resolved tags:"
echo "$TAGS"
# First build locally (no push) so we can run a smoke test against
# the resolved image before pushing. The build is cached by Buildx
# so the push step below re-uses layers and is near-instant.
- name: Build Image (local, for smoke test)
uses: docker/build-push-action@v6
with:
context: .
platforms: linux/amd64
push: false
load: true
tags: cpanel-importer:smoke
no-cache: true
- name: Smoke test — image starts and `echo ok` works
run: |
set -euo pipefail
# Override the entrypoint so we don't have to provide the full
# IMPORT_* env set just to verify the image runs.
out="$(docker run --rm --entrypoint /bin/echo cpanel-importer:smoke ok)"
if [[ "$out" != "ok" ]]; then
echo "smoke test failed: expected 'ok', got '$out'"
exit 1
fi
echo "smoke test passed"
- name: PHP syntax check
run: |
set -euo pipefail
for f in scripts/*.php scripts/lib/*.php; do
docker run --rm -v "$PWD:/src" --entrypoint php cpanel-importer:smoke -l "/src/$f"
done
- name: Bash syntax check
run: |
set -euo pipefail
for f in scripts/*.sh; do
docker run --rm -v "$PWD:/src" --entrypoint bash cpanel-importer:smoke -n "/src/$f"
done
- name: Build and Push Image
uses: docker/build-push-action@v6
with:
context: .
platforms: linux/amd64
push: true
tags: ${{ steps.tags.outputs.tags }}
cache-from: type=registry,ref=repo.anhonesthost.net/cloud-hosting-platform/cpanel-importer:latest
cache-to: type=inline