Build both the debian and arch flavours of Steam Headless in CI

This commit is contained in:
Josh.5
2023-07-10 19:54:57 +12:00
committed by Josh Sunnex
parent 35de069bf1
commit 3be80a920e
3 changed files with 33 additions and 16 deletions

View File

@@ -18,6 +18,10 @@ jobs:
name: Build Docker Image name: Build Docker Image
runs-on: ubuntu-latest runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
flavour: ["debian", "arch"]
steps: steps:
# Fetch shallow git repository # Fetch shallow git repository
@@ -43,28 +47,35 @@ jobs:
if: success() if: success()
id: prepare id: prepare
run: | run: |
echo "GITHUB_REF:${GITHUB_REF}" FLAVOUR=${{ matrix.flavour }}
echo "GITHUB_REPOSITORY:${GITHUB_REPOSITORY}" echo "FLAVOUR='${FLAVOUR}'"
echo "GITHUB_REF='${GITHUB_REF}'"
echo "GITHUB_REPOSITORY='${GITHUB_REPOSITORY}'"
DOCKER_IMAGE=docker.io/josh5/steam-headless DOCKER_IMAGE=docker.io/josh5/steam-headless
VERSION_TAG=${GITHUB_REF#refs/*/} VERSION_TAG=${GITHUB_REF#refs/*/}
DOCKER_TAGS="" DOCKER_TAGS=""
if [[ ${VERSION_TAG%/merge} == 'master' ]]; then if [[ ${VERSION_TAG%/merge} == 'master' ]]; then
DOCKER_TAGS="${DOCKER_TAGS}${DOCKER_IMAGE}:latest," if [[ ${FLAVOUR} == 'debian' ]]; then
DOCKER_TAGS="${DOCKER_TAGS}${DOCKER_IMAGE}:latest,"
fi
DOCKER_TAGS="${DOCKER_TAGS}${DOCKER_IMAGE}:${FLAVOUR},"
elif [[ ${VERSION_TAG%/merge} == 'staging' ]]; then elif [[ ${VERSION_TAG%/merge} == 'staging' ]]; then
DOCKER_TAGS="${DOCKER_TAGS}${DOCKER_IMAGE}:staging," DOCKER_TAGS="${DOCKER_TAGS}${DOCKER_IMAGE}:${FLAVOUR}-staging,"
elif [[ ${VERSION_TAG%/merge} =~ "dev-"* ]]; then elif [[ ${VERSION_TAG%/merge} =~ "dev-"* ]]; then
DOCKER_TAGS="${DOCKER_TAGS}${DOCKER_IMAGE}:${VERSION_TAG%/merge}," DOCKER_TAGS="${DOCKER_TAGS}${DOCKER_IMAGE}:${FLAVOUR}-${VERSION_TAG%/merge},"
fi fi
if [[ ${GITHUB_REF} == refs/tags/* ]]; then if [[ ${GITHUB_REF} == refs/tags/* ]]; then
VERSION=${GITHUB_REF#refs/tags/} VERSION=${GITHUB_REF#refs/tags/}
if [[ ${VERSION} =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}[-\w]*$ ]]; then if [[ ${VERSION} =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}[-\w]*$ ]]; then
DOCKER_TAGS="${DOCKER_TAGS}${DOCKER_IMAGE}:${VERSION}," DOCKER_TAGS="${DOCKER_TAGS}${DOCKER_IMAGE}:${FLAVOUR}-${VERSION},"
DOCKER_TAGS="${DOCKER_TAGS}${DOCKER_IMAGE}:latest," if [[ ${FLAVOUR} == 'debian' ]]; then
DOCKER_TAGS="${DOCKER_TAGS}${DOCKER_IMAGE}:latest,"
fi
fi fi
fi fi
echo "DOCKER_TAGS='${DOCKER_TAGS}'"
echo "Build: [$(date +"%F %T")] [${GITHUB_REF_NAME}] [${GITHUB_SHA}]" > ./overlay/version.txt echo "Build: [$(date +"%F %T")] [${GITHUB_REF_NAME}] [${GITHUB_SHA}] [${FLAVOUR}]" > ./overlay/version.txt
DOCKER_PUSH="true" DOCKER_PUSH="true"
if [[ ${DOCKER_IMAGE} != 'docker.io/josh5/steam-headless' ]]; then if [[ ${DOCKER_IMAGE} != 'docker.io/josh5/steam-headless' ]]; then
@@ -76,11 +87,16 @@ jobs:
if [[ ${VERSION_TAG%/merge} =~ ^[0-9]+$ ]]; then if [[ ${VERSION_TAG%/merge} =~ ^[0-9]+$ ]]; then
DOCKER_PUSH="false" DOCKER_PUSH="false"
fi fi
if [[ "X${DOCKER_TAGS}" == "X" ]]; then
DOCKER_PUSH="false"
fi
echo "DOCKER_PUSH='${DOCKER_PUSH}'"
cat ./overlay/version.txt
echo ::set-output name=docker_image::${DOCKER_IMAGE} echo "docker_image=${DOCKER_IMAGE}" >> $GITHUB_OUTPUT
echo ::set-output name=docker_tags::$(echo ${DOCKER_TAGS} | sed 's/,$//') echo "docker_tags=$(echo ${DOCKER_TAGS} | sed 's/,$//')" >> $GITHUB_OUTPUT
echo ::set-output name=docker_platforms::linux/amd64 echo "docker_platforms=linux/amd64" >> $GITHUB_OUTPUT
echo ::set-output name=docker_push::${DOCKER_PUSH} echo "docker_push=${DOCKER_PUSH}" >> $GITHUB_OUTPUT
# Cache the build # Cache the build
- name: Cache Docker layers - name: Cache Docker layers
@@ -88,9 +104,9 @@ jobs:
id: cache id: cache
with: with:
path: /tmp/.buildx-cache path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }} key: ${{ runner.os }}-buildx-${{ matrix.flavour }}-${{ github.sha }}
restore-keys: | restore-keys: |
${{ runner.os }}-buildx- ${{ runner.os }}-buildx-${{ matrix.flavour }}-
# Login to Docker Hub # Login to Docker Hub
- name: Login to Docker Hub - name: Login to Docker Hub
@@ -106,7 +122,7 @@ jobs:
uses: docker/build-push-action@v2 uses: docker/build-push-action@v2
with: with:
context: . context: .
file: Dockerfile file: Dockerfile.${{ matrix.flavour }}
pull: true pull: true
platforms: ${{ steps.prepare.outputs.docker_platforms }} platforms: ${{ steps.prepare.outputs.docker_platforms }}
push: ${{ steps.prepare.outputs.docker_push }} push: ${{ steps.prepare.outputs.docker_push }}

View File

@@ -106,6 +106,7 @@ RUN \
# Install yay # Install yay
RUN \ RUN \
echo "**** Install Yay ****" \ echo "**** Install Yay ****" \
&& pacman -Sy \
&& su - default -c 'git clone https://aur.archlinux.org/yay.git /tmp/yay && cd /tmp/yay && makepkg --noconfirm --syncdeps --install' \ && su - default -c 'git clone https://aur.archlinux.org/yay.git /tmp/yay && cd /tmp/yay && makepkg --noconfirm --syncdeps --install' \
&& \ && \
echo "**** Section cleanup ****" \ echo "**** Section cleanup ****" \