Skip to content

build tvheadend-sundtek #568

build tvheadend-sundtek

build tvheadend-sundtek #568

name: build tvheadend-sundtek
on:
push:
branches:
- 'main'
paths:
- 'tvheadend-sundtek/**'
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:
- name: Checkout
uses: actions/checkout@v3
- 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
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to DockerHub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build without pushing
uses: docker/build-push-action@v4
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 "::set-output name=digest::$DIGEST"
- 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 "::set-output name=digest::$DIGEST"
docker rmi 3x3cut0r/tvheadend-sundtek:temp_compare
- name: Compare digests
id: compare_digests
run: |
if [ "${{ steps.get_existing_digest.outputs.digest }}" != "${{ steps.get_new_digest.outputs.digest }}" ]; then
echo "::set-output name=result::different"
else
echo "::set-output name=result::same"
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: steps.compare_digests.outputs.result == 'different'