docs: update readme #203
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Publish to Docker Hub | |
name: publish-docker | |
on: | |
push: | |
# Only run on specific commit types in main branch | |
branches: [main] | |
# Allow manual triggers | |
workflow_dispatch: | |
inputs: | |
version: | |
description: "Version to publish (e.g. 1.2.3)" | |
required: false | |
type: string | |
env: | |
IMAGE_NAME: ${{ github.repository }} | |
concurrency: | |
group: docker-${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
build-and-publish: | |
# Only publish on main branch for specific commit types | |
if: | | |
github.ref == 'refs/heads/main' && ( | |
startsWith(github.event.head_commit.message, 'feat:') || | |
startsWith(github.event.head_commit.message, 'fix:') || | |
startsWith(github.event.head_commit.message, 'perf:') | |
) || | |
github.event_name == 'workflow_dispatch' | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
packages: write | |
steps: | |
- name: Job information | |
run: echo ${{ github.workflow }}-${{ github.ref }} | |
- name: Check out repository | |
uses: actions/checkout@v4 | |
- name: Extract metadata for Docker | |
id: meta | |
uses: docker/metadata-action@v5 | |
with: | |
images: | | |
# Docker Hub | |
${{ env.IMAGE_NAME }} | |
# Tagged semver releases get a (latest) entry as well | |
flavor: | | |
latest=auto | |
prefix= | |
suffix= | |
# refs/branches/main -> (main) | |
# refs/tags/v1.2.3 -> (1.2.3) | |
# refs/tags/v1.2.3 -> (1.2) | |
# refs/tags/v1.2.3 -> (1), only if greater zero | |
tags: | | |
type=raw,value=latest,enable=${{ github.event.inputs.version != '' }} | |
type=ref,event=branch | |
type=semver,pattern={{version}},value=${{ github.event.inputs.version }},enable=${{ github.event.inputs.version != '' }} | |
type=semver,pattern={{major}}.{{minor}},value=${{ github.event.inputs.version }},enable=${{ github.event.inputs.version != '' }} | |
type=semver,pattern={{major}},value=${{ github.event.inputs.version }},enable=${{ github.event.inputs.version != '' && !startsWith(github.event.inputs.version, '0.') }} | |
- name: Log in to Docker Hub | |
if: github.event_name != 'pull_request' | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.DOCKER_USERNAME }} | |
password: ${{ secrets.DOCKER_PASSWORD }} | |
- name: Build and push Docker image | |
uses: docker/build-push-action@v6 | |
with: | |
context: . | |
tags: ${{ steps.meta.outputs.tags }} | |
push: ${{ github.event_name != 'pull_request' }} | |
labels: ${{ steps.meta.outputs.labels }} |