diff --git a/.gitea/workflows/varnish-exporter.yml b/.gitea/workflows/varnish-exporter.yml index 8e7d1dc..e3086fe 100644 --- a/.gitea/workflows/varnish-exporter.yml +++ b/.gitea/workflows/varnish-exporter.yml @@ -11,47 +11,69 @@ jobs: validate: runs-on: ubuntu-latest outputs: - build: ${{ steps.new_version.outputs.build }} - version: ${{ steps.new_version.outputs.version }} + build: ${{ steps.check_version.outputs.build }} + version: ${{ steps.check_version.outputs.version }} steps: - uses: actions/checkout@v4 - - name: Get latest release version - id: new_version + - name: Check for latest release version + id: check_version run: | - CURRENT=`cat .version` - LATEST=`curl --silent https://api.github.com/repos/jonnenauha/prometheus_varnish_exporter/releases/latest | jq -r .tag_name | sed "s/v//"` - echo "current registered version: $CURRENT" - echo "latest version on remote repo: $LATEST" - echo "version=$LATEST" >> $GITHUB_OUTPUT - if awk "BEGIN {exit !($LATEST > $CURRENT)}"; then - echo $LATEST > .version - echo "build=true" >> $GITHUB_OUTPUT + # Define version file specific to this exporter + VERSION_FILE=".varnish-exporter.version" + + # Initialize if missing + if [ ! -f "$VERSION_FILE" ]; then echo "0.0.0" > "$VERSION_FILE"; fi + + CURRENT=$(cat "$VERSION_FILE") + # Get latest tag. Fail silently on curl error, verify json output + LATEST=$(curl --silent --fail https://api.github.com/repos/jonnenauha/prometheus_varnish_exporter/releases/latest | jq -r .tag_name | sed "s/^v//") + + if [ -z "$LATEST" ] || [ "$LATEST" = "null" ]; then + echo "::error::Failed to fetch latest version from GitHub" + exit 1 + fi + + echo "Current local version: $CURRENT" + echo "Latest remote version: $LATEST" + + # Version comparison using sort -V (Handles 1.10 > 1.9 correctly) + if [ "$CURRENT" != "$LATEST" ]; then + # Sort the two versions and take the last one (the highest) + NEWER=$(printf "%s\n%s" "$CURRENT" "$LATEST" | sort -V | tail -n1) + + if [ "$NEWER" = "$LATEST" ]; then + echo "New version detected: $LATEST" + echo "$LATEST" > "$VERSION_FILE" + echo "build=true" >> $GITHUB_OUTPUT + echo "version=$LATEST" >> $GITHUB_OUTPUT + echo "VERSION=$LATEST" >> $GITHUB_ENV + else + echo "Remote version ($LATEST) is not newer than local ($CURRENT). Skipping." + echo "build=false" >> $GITHUB_OUTPUT + fi else + echo "Up to date." echo "build=false" >> $GITHUB_OUTPUT fi - echo "VERSION=`cat .version`" >> $GITHUB_ENV - uses: stefanzweifel/git-auto-commit-action@v6 with: branch: main - file_pattern: '.version' + file_pattern: '.varnish-exporter.version' commit_user_name: gitea-actions[bot] commit_user_email: no-reply@brainsys.io - commit_message: gitea-actions auto commit - update version - tagging_message: '${{ env.VERSION }}' + commit_message: "chore(varnish): update version to ${{ env.VERSION }}" + tagging_message: 'varnish-v${{ env.VERSION }}' push_options: '--force' - name: DEBUG - build value - run: echo "${{ steps.new_version.outputs.build }}" - - - name: DEBUG - version value - run: echo "${{ steps.new_version.outputs.version }}" + run: echo "${{ steps.check_version.outputs.build }}" build: needs: validate if: needs.validate.outputs.build == 'true' - timeout-minutes: 2 + #timeout-minutes: 2 runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 diff --git a/.version b/.version deleted file mode 100644 index 9c6d629..0000000 --- a/.version +++ /dev/null @@ -1 +0,0 @@ -1.6.1