name: Build and Publish TVJ EPG Image on: push: branches: [ main ] workflow_dispatch: jobs: build: runs-on: ubuntu-latest steps: - name: Checkout (manual, from loxthelion.com/gitea) env: # If your repo is private, set GITEA_TOKEN as a repo secret (see below). GITEA_TOKEN: ${{ secrets.TEA_TOKEN }} run: | set -euo pipefail # Clean workspace rm -rf ./* ./.git || true # Build clone URL # GITHUB_SERVER_URL and GITHUB_REPOSITORY are provided by the Actions runtime BASE="${GITHUB_SERVER_URL%/}" REPO="${GITHUB_REPOSITORY}" # If private repo, use token auth; otherwise unauthenticated clone works if [ -n "${GITEA_TOKEN:-}" ]; then # Inject token for HTTPS auth CLONE_URL="${BASE}/${REPO}.git" CLONE_URL="$(echo "$CLONE_URL" | sed -E 's#^https://#https://oauth2:'"${GITEA_TOKEN}"'@#')" git clone "$CLONE_URL" . else git clone "${BASE}/${REPO}.git" . fi # Mark as safe directory for CI environments git config --global --add safe.directory "$PWD" - name: Install Podman run: | apt update apt install -y podman podman --version - name: Read version id: version run: | VERSION="$(cat VERSION | tr -d ' \n')" echo "version=$VERSION" >> $GITHUB_OUTPUT - name: Log in to container registry env: REGISTRY: ${{ vars.REGISTRY }} # e.g. loxthelion.com:5050 or ghcr.io REGISTRY_USER: ${{ secrets.REGISTRY_USER }} REGISTRY_TOKEN: ${{ secrets.REGISTRY_TOKEN }} run: | echo "$REGISTRY_TOKEN" | podman login "$REGISTRY" \ -u "$REGISTRY_USER" \ --password-stdin - name: Build image (multi-tag) env: REGISTRY: ${{ vars.REGISTRY }} IMAGE: ${{ vars.IMAGE }} # e.g. lyncolnmd/tvj-epg VERSION: ${{ steps.version.outputs.version }} run: | SHORT_SHA="${GITHUB_SHA::7}" FULL_IMAGE="$REGISTRY/$IMAGE" podman build \ -f Containerfile \ -t "$FULL_IMAGE:latest" \ -t "$FULL_IMAGE:v$VERSION" \ -t "$FULL_IMAGE:sha-$SHORT_SHA" \ . - name: Push all tags env: REGISTRY: ${{ vars.REGISTRY }} IMAGE: ${{ vars.IMAGE }} VERSION: ${{ steps.version.outputs.version }} run: | SHORT_SHA="${GITHUB_SHA::7}" FULL_IMAGE="$REGISTRY/$IMAGE" podman push "$FULL_IMAGE:latest" podman push "$FULL_IMAGE:v$VERSION" podman push "$FULL_IMAGE:sha-$SHORT_SHA"