Files
ci-templates/.gitea/workflows/docker-build-push.yml

60 lines
1.5 KiB
YAML

name: Docker Build & Push (Template)
on:
workflow_call:
inputs:
image_name:
required: true
type: string
image_tag:
required: false
type: string
default: latest
dockerfile:
required: false
type: string
default: Dockerfile
context:
required: false
type: string
default: .
outputs:
image:
description: Fully-qualified image reference pushed to Docker Hub
value: ${{ jobs.build.outputs.image }}
jobs:
build:
runs-on: ubuntu-latest
container:
image: catthehacker/ubuntu:act-latest
outputs:
image: ${{ steps.push.outputs.image }}
steps:
- uses: actions/checkout@v3
- name: Build Docker image
run: |
docker build \
-t "${{ inputs.image_name }}:${{ inputs.image_tag }}" \
-f "${{ inputs.dockerfile }}" \
"${{ inputs.context }}"
- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ env.DOCKER_HUB_USERNAME }}
password: ${{ env.DOCKER_HUB_ACCESS_TOKEN }}
- name: Push Docker image to Docker Hub
id: push
shell: bash
run: |
set -euo pipefail
REMOTE_IMAGE="${{ secrets.DOCKER_HUB_USERNAME }}/${{ inputs.image_name }}:${{ inputs.image_tag }}"
docker tag "${{ inputs.image_name }}:${{ inputs.image_tag }}" "$REMOTE_IMAGE"
docker push "$REMOTE_IMAGE"
echo "image=$REMOTE_IMAGE" >> "$GITHUB_OUTPUT"