Build both the debian and arch flavours of Steam Headless in CI
This commit is contained in:
48
.github/workflows/build_ci.yml
vendored
48
.github/workflows/build_ci.yml
vendored
@@ -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 }}
|
||||||
|
|||||||
@@ -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 ****" \
|
||||||
|
|||||||
Reference in New Issue
Block a user