name: Docker Build and Push description: Build a Docker image and push it to the Gitea container registry inputs: REGISTRY: description: "Container registry hostname" default: "gitea.pixelparasol.com" REGISTRY_USERNAME: description: "Registry login username" default: "deac" REGISTRY_TOKEN: description: "Registry login token or password" required: true IMAGE_PATH: description: "Full registry image path (e.g. gitea.pixelparasol.com/stat-tackler/stat-tackler-api)" required: true IMAGE_TAG: description: "Tag to apply in addition to latest (e.g. stage-)" required: true PLATFORMS: description: "Comma-separated buildx platform list" default: "linux/amd64,linux/arm/v7,linux/arm64" ARTIFACT_NAME: description: "Name of the build artifact to download" default: "dist" ARTIFACT_PATH: description: "Destination path for the downloaded artifact" default: "dist" TAG_LATEST: description: "Also tag and push the image as latest" default: "false" TAG_PREFIX: description: "Optional prefix to prepend to IMAGE_TAG (e.g. 'dev' produces 'dev-'). Does not affect the latest tag." default: "" WORKING_DIRECTORY: description: "Working directory for the Docker build" default: "." runs: using: composite steps: - name: Login to Gitea Container Registry uses: docker/login-action@v3 with: registry: ${{ inputs.REGISTRY }} username: ${{ inputs.REGISTRY_USERNAME }} password: ${{ inputs.REGISTRY_TOKEN }} - name: Download Build Artifact uses: actions/download-artifact@v3 with: name: ${{ inputs.ARTIFACT_NAME }} path: ${{ inputs.ARTIFACT_PATH }} - name: Docker Build and Push shell: sh run: | TAG="${{ inputs.IMAGE_TAG }}" if [ -n "${{ inputs.TAG_PREFIX }}" ]; then TAG="${{ inputs.TAG_PREFIX }}-${TAG}" fi TAGS="-t ${{ inputs.IMAGE_PATH }}:${TAG}" if [ "${{ inputs.TAG_LATEST }}" = "true" ]; then TAGS="$TAGS -t ${{ inputs.IMAGE_PATH }}:latest" fi docker buildx build -f ${{ inputs.WORKING_DIRECTORY }}/Dockerfile ${{ inputs.WORKING_DIRECTORY }} \ --platform ${{ inputs.PLATFORMS }} \ --push \ $TAGS