name: Build and Push teamspeak-server Docker Images 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 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 - name: Build and Push alpine image if: needs.check-digests.outputs.alpine_changed == 'true' run: | docker buildx build --platform linux/amd64 --push -t gitea.fithwum.tech/fithwum/teamspeak-server:alpine ./alpine - name: Build and Push basic image if: needs.check-digests.outputs.debian_changed == 'true' run: | docker buildx build --platform linux/amd64 --push -t gitea.fithwum.tech/fithwum/teamspeak-server:basic ./basic - name: Build and Push debian image if: needs.check-digests.outputs.debian_changed == 'true' run: | 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