Files
archived-sslocal-manager-al…/.github/workflows/docker-publishrust.yml
WilliamPeterMatthew 67c0ac493f Update Files
2026-01-29 15:31:19 +08:00

85 lines
8.6 KiB
YAML

name: Build and Push Docker Image (Rust)
on:
workflow_dispatch:
jobs:
build-push:
runs-on: ubuntu-latest
env:
TZ: Asia/Shanghai
strategy:
fail-fast: false
matrix:
registry: ['ghcr', 'dockerhub']
permissions:
contents: read
packages: write
attestations: write
id-token: write
steps:
- uses: actions/checkout@v4
with:
ref: master
- uses: docker/setup-qemu-action@v3
- uses: docker/setup-buildx-action@v3
- name: Login to ${{ matrix.registry }}
uses: docker/login-action@v3
with:
username: ${{ matrix.registry == 'ghcr' && github.repository_owner || secrets.DOCKER_USERNAME }}
password: ${{ matrix.registry == 'ghcr' && secrets.GITHUB_TOKEN || secrets.DOCKER_PASSWORD }}
registry: ${{ matrix.registry == 'ghcr' && 'ghcr.io' || '' }}
- name: Extract current date
id: extract-date
run: |
DATE=$(date +%Y%m%d)
echo "date=$DATE" >> $GITHUB_OUTPUT
- name: Process lowercase owner
id: lowercase-owner
run: |
LOWER_OWNER=$(echo "$GITHUB_REPOSITORY_OWNER" | tr '[:upper:]' '[:lower:]')
echo "lower_owner=$LOWER_OWNER" >> $GITHUB_OUTPUT
- name: Build and push
uses: docker/build-push-action@v5
with:
context: .
file: ./Dockerfile
platforms: linux/386,linux/amd64,linux/arm/v7,linux/arm64/v8,linux/ppc64le,linux/s390x,linux/riscv64
push: true
tags: |
${{ matrix.registry == 'ghcr' && format('ghcr.io/{0}/sslocal-manager-rust:{1}', steps.lowercase-owner.outputs.lower_owner, steps.extract-date.outputs.date) || format('{0}/sslocal-manager-rust:{1}', secrets.DOCKER_USERNAME, steps.extract-date.outputs.date) }}
${{ matrix.registry == 'ghcr' && format('ghcr.io/{0}/sslocal-manager-rust:latest', steps.lowercase-owner.outputs.lower_owner) || format('{0}/sslocal-manager-rust:latest', secrets.DOCKER_USERNAME) }}
${{ matrix.registry == 'ghcr' && format('ghcr.io/{0}/sslocal-manager-rust:{1}-alpine', steps.lowercase-owner.outputs.lower_owner, steps.extract-date.outputs.date) || format('{0}/sslocal-manager-rust:{1}-alpine', secrets.DOCKER_USERNAME, steps.extract-date.outputs.date) }}
${{ matrix.registry == 'ghcr' && format('ghcr.io/{0}/sslocal-manager-rust:latest-alpine', steps.lowercase-owner.outputs.lower_owner) || format('{0}/sslocal-manager-rust:latest-alpine', secrets.DOCKER_USERNAME) }}
${{ matrix.registry == 'ghcr' && format('ghcr.io/{0}/sslocal-manager-rust:python', steps.lowercase-owner.outputs.lower_owner) || format('{0}/sslocal-manager-rust:python', secrets.DOCKER_USERNAME) }}
${{ matrix.registry == 'ghcr' && format('ghcr.io/{0}/sslocal-manager-rust:python3', steps.lowercase-owner.outputs.lower_owner) || format('{0}/sslocal-manager-rust:python3', secrets.DOCKER_USERNAME) }}
${{ matrix.registry == 'ghcr' && format('ghcr.io/{0}/sslocal-manager-rust:python3.13', steps.lowercase-owner.outputs.lower_owner) || format('{0}/sslocal-manager-rust:python3.13', secrets.DOCKER_USERNAME) }}
${{ matrix.registry == 'ghcr' && format('ghcr.io/{0}/sslocal-manager-rust:python3.13.6', steps.lowercase-owner.outputs.lower_owner) || format('{0}/sslocal-manager-rust:python3.13.6', secrets.DOCKER_USERNAME) }}
${{ matrix.registry == 'ghcr' && format('ghcr.io/{0}/sslocal-manager-rust:python-alpine', steps.lowercase-owner.outputs.lower_owner) || format('{0}/sslocal-manager-rust:python-alpine', secrets.DOCKER_USERNAME) }}
${{ matrix.registry == 'ghcr' && format('ghcr.io/{0}/sslocal-manager-rust:python3-alpine', steps.lowercase-owner.outputs.lower_owner) || format('{0}/sslocal-manager-rust:python3-alpine', secrets.DOCKER_USERNAME) }}
${{ matrix.registry == 'ghcr' && format('ghcr.io/{0}/sslocal-manager-rust:python3.13-alpine', steps.lowercase-owner.outputs.lower_owner) || format('{0}/sslocal-manager-rust:python3.13-alpine', secrets.DOCKER_USERNAME) }}
${{ matrix.registry == 'ghcr' && format('ghcr.io/{0}/sslocal-manager-rust:python3.13.6-alpine', steps.lowercase-owner.outputs.lower_owner) || format('{0}/sslocal-manager-rust:python3.13.6-alpine', secrets.DOCKER_USERNAME) }}
${{ matrix.registry == 'ghcr' && format('ghcr.io/{0}/sslocal-manager-rust:python-alpine3', steps.lowercase-owner.outputs.lower_owner) || format('{0}/sslocal-manager-rust:python-alpine3', secrets.DOCKER_USERNAME) }}
${{ matrix.registry == 'ghcr' && format('ghcr.io/{0}/sslocal-manager-rust:python3-alpine3', steps.lowercase-owner.outputs.lower_owner) || format('{0}/sslocal-manager-rust:python3-alpine3', secrets.DOCKER_USERNAME) }}
${{ matrix.registry == 'ghcr' && format('ghcr.io/{0}/sslocal-manager-rust:python3.13-alpine3', steps.lowercase-owner.outputs.lower_owner) || format('{0}/sslocal-manager-rust:python3.13-alpine3', secrets.DOCKER_USERNAME) }}
${{ matrix.registry == 'ghcr' && format('ghcr.io/{0}/sslocal-manager-rust:python3.13.6-alpine3', steps.lowercase-owner.outputs.lower_owner) || format('{0}/sslocal-manager-rust:python3.13.6-alpine3', secrets.DOCKER_USERNAME) }}
${{ matrix.registry == 'ghcr' && format('ghcr.io/{0}/sslocal-manager-rust:python-alpine3.22', steps.lowercase-owner.outputs.lower_owner) || format('{0}/sslocal-manager-rust:python-alpine3.22', secrets.DOCKER_USERNAME) }}
${{ matrix.registry == 'ghcr' && format('ghcr.io/{0}/sslocal-manager-rust:python3-alpine3.22', steps.lowercase-owner.outputs.lower_owner) || format('{0}/sslocal-manager-rust:python3-alpine3.22', secrets.DOCKER_USERNAME) }}
${{ matrix.registry == 'ghcr' && format('ghcr.io/{0}/sslocal-manager-rust:python3.13-alpine3.22', steps.lowercase-owner.outputs.lower_owner) || format('{0}/sslocal-manager-rust:python3.13-alpine3.22', secrets.DOCKER_USERNAME) }}
${{ matrix.registry == 'ghcr' && format('ghcr.io/{0}/sslocal-manager-rust:python3.13.6-alpine3.22', steps.lowercase-owner.outputs.lower_owner) || format('{0}/sslocal-manager-rust:python3.13.6-alpine3.22', secrets.DOCKER_USERNAME) }}
${{ matrix.registry == 'ghcr' && format('ghcr.io/{0}/sslocal-manager-rust:python-alpine3.22.1', steps.lowercase-owner.outputs.lower_owner) || format('{0}/sslocal-manager-rust:python-alpine3.22.1', secrets.DOCKER_USERNAME) }}
${{ matrix.registry == 'ghcr' && format('ghcr.io/{0}/sslocal-manager-rust:python3-alpine3.22.1', steps.lowercase-owner.outputs.lower_owner) || format('{0}/sslocal-manager-rust:python3-alpine3.22.1', secrets.DOCKER_USERNAME) }}
${{ matrix.registry == 'ghcr' && format('ghcr.io/{0}/sslocal-manager-rust:python3.13-alpine3.22.1', steps.lowercase-owner.outputs.lower_owner) || format('{0}/sslocal-manager-rust:python3.13-alpine3.22.1', secrets.DOCKER_USERNAME) }}
${{ matrix.registry == 'ghcr' && format('ghcr.io/{0}/sslocal-manager-rust:python3.13.6-alpine3.22.1', steps.lowercase-owner.outputs.lower_owner) || format('{0}/sslocal-manager-rust:python3.13.6-alpine3.22.1', secrets.DOCKER_USERNAME) }}
${{ matrix.registry == 'ghcr' && format('ghcr.io/{0}/sslocal-manager-rust:alpine', steps.lowercase-owner.outputs.lower_owner) || format('{0}/sslocal-manager-rust:alpine', secrets.DOCKER_USERNAME) }}
${{ matrix.registry == 'ghcr' && format('ghcr.io/{0}/sslocal-manager-rust:alpine3', steps.lowercase-owner.outputs.lower_owner) || format('{0}/sslocal-manager-rust:alpine3', secrets.DOCKER_USERNAME) }}
${{ matrix.registry == 'ghcr' && format('ghcr.io/{0}/sslocal-manager-rust:alpine3.22', steps.lowercase-owner.outputs.lower_owner) || format('{0}/sslocal-manager-rust:alpine3.22', secrets.DOCKER_USERNAME) }}
${{ matrix.registry == 'ghcr' && format('ghcr.io/{0}/sslocal-manager-rust:alpine3.22.1', steps.lowercase-owner.outputs.lower_owner) || format('{0}/sslocal-manager-rust:alpine3.22.1', secrets.DOCKER_USERNAME) }}