|
|
name: Build and Push Docker Image |
|
|
|
|
|
on: |
|
|
|
|
|
push: |
|
|
branches: |
|
|
- main |
|
|
- master |
|
|
tags: |
|
|
- 'v*' |
|
|
|
|
|
|
|
|
workflow_dispatch: |
|
|
inputs: |
|
|
tag: |
|
|
description: 'Docker image tag' |
|
|
required: false |
|
|
default: 'latest' |
|
|
|
|
|
env: |
|
|
REGISTRY: docker.io |
|
|
IMAGE_NAME: julienol/z-ai2api-python |
|
|
|
|
|
jobs: |
|
|
build-and-push: |
|
|
runs-on: ubuntu-latest |
|
|
|
|
|
steps: |
|
|
- name: Checkout code |
|
|
uses: actions/checkout@v4 |
|
|
|
|
|
- name: Set up Docker Buildx |
|
|
uses: docker/setup-buildx-action@v3 |
|
|
|
|
|
- name: Log in to Docker Hub |
|
|
uses: docker/login-action@v3 |
|
|
with: |
|
|
username: ${{ secrets.DOCKER_USERNAME }} |
|
|
password: ${{ secrets.DOCKER_PASSWORD }} |
|
|
|
|
|
- name: Extract metadata |
|
|
id: meta |
|
|
uses: docker/metadata-action@v5 |
|
|
with: |
|
|
images: ${{ env.IMAGE_NAME }} |
|
|
tags: | |
|
|
type=ref,event=branch |
|
|
type=ref,event=pr |
|
|
type=semver,pattern={{version}} |
|
|
type=semver,pattern={{major}}.{{minor}} |
|
|
type=semver,pattern={{major}} |
|
|
type=raw,value=latest,enable={{is_default_branch}} |
|
|
type=raw,value=${{ github.event.inputs.tag }},enable=${{ github.event_name == 'workflow_dispatch' }} |
|
|
|
|
|
- name: Build and push Docker image |
|
|
uses: docker/build-push-action@v5 |
|
|
with: |
|
|
context: . |
|
|
file: ./Dockerfile |
|
|
push: true |
|
|
tags: ${{ steps.meta.outputs.tags }} |
|
|
labels: ${{ steps.meta.outputs.labels }} |
|
|
platforms: linux/amd64,linux/arm64 |
|
|
cache-from: type=gha |
|
|
cache-to: type=gha,mode=max |
|
|
|
|
|
- name: Update Docker Hub description |
|
|
uses: peter-evans/dockerhub-description@v4 |
|
|
with: |
|
|
username: ${{ secrets.DOCKER_USERNAME }} |
|
|
password: ${{ secrets.DOCKER_PASSWORD }} |
|
|
repository: ${{ env.IMAGE_NAME }} |
|
|
readme-filepath: ./README.md |