From 372e288562b6ba8f0679286f333afd3898ad0664 Mon Sep 17 00:00:00 2001 From: estebanthi Date: Sun, 19 Oct 2025 18:26:39 +0200 Subject: [PATCH] Test workflow --- .../.gitea/workflows/docker-build-push.yml | 87 +++++++++++++++++++ examples/docker-build-push/Dockerfile | 29 +++++++ 2 files changed, 116 insertions(+) create mode 100644 examples/docker-build-push/.gitea/workflows/docker-build-push.yml create mode 100644 examples/docker-build-push/Dockerfile diff --git a/examples/docker-build-push/.gitea/workflows/docker-build-push.yml b/examples/docker-build-push/.gitea/workflows/docker-build-push.yml new file mode 100644 index 0000000..80082db --- /dev/null +++ b/examples/docker-build-push/.gitea/workflows/docker-build-push.yml @@ -0,0 +1,87 @@ +# === Workflow Doc ========================================================= +# Name: Docker build +# Purpose: Build & push a Docker image +# Requires: +# - +# ========================================================================== + +name: Build external repo image + +on: + push: + branches: + - 'main' + tags: + - 'v*' + pull_request: + branches: + - 'main' + +env: + REGISTRY_HOST: '{{ secrets.REGISTRY_HOST }}' + REGISTRY_USERNAME: '{{ secrets.REGISTRY_USERNAME }}' + REGISTRY_PASSWORD: '{{ secrets.REGISTRY_PASSWORD }}' + IMAGE_NAME: "wavyzz/sample-image" + CONTEXT_PATH: "." + DOCKERFILE_PATH: "./Dockerfile" + +jobs: + build-and-push: + name: Build and Push Docker Image + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v5 + + - name: Define branch helpers + id: branch + run: | + DEFAULT="${{ github.event.repository.default_branch }}" + CURRENT="${{ github.ref_name }}" + if [ "$DEFAULT" = "$CURRENT" ]; then + echo "is_default_branch=true" >> $GITHUB_OUTPUT + else + echo "is_default_branch=false" >> $GITHUB_OUTPUT + fi + + - name: Extract Docker metadata + id: meta + uses: docker/metadata-action@v5 + with: + github-token: b60bc646e9ce87d4fffef5ba1501347ea21bdd8f + images: ${{ env.REGISTRY_HOST }}/${{ env.IMAGE_NAME }} + tags: | + type=ref,event=branch + type=ref,event=tag + type=sha + type=raw,value=latest,enable=${{ steps.branch.outputs.is_default_branch }} + + - name: Set up QEMU # for multi-platform builds + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx # for advanced builds + uses: docker/setup-buildx-action@v3 + + - name: Log in to registry + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY_HOST }} + username: ${{ env.REGISTRY_USERNAME }} + password: ${{ env.REGISTRY_PASSWORD }} + + - name: Build and push Docker image + uses: docker/build-push-action@v5 + with: + context: ${{ env.CONTEXT_PATH }} + file: ${{ env.DOCKERFILE_PATH }} + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + + - name: Image details + run: | + echo "Image pushed: ${{ env.REGISTRY_HOST }}/${{ env.IMAGE_NAME }}:${{ steps.meta.outputs.tags }}" + echo "Labels: ${{ steps.meta.outputs.labels }}" + echo "Tags: ${{ steps.meta.outputs.tags }}" + echo "Digest: ${{ steps.meta.outputs.digest }}" diff --git a/examples/docker-build-push/Dockerfile b/examples/docker-build-push/Dockerfile new file mode 100644 index 0000000..568ba63 --- /dev/null +++ b/examples/docker-build-push/Dockerfile @@ -0,0 +1,29 @@ +# syntax=docker/dockerfile:1.6 + +# --- Build stage ------------------------------------------------------------ +FROM alpine:3.20 AS builder + +# Example: building a tiny binary (optional) +RUN apk add --no-cache bash curl + +WORKDIR /app +COPY . . + +# Just a placeholder “build” step +RUN echo "Building example project..." && \ + echo "version: $(date -u +%Y-%m-%dT%H:%M:%SZ)" > version.txt + +# --- Runtime stage ---------------------------------------------------------- +FROM alpine:3.20 + +LABEL org.opencontainers.image.title="CI/CD Test Image" \ + org.opencontainers.image.description="Sample image to test Gitea Actions Docker build & push workflow" \ + org.opencontainers.image.licenses="MIT" + +# Copy artifact from builder +COPY --from=builder /app/version.txt /usr/local/share/version.txt + +RUN apk add --no-cache bash curl && \ + echo "Hello from the test image" > /usr/local/share/message.txt + +ENTRYPOINT ["/bin/sh", "-c", "echo 'Container started ✅'; cat /usr/local/share/message.txt; cat /usr/local/share/version.txt"]