Skip to content

build tvheadend-sundtek #639

build tvheadend-sundtek

build tvheadend-sundtek #639

name: build tvheadend-sundtek
on:
push:
branches:
- 'main'
paths:
- 'tvheadend-sundtek/**'
- '!tvheadend-sundtek/README.md'
schedule:
# cron: 'min hour day month weekday'
- cron: '0 4 * * 3' # every wednesday on 04:00
workflow_dispatch:
inputs:
logLevel:
description: 'Log level'
required: true
default: 'warning'
tags:
description: 'run action manually'
jobs:
multi:
runs-on: ubuntu-latest
steps:
# https://github.com/actions/checkout
- name: Checkout
uses: actions/checkout@v4
- name: Update Version, commit and push changes
run: |
mkdir -p tvheadend-sundtek
cd tvheadend-sundtek
wget https://github.com/linuxserver/docker-tvheadend/releases
cat releases | grep "releases/tag/" | head -n 1 > VERSION
rm releases
VERSION_STRING=$(cat VERSION | grep 'releases/tag/' | head -n 1)
VERSION=${VERSION_STRING##*releases/tag/}
echo $VERSION | cut -d '"' -f 1 > VERSION
VERSION=$(cat VERSION)
git config --global user.name "${{ secrets.GIT_USERNAME }}"
git config --global user.email "${{ secrets.GIT_EMAIL }}"
git add -A
git diff --quiet && git diff --staged --quiet || git commit -m "version updated ($VERSION)"
git push
# https://github.com/docker/setup-qemu-action
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
# https://github.com/docker/setup-buildx-action
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
# https://github.com/docker/login-action
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
# https://github.com/docker/build-push-action
- name: Build and push
uses: docker/build-push-action@v5
with:
context: ./tvheadend-sundtek
file: ./tvheadend-sundtek/Dockerfile
platforms: linux/amd64,linux/arm64
push: false
tags: 3x3cut0r/tvheadend-sundtek:latest
- name: Pull existing image
run: docker pull 3x3cut0r/tvheadend-sundtek:latest || echo "Image not found"
- name: Get existing image digest
id: get_existing_digest
run: |
DIGEST=$(docker inspect --format='{{index .RepoDigests 0}}' 3x3cut0r/tvheadend-sundtek:latest | sed 's/.*@//')
echo "DIGEST=$DIGEST" >> $GITHUB_ENV
- name: Get new image digest
id: get_new_digest
run: |
docker tag 3x3cut0r/tvheadend-sundtek:latest 3x3cut0r/tvheadend-sundtek:temp_compare
DIGEST=$(docker push 3x3cut0r/tvheadend-sundtek:temp_compare | sed -n '/digest: sha256:/p' | sed 's/digest: sha256://')
echo "NEW_DIGEST=$DIGEST" >> $GITHUB_ENV
docker rmi 3x3cut0r/tvheadend-sundtek:temp_compare || true
IMAGE_ID=$(docker images -q 3x3cut0r/tvheadend-sundtek:temp_compare)
if [ "$IMAGE_ID" != "" ]; then
docker rmi $IMAGE_ID || true
fi
- name: Compare digests
id: compare_digests
run: |
if [ "$DIGEST" != "$NEW_DIGEST" ]; then
echo "RESULT=different" >> $GITHUB_ENV
else
echo "RESULT=same" >> $GITHUB_ENV
fi
- name: Push if different
uses: docker/build-push-action@v4
with:
context: ./tvheadend-sundtek
file: ./tvheadend-sundtek/Dockerfile
platforms: linux/amd64,linux/arm64
push: true
tags: 3x3cut0r/tvheadend-sundtek:latest
if: env.RESULT == 'different'