From c1adce5a9ede0bc14f2516f79efc025bf9c06d02 Mon Sep 17 00:00:00 2001 From: Stephan Richter Date: Sat, 3 Jan 2026 23:53:20 +0100 Subject: [PATCH] overhauling image creation and management --- .gitea/workflows/docker.yaml | 46 +++++++++++++++++++++++++++++------- Dockerfile | 7 ------ 2 files changed, 38 insertions(+), 15 deletions(-) diff --git a/.gitea/workflows/docker.yaml b/.gitea/workflows/docker.yaml index 364f152..e9bdfbd 100644 --- a/.gitea/workflows/docker.yaml +++ b/.gitea/workflows/docker.yaml @@ -5,6 +5,7 @@ on: branches: - main - dev + - workflow jobs: Docker-Build: @@ -14,19 +15,19 @@ jobs: uses: actions/checkout@v4 - name: Build docker image - run: | - docker build -t umbrella . + run: docker build -t umbrella . - name: Store tag date run: | - DATE=$(date +%Y%m%d_%H%M) - echo $DATE | tee /tmp/date + TAG=$(date +%Y%m%d_%H%M)_${{ gitea.ref_name }} + echo $TAG > /tmp/tag + echo Using '"'$TAG'"' as tag. - name: Tag image for upload run: | - DATE=$(cat /tmp/date) + TAG=$(cat /tmp/tag) docker tag umbrella ${{ secrets.REGISTRY_PATH }}/umbrella:${{ gitea.ref_name }} - docker tag umbrella ${{ secrets.REGISTRY_PATH }}/umbrella:$DATE_${{ gitea.ref_name }} + docker tag umbrella ${{ secrets.REGISTRY_PATH }}/umbrella:$TAG - name: Login to registry uses: docker/login-action@v2 @@ -37,6 +38,35 @@ jobs: - name: Push to registry run: | - DATE=$(cat /tmp/date) + TAG=$(cat /tmp/tag) docker push ${{ secrets.REGISTRY_PATH }}/umbrella:${{ gitea.ref_name }} - docker push ${{ secrets.REGISTRY_PATH }}/umbrella:$DATE_${{ gitea.ref_name }} + docker push ${{ secrets.REGISTRY_PATH }}/umbrella:$TAG + + Clean-Registry: + runs-on: ubuntu-latest + steps: + - name: Get tag list + run: | + TAGS="$(curl -s -u "${{ secrets.REGISTRY_USER }}:${{ secrets.REGISTRY_PASS }}" https://${{ secrets.REGISTRY_PATH }}/v2/umbrella/tags/list | jq -r ".tags[]")" + COUNT=$(echo "$TAGS" | wc -l) + if [ $COUNT -gt 10 ]; then + REMAIN=$((COUNT - 10)) + echo "$TAGS" | head -n $REMAIN > /tmp/old_tags + else + echo less than 10 tags, skipping cleanup + echo "" > /tmp/old_tags + fi + + - name: Remove tags + run: | + cat /tmp/old_tags | while read TAG; do + if [ -n "$TAG" ]; then + DIGEST=$(curl -u "${{ secrets.REGISTRY_USER }}:${{ secrets.REGISTRY_PASS }}" -sS -H 'Accept: application/vnd.docker.distribution.manifest.v2+json' -o /dev/null -w '%header{Docker-Content-Digest}' https://${{ secrets.REGISTRY_PATH }}/v2/umbrella/manifests/$TAG) + if [ -n "$DIGEST" ]; then + echo about to delete $TAG + curl -u "${{ secrets.REGISTRY_USER }}:${{ secrets.REGISTRY_PASS }}" -sS -X DELETE https://${{ secrets.REGISTRY_PATH }}/v2/umbrella/manifests/$DIGEST + else + echo failed to get digest for $TAG + fi + fi + done diff --git a/Dockerfile b/Dockerfile index 4062135..40ff6f9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,9 +8,6 @@ WORKDIR /home/svelte/Umbrella/frontend RUN npm install && npm run build - - - FROM alpine AS java_build RUN apk add bash git gradle fontconfig font-opensans openjdk21-jre ADD . /Umbrella @@ -19,9 +16,6 @@ COPY --from=svelte_build /home/svelte/Umbrella/frontend/dist web/src/main/resour RUN gradle --no-daemon build - - - FROM alpine RUN apk add bash fontconfig font-opensans graphviz openjdk21-jre weasyprint RUN adduser -D umbrella @@ -33,4 +27,3 @@ WORKDIR /home/umbrella RUN mkdir .config && ln -s /host/config.json .config/Umbrella.json EXPOSE 80 CMD java -jar jar/backend.jar -