Files
prometheus-exporters/.gitea/workflows/varnish-exporter.yml
Ludovic Cartier 213113d522
All checks were successful
/ validate (push) Successful in 5s
/ build (push) Successful in 37s
add arm64
2026-02-09 19:31:31 +01:00

160 lines
6.7 KiB
YAML

on:
schedule:
- cron: '0 5 * * *'
push:
tags:
- '*'
branches:
- "*"
jobs:
validate:
runs-on: ubuntu-latest
outputs:
build: ${{ steps.check_version.outputs.build }}
version: ${{ steps.check_version.outputs.version }}
steps:
- uses: actions/checkout@v4
- name: Check for latest release version
id: check_version
run: |
# 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
- uses: stefanzweifel/git-auto-commit-action@v6
with:
branch: main
file_pattern: '.varnish-exporter.version'
commit_user_name: gitea-actions[bot]
commit_user_email: no-reply@brainsys.io
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.check_version.outputs.build }}"
build:
needs: validate
if: needs.validate.outputs.build == 'true'
timeout-minutes: 2
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set version to env vars
run: |
echo "${{ needs.validate.outputs.version }}"
echo "VERSION=${{ needs.validate.outputs.version }}" >> $GITHUB_ENV
- name: Setup go
uses: actions/setup-go@v4
with:
go-version: '>=1.20'
- name: Checkout varnish exporter
run: git clone https://github.com/jonnenauha/prometheus_varnish_exporter varnish
- name: Build varnish exporter for GNU/Linux / amd64
run: CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o ../bin/prometheus-varnish-exporter-amd64
working-directory: varnish
- name: Build varnish exporter for GNU/Linux / arm64
run: CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -ldflags="-s -w" -o ../bin/prometheus-varnish-exporter-arm64
working-directory: varnish
- name: Create deb dir tree
run: |
mkdir -p varnish-exporter-amd64/usr/bin
mkdir -p varnish-exporter-amd64/DEBIAN
mkdir -p varnish-exporter-arm64/usr/bin
mkdir -p varnish-exporter-arm64/DEBIAN
- name: Copy binaries
run: |
cp bin/prometheus-varnish-exporter-amd64 varnish-exporter-amd64/usr/bin/prometheus-varnish-exporter
cp bin/prometheus-varnish-exporter-arm64 varnish-exporter-arm64/usr/bin/prometheus-varnish-exporter
- name: Prepare amd64 control file
run: |
echo "Package: prometheus-varnish-exporter" > varnish-exporter-amd64/DEBIAN/control
echo "Version: $VERSION" >> varnish-exporter-amd64/DEBIAN/control
echo "Maintainer: Ludovic Cartier <ludovic.cartier@brainsys.io>" >> varnish-exporter-amd64/DEBIAN/control
echo "Architecture: amd64" >> varnish-exporter-amd64/DEBIAN/control
echo "Homepage: https://git.brainsys.io/packages/prometheus-exporters" >> varnish-exporter-amd64/DEBIAN/control
echo "Description: Prometheus Varnish Exporter package for GNU/Linux Debian" >> varnish-exporter-amd64/DEBIAN/control
- name: Prepare arm64 control file
run: |
echo "Package: prometheus-varnish-exporter" > varnish-exporter-arm64/DEBIAN/control
echo "Version: $VERSION" >> varnish-exporter-arm64/DEBIAN/control
echo "Maintainer: Ludovic Cartier <ludovic.cartier@brainsys.io>" >> varnish-exporter-arm64/DEBIAN/control
echo "Architecture: arm64" >> varnish-exporter-arm64/DEBIAN/control
echo "Homepage: https://git.brainsys.io/packages/prometheus-exporters" >> varnish-exporter-arm64/DEBIAN/control
echo "Description: Prometheus Varnish Exporter package for GNU/Linux Debian" >> varnish-exporter-arm64/DEBIAN/control
- name: Build deb files
run: |
dpkg -b varnish-exporter-amd64 bin/prometheus-varnish-exporter_$VERSION-1_amd64.deb
dpkg -b varnish-exporter-arm64 bin/prometheus-varnish-exporter_$VERSION-1_arm64.deb
- name: Release packages
run: |
curl -s -u "${{ secrets.PACKAGE_TOKEN }}" --upload-file bin/prometheus-varnish-exporter_$VERSION-1_amd64.deb \
https://git.brainsys.io/api/packages/packages/debian/pool/stable/main/upload
curl -s -u "${{ secrets.PACKAGE_TOKEN }}" --upload-file bin/prometheus-varnish-exporter_$VERSION-1_arm64.deb \
https://git.brainsys.io/api/packages/packages/debian/pool/stable/main/upload
- name: Create release
uses: akkuman/gitea-release-action@v1
with:
tag_name: "${{ env.VERSION }}"
files: |-
bin/**
token: "${{ secrets.RELEASE_TOKEN }}"
- name: Send notification to mattermost
uses: rtCamp/action-slack-notify@v2
env:
SLACK_WEBHOOK: "${{ secrets.MATTERMOST_WEBHOOK }}"
SLACK_USERNAME: gitea-bot
SLACK_CHANNEL: gitea-actions
SLACK_COLOR: "${{ job.status }}"
SLACK_CUSTOM_PAYLOAD: '{"username": "gitea-bot", "icon_url": "https://w7.pngwing.com/pngs/940/571/png-transparent-gitea-hd-logo-thumbnail.png", "text": "varnish-exporter build has just finished in version ${{ env.VERSION }} !"}'