diff --git a/.forgejo/workflows/build.yml b/.forgejo/workflows/build.yml index bc4e2af..569a4e1 100644 --- a/.forgejo/workflows/build.yml +++ b/.forgejo/workflows/build.yml @@ -38,8 +38,25 @@ jobs: echo "NEWEST_VERSION=$NEWEST_VERSION" >> $GITHUB_ENV echo "FILENAME=$FILENAME" >> $GITHUB_ENV + - name: Determine if update is needed + run: | + last_version_file=".last_version" + last_dockerfile_hash_file=".dockerfile_hash" + + last_version=$(cat $last_version_file 2>/dev/null || echo "none") + last_dockerfile_hash=$(cat $last_dockerfile_hash_file 2>/dev/null || echo "none") + dockerfile_hash=$(sha256sum Dockerfile | awk '{print $1}' || echo "nuh") + + update="false" + if [ ${{ github.event_name }} == "workflow_dispatch" ] || [ "$last_version" != "$NEWEST_VERSION" ] || [ "$last_dockerfile_hash" != "$dockerfile_hash" ]; then + update="true" + fi + + echo "UPDATE=$update" >> $GITHUB_ENV + echo "DOCKERFILE_HASH=$dockerfile_hash" >> $GITHUB_ENV - name: Start Docker daemon + if: env.UPDATE == 'true' run: | dockerd-entrypoint.sh & for i in {1..10}; do @@ -50,6 +67,7 @@ jobs: docker info || { echo "Docker daemon failed to start."; exit 1; } - name: Get and verify Buildfiles + if: env.UPDATE == 'true' run: | curl -LOs "$REPO_URL/$FILENAME" curl -LOs "$REPO_URL/$FILENAME.sha512" @@ -59,7 +77,19 @@ jobs: - name: Build and push Docker image + if: env.UPDATE == 'true' run: | - docker build --build-arg NPROC=1 -t $DOCKER_REGISTRY/$REGISTRY_USER/$PACKAGE:true-edge . + docker build --build-arg NPROC=1 -t $DOCKER_REGISTRY/$REGISTRY_USER/$PACKAGE:latest -t $DOCKER_REGISTRY/$REGISTRY_USER/$PACKAGE:$NEWEST_VERSION . echo "${{ secrets.DOCKER_PASSWORD }}" | docker login $DOCKER_REGISTRY -u $REGISTRY_USER --password-stdin docker push --all-tags $DOCKER_REGISTRY/$REGISTRY_USER/$PACKAGE + echo "$NEWEST_VERSION" > .last_version + echo "$DOCKERFILE_HASH" > .dockerfile_hash + + - name: Commit updated metadata + if: env.UPDATE == 'true' + run: | + git config user.name "$COMMIT_AUTHOR_NAME" + git config user.email "$COMMIT_AUTHOR_EMAIL" + git add .last_version .dockerfile_hash + git commit -m "$COMMIT_MESSAGE" || echo "No commit" + git push \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 5c5d2b4..e56e437 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,3 @@ FROM scratch ADD $FILENAME / -RUN apk upgrade --no-cache -CMD ["/bin/sh"] +CMD ["/bin/sh"] \ No newline at end of file