#412 Build with 0.23.16 (#413) #825
Workflow file for this run
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
name: Publish multi-arch Docker images | |
on: | |
push: | |
tags: | |
- "release/*" | |
- "main/*" | |
- "devel/*" | |
- "feature/*" | |
- "daily/*" | |
jobs: | |
release: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
base: ["bookworm", "vanilla-bookworm", "noble", "vanilla-noble"] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Prepare for docker build | |
id: prepare | |
run: | | |
ref_type=${{ github.ref_type }} | |
echo "REF_TYPE: ["$ref_type"]" | |
ref_name=${{ github.ref_name }} | |
echo "REF_NAME: ["$ref_name"]" | |
ref=${{ github.ref }} | |
echo "REF: ["$ref"]" | |
distro_id=${{ matrix.base }} | |
image_name=${{secrets.DOCKER_USERNAME}}/mpd-alsa | |
declare -A vanilla_dict | |
vanilla_dict[bookworm]="no" | |
vanilla_dict[vanilla-bookworm]="yes" | |
vanilla_dict[noble]="no" | |
vanilla_dict[vanilla-noble]="yes" | |
is_vanilla=${vanilla_dict[${{ matrix.base }}]} | |
declare -A allows_amdv5_dict | |
allows_amdv5_dict[bookworm]="yes" | |
allows_amdv5_dict[vanilla-bookworm]="yes" | |
allows_amdv5_dict[noble]="no" | |
allows_amdv5_dict[vanilla-noble]="no" | |
armv5_allowed=${allows_amdv5_dict[${{ matrix.base }}]} | |
build_platforms="linux/amd64,linux/arm64/v8,linux/arm/v7" | |
if [ "${armv5_allowed}" = "yes" ]; then | |
build_platforms="${build_platforms},linux/arm/v5" | |
fi | |
declare -A base_images_dict | |
base_images_dict[bookworm]="giof71/mpd-compiler:bookworm" | |
base_images_dict[vanilla-bookworm]="debian:bookworm-slim" | |
base_images_dict[noble]="giof71/mpd-compiler:noble" | |
base_images_dict[vanilla-noble]="ubuntu:noble" | |
declare -A integer_upsampling_dict | |
integer_upsampling_dict[bookworm]="yes" | |
integer_upsampling_dict[vanilla-bookworm]="no" | |
integer_upsampling_dict[noble]="yes" | |
integer_upsampling_dict[vanilla-noble]="no" | |
integer_upsampling_support=${integer_upsampling_dict[${{ matrix.base }}]} | |
select_base_image=${base_images_dict[${{ matrix.base }}]} | |
declare -A upstream_image_from_matrix | |
upstream_image_from_matrix[bookworm]=debian:bookworm-slim | |
upstream_image_from_matrix[vanilla-bookworm]=debian:bookworm-slim | |
upstream_image_from_matrix[noble]=ubuntu:noble | |
upstream_image_from_matrix[vanilla-noble]=ubuntu:noble | |
declare -A special_tags | |
special_tags[bookworm]="${image_name}:stable,${image_name}:latest" | |
special_tags[vanilla-bookworm]="${image_name}:vanilla-stable,${image_name}:vanilla-latest,${image_name}:vanilla" | |
special_tags[noble]="${image_name}:ubuntu-current" | |
special_tags[vanilla-noble]="${image_name}:vanilla-ubuntu-current" | |
declare -A mpd_version_dict | |
mpd_version_dict[bookworm]=0.23.16 | |
mpd_version_dict[vanilla-bookworm]=0.23.12 | |
mpd_version_dict[noble]=0.23.16 | |
mpd_version_dict[vanilla-noble]=0.23.14 | |
# select mpd version | |
mpd_version=${mpd_version_dict["${distro_id}"]}; | |
tags="" | |
if [ "${ref_type}" = "branch" ]; then | |
echo "branch mode"; | |
if [ "${ref_name}" = "main" ]; then | |
echo "main branch"; | |
tags="${image_name}:main-${distro_id}"; | |
tags="$tags,${image_name}:main-${distro_id}-${mpd_version}"; | |
elif [ "${ref_name}" = "devel" ]; then | |
echo "devel branch"; | |
tags="${image_name}:devel-${distro_id}-${mpd_version}" | |
else | |
echo "other branch ["${ref_name}"]"; | |
tags="${image_name}:branch-${ref_name}-${distro_id}-${mpd_version}"; | |
fi | |
elif [ "${ref_type}" = "tag" ]; then | |
echo "tag mode"; | |
echo "tag is ["${ref_name}"]"; | |
tag_type=$(echo ${ref_name} | cut -d '/' -f 1) | |
tag_name=$(echo ${ref_name} | cut -d '/' -f 2) | |
if [ "${tag_type}" = "release" ]; then | |
echo "release tag"; | |
echo "Building now: ["$distro_id"]"; | |
tags="${tags},$image_name:${distro_id}"; | |
tags="${tags},$image_name:${distro_id}-${mpd_version}" | |
tags="$tags,$image_name:${distro_id}-${mpd_version}-${tag_name}" | |
select_special_tags=${special_tags["${distro_id}"]}; | |
if [[ -n "${select_special_tags}" ]]; then | |
echo "Found special tags for ["${distro_id}"]=["${select_special_tags}"]"; | |
tags="$tags,${select_special_tags}"; | |
else | |
echo "No special tag found for ["${distro_id}"]"; | |
fi | |
elif [ "${tag_type}" = "main" ]; then | |
echo "main tag"; | |
tags="${image_name}:main-${tag_name}-${distro_id}-${mpd_version}"; | |
elif [ "${tag_type}" = "devel" ]; then | |
echo "devel tag"; | |
tags="${image_name}:devel-${tag_name}-${distro_id}-${mpd_version}"; | |
elif [ "${tag_type}" = "feature" ]; then | |
echo "feature tag"; | |
tags="${image_name}:feature-${tag_name}-${distro_id}-${mpd_version}"; | |
elif [ "${tag_type}" = "daily" ]; then | |
echo "daily build"; | |
tags="${tags},${image_name}:daily-${distro_id}"; | |
tags="${tags},${image_name}:daily-${distro_id}-${mpd_version}"; | |
fi | |
fi | |
echo "Building tags: ["${tags}"]" | |
echo "RELEASE_TAGS=${tags}" >> $GITHUB_OUTPUT | |
echo "BASE_IMAGE=${select_base_image}" >> $GITHUB_OUTPUT | |
echo "IS_VANILLA=${is_vanilla}" >> $GITHUB_OUTPUT | |
echo "INTEGER_UPSAMPLING_SUPPORT=${integer_upsampling_support}" >> $GITHUB_OUTPUT | |
echo "BUILD_PLATFORMS=${build_platforms}" >> $GITHUB_OUTPUT | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v3 | |
with: | |
platforms: all | |
- name: Set up Docker Buildx | |
id: buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Login to DockerHub | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.DOCKER_USERNAME }} | |
password: ${{ secrets.DOCKER_PASSWORD }} | |
- name: Build and push | |
uses: docker/build-push-action@v5 | |
with: | |
context: . | |
build-args: | | |
BASE_IMAGE=${{ steps.prepare.outputs.BASE_IMAGE }} | |
INTEGER_UPSAMPLING_SUPPORT=${{ steps.prepare.outputs.INTEGER_UPSAMPLING_SUPPORT }} | |
IS_VANILLA=${{ steps.prepare.outputs.IS_VANILLA }} | |
platforms: ${{ steps.prepare.outputs.BUILD_PLATFORMS }} | |
push: true | |
tags: ${{ steps.prepare.outputs.RELEASE_TAGS }} |