Update the SoulSync base version, Docker release workflow default, and What's New notes so the next release surfaces as 2.6.1.
76 lines
2.6 KiB
YAML
76 lines
2.6 KiB
YAML
name: Build and Push Docker Image
|
|
|
|
on:
|
|
# Auto-build :latest on every push to main
|
|
push:
|
|
branches:
|
|
- main
|
|
# Manual trigger for tagged releases (e.g. 2.33)
|
|
workflow_dispatch:
|
|
inputs:
|
|
version_tag:
|
|
description: 'Version tag (e.g. 2.6.1)'
|
|
required: true
|
|
default: '2.6.1'
|
|
|
|
jobs:
|
|
build-and-push:
|
|
if: github.repository == 'Nezreka/SoulSync'
|
|
runs-on: ubuntu-latest
|
|
|
|
permissions:
|
|
contents: read
|
|
packages: write
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v6
|
|
|
|
- name: Set lowercase owner
|
|
run: echo "OWNER=${GITHUB_REPOSITORY_OWNER,,}" >> "$GITHUB_ENV"
|
|
|
|
- name: Set up QEMU
|
|
uses: docker/setup-qemu-action@v4
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v4
|
|
|
|
- name: Log in to Docker Hub
|
|
uses: docker/login-action@v4
|
|
with:
|
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
|
|
- name: Log in to GHCR
|
|
uses: docker/login-action@v4
|
|
with:
|
|
registry: ghcr.io
|
|
username: ${{ env.OWNER }}
|
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Build and push
|
|
uses: docker/build-push-action@v7
|
|
with:
|
|
context: .
|
|
platforms: linux/amd64,linux/arm64
|
|
push: true
|
|
pull: true
|
|
cache-from: type=gha
|
|
cache-to: type=gha,mode=max
|
|
build-args: |
|
|
COMMIT_SHA=${{ github.sha }}
|
|
tags: |
|
|
boulderbadgedad/soulsync:latest
|
|
ghcr.io/${{ env.OWNER }}/soulsync:latest
|
|
${{ inputs.version_tag && format('boulderbadgedad/soulsync:{0}', inputs.version_tag) || '' }}
|
|
${{ inputs.version_tag && format('ghcr.io/{0}/soulsync:{1}', env.OWNER, inputs.version_tag) || '' }}
|
|
|
|
- name: Announce release to Discord
|
|
if: success() && inputs.version_tag
|
|
env:
|
|
DISCORD_WEBHOOK: ${{ secrets.DISCORD_ANNOUNCEMENTS_WEBHOOK }}
|
|
run: |
|
|
if [ -z "$DISCORD_WEBHOOK" ]; then echo "No webhook configured, skipping"; exit 0; fi
|
|
curl -s -H "Content-Type: application/json" \
|
|
-d "{\"embeds\": [{\"title\": \"SoulSync v${{ inputs.version_tag }} Released\", \"description\": \"A new version of SoulSync is available! Pull the latest Docker image to update.\n\n\`\`\`\ndocker pull boulderbadgedad/soulsync:${{ inputs.version_tag }}\n\`\`\`\", \"color\": 5025616, \"footer\": {\"text\": \"SoulSync Auto-Release\"}, \"timestamp\": \"$(date -u +%Y-%m-%dT%H:%M:%SZ)\"}]}" \
|
|
"$DISCORD_WEBHOOK"
|