build tvheadend-sundtek #620
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: 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' |