shared-actions/docker-build-push/action.yml

46 lines
1.5 KiB
YAML

name: docker-build-push
description: Build Docker image and push to JFrog with semver tags (major, minor, patch)
inputs:
image-name:
description: 'Image name (e.g., default-docker/db-devcontainer-base)'
required: true
registry:
description: 'Docker registry'
required: false
default: 'schmalz.jfrog.io'
dockerfile:
description: 'Path to Dockerfile'
required: false
default: 'Dockerfile'
context:
description: 'Docker build context'
required: false
default: '.'
version-tag:
description: 'Full semver tag (e.g., 1.2.3)'
required: true
jfrog-token:
description: 'JFrog registry password/token'
required: true
jfrog-user:
description: 'JFrog registry user'
required: false
default: 'jfrog-cicd-user'
runs:
using: composite
steps:
- name: Build and push Docker image
shell: bash
run: |
echo "${{ inputs.jfrog-token }}" | docker login "${{ inputs.registry }}" -u "${{ inputs.jfrog-user }}" --password-stdin
FULL="${{ inputs.registry }}/${{ inputs.image-name }}:${{ inputs.version-tag }}"
MINOR="${{ inputs.registry }}/${{ inputs.image-name }}:$(echo "${{ inputs.version-tag }}" | cut -d. -f1,2)"
MAJOR="${{ inputs.registry }}/${{ inputs.image-name }}:$(echo "${{ inputs.version-tag }}" | cut -d. -f1)"
docker build -f "${{ inputs.dockerfile }}" -t "$FULL" -t "$MINOR" -t "$MAJOR" "${{ inputs.context }}"
docker push "$FULL"
docker push "$MINOR"
docker push "$MAJOR"