46 lines
1.5 KiB
YAML
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"
|