mirror of
https://github.com/driftywinds/twitchrise-bot.git
synced 2025-12-19 11:43:33 +00:00
Create build.yml
This commit is contained in:
90
.github/workflows/build.yml
vendored
Normal file
90
.github/workflows/build.yml
vendored
Normal file
@@ -0,0 +1,90 @@
|
||||
name: Multi-Arch Docker Build & Push
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
image_name:
|
||||
description: "Base image name (without registry). Example: myuser/myimage"
|
||||
required: true
|
||||
tags:
|
||||
description: "Image tags (comma or space separated). Example: v1.01 latest beta"
|
||||
required: true
|
||||
dockerhub_user:
|
||||
description: "Docker Hub username (leave empty if not pushing to Docker Hub)"
|
||||
required: false
|
||||
push_to_dockerhub:
|
||||
description: "Push to Docker Hub? (true/false)"
|
||||
required: false
|
||||
default: "false"
|
||||
push_to_ghcr:
|
||||
description: "Push to GHCR? (true/false)"
|
||||
required: false
|
||||
default: "false"
|
||||
push_to_quay:
|
||||
description: "Push to Quay.io? (true/false)"
|
||||
required: false
|
||||
default: "false"
|
||||
|
||||
jobs:
|
||||
build-and-push:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v3
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
|
||||
- name: Parse tags
|
||||
id: tags
|
||||
run: |
|
||||
TAGS_INPUT="${{ github.event.inputs.tags }}"
|
||||
TAGS_INPUT=$(echo "$TAGS_INPUT" | tr ',' ' ')
|
||||
TAG_ARGS=""
|
||||
for TAG in $TAGS_INPUT; do
|
||||
if [ "${{ github.event.inputs.push_to_dockerhub }}" == "true" ]; then
|
||||
TAG_ARGS="$TAG_ARGS --tag docker.io/${{ github.event.inputs.dockerhub_user }}/${{ github.event.inputs.image_name }}:$TAG"
|
||||
fi
|
||||
if [ "${{ github.event.inputs.push_to_ghcr }}" == "true" ]; then
|
||||
TAG_ARGS="$TAG_ARGS --tag ghcr.io/${{ github.repository_owner }}/${{ github.event.inputs.image_name }}:$TAG"
|
||||
fi
|
||||
if [ "${{ github.event.inputs.push_to_quay }}" == "true" ]; then
|
||||
TAG_ARGS="$TAG_ARGS --tag quay.io/${{ github.event.inputs.image_name }}:$TAG"
|
||||
fi
|
||||
done
|
||||
echo "tags=$TAG_ARGS" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Log in to Docker Hub
|
||||
if: github.event.inputs.push_to_dockerhub == 'true'
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
username: ${{ github.event.inputs.dockerhub_user }}
|
||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
|
||||
- name: Log in to GHCR
|
||||
if: github.event.inputs.push_to_ghcr == 'true'
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.repository_owner }}
|
||||
password: ${{ secrets.GHCR_TOKEN }}
|
||||
|
||||
- name: Log in to Quay.io
|
||||
if: github.event.inputs.push_to_quay == 'true'
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
registry: quay.io
|
||||
username: ${{ secrets.QUAY_USERNAME }}
|
||||
password: ${{ secrets.QUAY_PASSWORD }}
|
||||
|
||||
- name: Build and Push Multi-Arch Image
|
||||
run: |
|
||||
docker buildx build \
|
||||
--platform linux/amd64,linux/arm64 \
|
||||
${{ steps.tags.outputs.tags }} \
|
||||
--push \
|
||||
-f Dockerfile \
|
||||
.
|
||||
Reference in New Issue
Block a user