diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..5cf82a2 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,46 @@ +name: Release Version Update + +on: + release: + types: [published] + +permissions: + contents: write + +jobs: + update-version: + name: Update version in source + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v6 + with: + ref: main + + - name: Extract version from tag + id: get_version + run: | + TAG="${{ github.event.release.tag_name }}" + VERSION="${TAG#v}" + echo "version=$VERSION" >> "$GITHUB_OUTPUT" + echo "tag=$TAG" >> "$GITHUB_OUTPUT" + + - name: Update version in version.go + run: | + sed -i 's/pluginVersion = "[^"]*"/pluginVersion = "'"${{ steps.get_version.outputs.version }}"'"/' version.go + cat version.go + + - name: Commit, push, and retag + run: | + git config user.name "github-actions[bot]" + git config user.email "github-actions[bot]@users.noreply.github.com" + git add version.go + if git diff --cached --quiet; then + echo "Version already up to date, nothing to commit" + exit 0 + fi + git commit -m "⬆️ chore: bump version to ${{ steps.get_version.outputs.version }}" + git push origin main + # Move the release tag to include the version update + git tag -f "${{ steps.get_version.outputs.tag }}" + git push -f origin "${{ steps.get_version.outputs.tag }}" diff --git a/bouncer.go b/bouncer.go index 3e0bc0c..f2ab596 100644 --- a/bouncer.go +++ b/bouncer.go @@ -674,7 +674,7 @@ func crowdsecQuery(bouncer *Bouncer, stringURL string, data []byte) ([]byte, err req, _ = http.NewRequest(http.MethodGet, stringURL, nil) } req.Header.Add(bouncer.crowdsecHeader, bouncer.crowdsecKey) - req.Header.Add("User-Agent", "Crowdsec-Bouncer-Traefik-Plugin/1.X.X") + req.Header.Add("User-Agent", "Crowdsec-Bouncer-Traefik-Plugin/"+pluginVersion) res, err := bouncer.httpClient.Do(req) if err != nil { @@ -779,7 +779,7 @@ func reportMetrics(bouncer *Bouncer) error { metrics := map[string]interface{}{ "remediation_components": []map[string]interface{}{ { - "version": "1.X.X", + "version": pluginVersion, "type": "bouncer", "name": "traefik_plugin", "metrics": []map[string]interface{}{ diff --git a/version.go b/version.go new file mode 100644 index 0000000..962d243 --- /dev/null +++ b/version.go @@ -0,0 +1,4 @@ +package crowdsec_bouncer_traefik_plugin //nolint:revive,stylecheck + +// pluginVersion is updated automatically by the release workflow. +var pluginVersion = "1.5.0" //nolint:gochecknoglobals