diff --git a/.gitea/workflows/base-build.yml b/.gitea/workflows/base-build.yml index 1015899..f48a86c 100644 --- a/.gitea/workflows/base-build.yml +++ b/.gitea/workflows/base-build.yml @@ -4,57 +4,171 @@ on: push: branches: - main + schedule: + - cron: '30 */6 * * *' jobs: + check-digests: + runs-on: docker-build + outputs: + alpine_changed: ${{ steps.set_output.outputs.alpine_changed }} + debian_changed: ${{ steps.set_output.outputs.debian_changed }} + + steps: + - name: Checkout repo + uses: actions/checkout@v3 + + - name: Get current base image digests + id: get_digests + run: | + mkdir -p .cache + + alpine_digest=$(docker pull alpine:latest > /dev/null && docker inspect --format='{{index .RepoDigests 0}}' alpine:latest) + debian_digest=$(docker pull gitea.fithwum.tech/fithwum/debian-base:bookworm > /dev/null && docker inspect --format='{{index .RepoDigests 0}}' gitea.fithwum.tech/fithwum/debian-base:bookworm) + + echo "alpine_digest=$alpine_digest" >> $GITHUB_ENV + echo "debian_digest=$debian_digest" >> $GITHUB_ENV + + echo "$alpine_digest" > .cache/alpine.digest.new + echo "$debian_digest" > .cache/debian.digest.new + + echo "::set-output name=alpine_digest::$alpine_digest" + echo "::set-output name=debian_digest::$debian_digest" + + - name: Compare with previous digests + id: set_output + run: | + alpine_changed=false + debian_changed=false + + if [ ! -f .cache/alpine.digest.old ] || [ "$(cat .cache/alpine.digest.old)" != "$(cat .cache/alpine.digest.new)" ]; then + alpine_changed=true + fi + + if [ ! -f .cache/debian.digest.old ] || [ "$(cat .cache/debian.digest.old)" != "$(cat .cache/debian.digest.new)" ]; then + debian_changed=true + fi + + echo "alpine_changed=$alpine_changed" >> $GITHUB_OUTPUT + echo "debian_changed=$debian_changed" >> $GITHUB_OUTPUT + + - name: Save new digests + run: | + mv .cache/alpine.digest.new .cache/alpine.digest.old + mv .cache/debian.digest.new .cache/debian.digest.old + + git config user.name "${{ secrets.GIT_USERNAME }}" + git config user.email "${{ secrets.GIT_EMAIL }}" + git add .cache/*.digest.old + git commit -m "Update digest cache" || echo "No changes to commit" + git push + build: + needs: check-digests + if: needs.check-digests.outputs.alpine_changed == 'true' || needs.check-digests.outputs.debian_changed == 'true' runs-on: docker-build steps: - name: Checkout code uses: actions/checkout@v3 - - name: Set image tags and names - id: vars - run: | - IMAGE_REGISTRY=gitea.fithwum.tech - IMAGE_ORG=fithwum - IMAGE_REPO=teamspeak-server - - # Set the tag based on the folder name (alpine, basic, debian) - IMAGE_TAG_ALPINE=alpine - IMAGE_TAG_BASIC=basic - IMAGE_TAG_DEBIAN=debian - - echo "IMAGE_TAG_ALPINE=${IMAGE_TAG_ALPINE}" >> $GITHUB_ENV - echo "IMAGE_TAG_BASIC=${IMAGE_TAG_BASIC}" >> $GITHUB_ENV - echo "IMAGE_TAG_DEBIAN=${IMAGE_TAG_DEBIAN}" >> $GITHUB_ENV - - # Set image names for each subfolder Dockerfile - IMAGE_ALPINE=${IMAGE_REGISTRY}/${IMAGE_ORG}/${IMAGE_REPO}:${IMAGE_TAG_ALPINE} - IMAGE_BASIC=${IMAGE_REGISTRY}/${IMAGE_ORG}/${IMAGE_REPO}:${IMAGE_TAG_BASIC} - IMAGE_DEBIAN=${IMAGE_REGISTRY}/${IMAGE_ORG}/${IMAGE_REPO}:${IMAGE_TAG_DEBIAN} - - echo "IMAGE_ALPINE=${IMAGE_ALPINE}" >> $GITHUB_ENV - echo "IMAGE_BASIC=${IMAGE_BASIC}" >> $GITHUB_ENV - echo "IMAGE_DEBIAN=${IMAGE_DEBIAN}" >> $GITHUB_ENV - - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Log in to Gitea Registry run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login gitea.fithwum.tech -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin - # Build and Push alpine Docker Image - - name: Build and Push alpine Docker Image + - name: Build and Push alpine image + if: needs.check-digests.outputs.alpine_changed == 'true' run: | - docker buildx build --platform linux/amd64 --push -t ${{ env.IMAGE_ALPINE }} ./alpine + docker buildx build --platform linux/amd64 --push -t gitea.fithwum.tech/fithwum/teamspeak-server:alpine ./alpine - # Build and Push basic Docker Image - - name: Build and Push basic Docker Image + - name: Build and Push basic image + if: needs.check-digests.outputs.debian_changed == 'true' run: | - docker buildx build --platform linux/amd64 --push -t ${{ env.IMAGE_BASIC }} ./basic + docker buildx build --platform linux/amd64 --push -t gitea.fithwum.tech/fithwum/teamspeak-server:basic ./basic - # Build and Push debian Docker Image - - name: Build and Push debian Docker Image + - name: Build and Push debian image + if: needs.check-digests.outputs.debian_changed == 'true' run: | - docker buildx build --platform linux/amd64 --push -t ${{ env.IMAGE_DEBIAN }} ./debian + docker buildx build --platform linux/amd64 --push -t gitea.fithwum.tech/fithwum/teamspeak-server:debian ./debian + + + + + + + + + + + + + + + + + + + + +# name: Build and Push teamspeak-server Docker Images + +# on: +# push: +# branches: +# - main + +# jobs: +# build: +# runs-on: docker-build + +# steps: +# - name: Checkout code +# uses: actions/checkout@v3 + +# - name: Set image tags and names +# id: vars +# run: | +# IMAGE_REGISTRY=gitea.fithwum.tech +# IMAGE_ORG=fithwum +# IMAGE_REPO=teamspeak-server + +# # Set the tag based on the folder name (alpine, basic, debian) +# IMAGE_TAG_ALPINE=alpine +# IMAGE_TAG_BASIC=basic +# IMAGE_TAG_DEBIAN=debian + +# echo "IMAGE_TAG_ALPINE=${IMAGE_TAG_ALPINE}" >> $GITHUB_ENV +# echo "IMAGE_TAG_BASIC=${IMAGE_TAG_BASIC}" >> $GITHUB_ENV +# echo "IMAGE_TAG_DEBIAN=${IMAGE_TAG_DEBIAN}" >> $GITHUB_ENV + +# # Set image names for each subfolder Dockerfile +# IMAGE_ALPINE=${IMAGE_REGISTRY}/${IMAGE_ORG}/${IMAGE_REPO}:${IMAGE_TAG_ALPINE} +# IMAGE_BASIC=${IMAGE_REGISTRY}/${IMAGE_ORG}/${IMAGE_REPO}:${IMAGE_TAG_BASIC} +# IMAGE_DEBIAN=${IMAGE_REGISTRY}/${IMAGE_ORG}/${IMAGE_REPO}:${IMAGE_TAG_DEBIAN} + +# echo "IMAGE_ALPINE=${IMAGE_ALPINE}" >> $GITHUB_ENV +# echo "IMAGE_BASIC=${IMAGE_BASIC}" >> $GITHUB_ENV +# echo "IMAGE_DEBIAN=${IMAGE_DEBIAN}" >> $GITHUB_ENV + +# - name: Set up Docker Buildx +# uses: docker/setup-buildx-action@v3 + +# - name: Log in to Gitea Registry +# run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login gitea.fithwum.tech -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin + +# # Build and Push alpine Docker Image +# - name: Build and Push alpine Docker Image +# run: | +# docker buildx build --platform linux/amd64 --push -t ${{ env.IMAGE_ALPINE }} ./alpine + +# # Build and Push basic Docker Image +# - name: Build and Push basic Docker Image +# run: | +# docker buildx build --platform linux/amd64 --push -t ${{ env.IMAGE_BASIC }} ./basic + +# # Build and Push debian Docker Image +# - name: Build and Push debian Docker Image +# run: | +# docker buildx build --platform linux/amd64 --push -t ${{ env.IMAGE_DEBIAN }} ./debian diff --git a/basic/Dockerfile b/basic/Dockerfile index b87b81f..1f8dd20 100644 --- a/basic/Dockerfile +++ b/basic/Dockerfile @@ -1,4 +1,4 @@ -FROM gitea.fithwum.tech/fithwum/debian-base:bullseye +FROM gitea.fithwum.tech/fithwum/debian-base:bookworm LABEL maintainer="fithwum" # URL's for files diff --git a/debian/Dockerfile b/debian/Dockerfile index 29dd38e..b3830bb 100644 --- a/debian/Dockerfile +++ b/debian/Dockerfile @@ -1,4 +1,4 @@ -FROM gitea.fithwum.tech/fithwum/debian-base:bullseye +FROM gitea.fithwum.tech/fithwum/debian-base:bookworm LABEL maintainer="fithwum" # URL's for files