name: Build and Push Container Image on: push: branches: - main - multilingual - redesign tags: - 'v*' workflow_dispatch: jobs: build-and-push: name: Build & Push to Gitea Package Registry runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 - name: Log in to Gitea Container Registry env: REGISTRY_USER: ${{ gitea.actor }} REGISTRY_TOKEN: ${{ secrets.GITEATOKEN }} SERVER_URL: ${{ gitea.server_url }} run: | REGISTRY_HOST=$(echo "${SERVER_URL}" | sed -E 's#^https?://##; s#/$##') echo "Logging in to ${REGISTRY_HOST} as ${REGISTRY_USER}..." echo "${REGISTRY_TOKEN}" | docker login "${REGISTRY_HOST}" -u "${REGISTRY_USER}" --password-stdin - name: Build, Validate, and Push Docker Image env: SERVER_URL: ${{ gitea.server_url }} REPO_NAME: ${{ gitea.repository }} REF_NAME: ${{ gitea.ref_name }} SHA: ${{ gitea.sha }} run: | REGISTRY_HOST=$(echo "${SERVER_URL}" | sed -E 's#^https?://##; s#/$##') IMAGE_PATH=$(echo "${REPO_NAME}" | tr '[:upper:]' '[:lower:]') FULL_IMAGE="${REGISTRY_HOST}/${IMAGE_PATH}" SHORT_SHA=$(echo "${SHA}" | cut -c1-7) SAFE_REF=$(echo "${REF_NAME}" | sed -E 's#[^a-zA-Z0-9_.-]#-#g') echo "Building image ${FULL_IMAGE}..." docker build --pull \ -t "${FULL_IMAGE}:${SAFE_REF}" \ -t "${FULL_IMAGE}:${SHORT_SHA}" \ -t "${FULL_IMAGE}:latest" \ . echo "Validating PHP syntax inside built container..." docker run --rm "${FULL_IMAGE}:${SHORT_SHA}" sh -c 'find /var/www/html -name "*.php" -exec php -l {} +' echo "Pushing tags to Gitea Package Registry..." docker push "${FULL_IMAGE}:${SAFE_REF}" docker push "${FULL_IMAGE}:${SHORT_SHA}" docker push "${FULL_IMAGE}:latest"