name: Alpine Package Auto-Rebuild on: workflow_dispatch: schedule: - cron: '0 1 * * *' jobs: build: runs-on: dind steps: - name: Install dependencies for other steps shell: sh run: | apk add --no-cache git nodejs npm bash sed curl - name: Checkout repo uses: actions/checkout@v3 - name: Check for latest package version id: check shell: sh run: | PACKAGE="curl" LATEST=$(apk policy "$PACKAGE" | awk '/^[[:space:]]*[0-9]/ { gsub(":", "", $1); print $1; exit }') echo "Extracted version: $LATEST" echo "LATEST_VERSION=$LATEST" >> $GITHUB_ENV echo "latest_version=$LATEST" >> $GITHUB_OUTPUT - name: Compare with last known version shell: sh run: | FILE=".last_version" [ -f "$FILE" ] && LAST=$(cat "$FILE") || LAST="none" echo "Last known version: $LAST" echo "Current version: $LATEST_VERSION" if [ "$LAST" != "$LATEST_VERSION" ]; then echo "UPDATE=true" >> $GITHUB_ENV else echo "UPDATE=false" >> $GITHUB_ENV fi FILE=".last_rebuild" [ -f "$FILE" ] && LAST=$(cat "$FILE") || LAST="0" echo "Last rebuild: $LAST" [ $(( $(date +%s)/86400 - $LAST )) -gt 3 ] && echo "UPDATE=true" >> $GITHUB_ENV - name: Start dockerd if: env.UPDATE == 'true' shell: sh run: | dockerd-entrypoint.sh & timeout=30 while ! docker info >/dev/null 2>&1; do if [ $timeout -le 0 ]; then echo "Docker daemon failed to start." exit 1 fi echo "Waiting for Docker daemon..." sleep 3 timeout=$((timeout - 3)) done - name: Build and push Docker image if: env.UPDATE == 'true' shell: sh run: | docker build -t git.shork.ch/melody/docker-test:latest -t git.shork.ch/melody/docker-test:$LATEST_VERSION . echo "${{ secrets.DOCKER_PASSWORD }}" | docker login git.shork.ch -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin docker push git.shork.ch/melody/docker-test:latest echo "$LATEST_VERSION" > .last_version echo $(( $(date +%s) / 86400 )) > .last_rebuild - name: Commit updated version file if: env.UPDATE == 'true' shell: sh run: | git config user.name "forgejo-runner" git config user.email "runner@forgejo.local" git add .last_version git commit -m "Update tracked version to $LATEST_VERSION" git push