38 Commits

Author SHA1 Message Date
ba33ee3645 chore(deps): update actions/checkout action to v5
Some checks failed
Golang CI lint / golangci (stable, ubuntu-latest-amd64) (push) Failing after 2s
Golang Tests / unittest (stable, ubuntu-latest-arm64) (push) Failing after 3s
Golang Tests / unittest (stable, ubuntu-latest-amd64) (push) Failing after 5s
Golang CI lint / golangci (stable, ubuntu-latest-arm64) (push) Failing after 3s
Golang Tests / unittest (stable, ubuntu-latest-amd64) (pull_request) Failing after 2s
Golang Tests / unittest (stable, ubuntu-latest-arm64) (pull_request) Failing after 3s
Lint Markdown files / markdown-lint (pull_request) Failing after 2s
Golang CI lint / golangci (stable, ubuntu-latest-arm64) (pull_request) Failing after 3s
Golang CI lint / golangci (stable, ubuntu-latest-amd64) (pull_request) Failing after 14s
2025-08-11 16:18:36 +00:00
7d95e6407e Merge pull request 'chore(deps): update actions/checkout action to v4.3.0' (#80) from renovate/actions into master
All checks were successful
Golang Tests / unittest (stable, ubuntu-latest-amd64) (push) Successful in 7s
Golang CI lint / golangci (stable, ubuntu-latest-amd64) (push) Successful in 10s
Lint Markdown files / markdown-lint (push) Successful in 8s
Golang Tests / unittest (stable, ubuntu-latest-arm64) (push) Successful in 52s
Golang CI lint / golangci (stable, ubuntu-latest-arm64) (push) Successful in 58s
2025-08-11 14:23:03 +00:00
6f5dbbba3f chore(deps): update actions/checkout action to v4.3.0
All checks were successful
Golang Tests / unittest (stable, ubuntu-latest-amd64) (push) Successful in 37s
Golang Tests / unittest (stable, ubuntu-latest-amd64) (pull_request) Successful in 7s
Golang CI lint / golangci (stable, ubuntu-latest-amd64) (pull_request) Successful in 21s
Lint Markdown files / markdown-lint (pull_request) Successful in 4s
Golang CI lint / golangci (stable, ubuntu-latest-amd64) (push) Successful in 3m32s
Golang Tests / unittest (stable, ubuntu-latest-arm64) (push) Successful in 50s
Golang CI lint / golangci (stable, ubuntu-latest-arm64) (push) Successful in 1m13s
Golang Tests / unittest (stable, ubuntu-latest-arm64) (pull_request) Successful in 55s
Golang CI lint / golangci (stable, ubuntu-latest-arm64) (pull_request) Successful in 53s
2025-08-11 13:22:10 +00:00
425c5777c4 Merge pull request 'chore(deps): update dependency go to v1.24.6' (#79) from renovate/go-modules into master
All checks were successful
Golang Tests / unittest (stable, ubuntu-latest-arm64) (push) Successful in 1m11s
Golang Tests / unittest (stable, ubuntu-latest-amd64) (push) Successful in 1m48s
Golang CI lint / golangci (stable, ubuntu-latest-arm64) (push) Successful in 1m21s
Lint Markdown files / markdown-lint (push) Successful in 13s
Golang CI lint / golangci (stable, ubuntu-latest-amd64) (push) Successful in 1m58s
2025-08-06 19:28:56 +00:00
3f2d9103f3 chore(deps): update dependency go to v1.24.6
All checks were successful
Golang Tests / unittest (stable, ubuntu-latest-arm64) (push) Successful in 3m0s
Golang Tests / unittest (stable, ubuntu-latest-amd64) (push) Successful in 3m0s
Golang CI lint / golangci (stable, ubuntu-latest-arm64) (push) Successful in 2m5s
Golang Tests / unittest (stable, ubuntu-latest-arm64) (pull_request) Successful in 1m16s
Golang CI lint / golangci (stable, ubuntu-latest-amd64) (push) Successful in 2m35s
Golang CI lint / golangci (stable, ubuntu-latest-arm64) (pull_request) Successful in 1m24s
Lint Markdown files / markdown-lint (pull_request) Successful in 11s
Golang Tests / unittest (stable, ubuntu-latest-amd64) (pull_request) Successful in 1m57s
Golang CI lint / golangci (stable, ubuntu-latest-amd64) (pull_request) Successful in 1m49s
2025-08-06 19:15:01 +00:00
e312ba9d12 Merge pull request 'chore(deps): update docker/login-action action to v3.5.0' (#78) from renovate/actions into master
All checks were successful
Golang Tests / unittest (stable, ubuntu-latest-arm64) (push) Successful in 29s
Golang CI lint / golangci (stable, ubuntu-latest-arm64) (push) Successful in 37s
Lint Markdown files / markdown-lint (push) Successful in 11s
Golang Tests / unittest (stable, ubuntu-latest-amd64) (push) Successful in 39s
Golang CI lint / golangci (stable, ubuntu-latest-amd64) (push) Successful in 51s
2025-08-04 20:27:39 +00:00
7a6c5e497b chore(deps): update docker/login-action action to v3.5.0
All checks were successful
Golang Tests / unittest (stable, ubuntu-latest-arm64) (push) Successful in 31s
Golang CI lint / golangci (stable, ubuntu-latest-arm64) (push) Successful in 36s
Golang Tests / unittest (stable, ubuntu-latest-arm64) (pull_request) Successful in 30s
Golang CI lint / golangci (stable, ubuntu-latest-arm64) (pull_request) Successful in 35s
Lint Markdown files / markdown-lint (pull_request) Successful in 12s
Golang Tests / unittest (stable, ubuntu-latest-amd64) (push) Successful in 49s
Golang CI lint / golangci (stable, ubuntu-latest-amd64) (push) Successful in 50s
Golang Tests / unittest (stable, ubuntu-latest-amd64) (pull_request) Successful in 46s
Golang CI lint / golangci (stable, ubuntu-latest-amd64) (pull_request) Successful in 45s
2025-08-04 16:14:46 +00:00
2a9a3a3eb1 Merge pull request 'chore(deps): update module github.com/prometheus/client_golang to v1.23.0' (#77) from renovate/go-modules into master
All checks were successful
Golang Tests / unittest (stable, ubuntu-latest-arm64) (push) Successful in 30s
Golang Tests / unittest (stable, ubuntu-latest-amd64) (push) Successful in 43s
Golang CI lint / golangci (stable, ubuntu-latest-arm64) (push) Successful in 37s
Lint Markdown files / markdown-lint (push) Successful in 14s
Golang CI lint / golangci (stable, ubuntu-latest-amd64) (push) Successful in 44s
2025-07-31 13:18:47 +00:00
211d8aec18 chore(deps): update module github.com/prometheus/client_golang to v1.23.0
All checks were successful
Golang Tests / unittest (stable, ubuntu-latest-amd64) (push) Successful in 2m6s
Golang Tests / unittest (stable, ubuntu-latest-arm64) (push) Successful in 2m25s
Golang CI lint / golangci (stable, ubuntu-latest-amd64) (push) Successful in 1m27s
Golang CI lint / golangci (stable, ubuntu-latest-arm64) (push) Successful in 1m16s
Golang Tests / unittest (stable, ubuntu-latest-arm64) (pull_request) Successful in 31s
Golang Tests / unittest (stable, ubuntu-latest-amd64) (pull_request) Successful in 50s
Golang CI lint / golangci (stable, ubuntu-latest-arm64) (pull_request) Successful in 36s
Lint Markdown files / markdown-lint (pull_request) Successful in 12s
Golang CI lint / golangci (stable, ubuntu-latest-amd64) (pull_request) Successful in 44s
2025-07-31 13:13:24 +00:00
be8df93ac9 Merge pull request 'chore(deps): update module github.com/alecthomas/kong to v1.12.1' (#76) from renovate/go-modules into master
All checks were successful
Golang Tests / unittest (stable, ubuntu-latest-arm64) (push) Successful in 29s
Golang Tests / unittest (stable, ubuntu-latest-amd64) (push) Successful in 47s
Golang CI lint / golangci (stable, ubuntu-latest-arm64) (push) Successful in 36s
Lint Markdown files / markdown-lint (push) Successful in 12s
Golang CI lint / golangci (stable, ubuntu-latest-amd64) (push) Successful in 54s
2025-07-21 05:09:19 +00:00
766bec03de chore(deps): update module github.com/alecthomas/kong to v1.12.1
All checks were successful
Golang Tests / unittest (stable, ubuntu-latest-amd64) (push) Successful in 2m24s
Golang Tests / unittest (stable, ubuntu-latest-arm64) (push) Successful in 2m25s
Golang CI lint / golangci (stable, ubuntu-latest-arm64) (push) Successful in 1m19s
Golang CI lint / golangci (stable, ubuntu-latest-amd64) (push) Successful in 1m35s
Golang Tests / unittest (stable, ubuntu-latest-arm64) (pull_request) Successful in 29s
Golang Tests / unittest (stable, ubuntu-latest-amd64) (pull_request) Successful in 50s
Golang CI lint / golangci (stable, ubuntu-latest-arm64) (pull_request) Successful in 37s
Lint Markdown files / markdown-lint (pull_request) Successful in 14s
Golang CI lint / golangci (stable, ubuntu-latest-amd64) (pull_request) Successful in 58s
2025-07-21 05:03:15 +00:00
533c019b80 chore(deps): update dependency go to v1.24.5
All checks were successful
Golang Tests / unittest (stable, ubuntu-latest-arm64) (pull_request) Successful in 1m11s
Golang Tests / unittest (stable, ubuntu-latest-amd64) (pull_request) Successful in 1m57s
Golang CI lint / golangci (stable, ubuntu-latest-arm64) (pull_request) Successful in 1m18s
Lint Markdown files / markdown-lint (pull_request) Successful in 13s
Golang CI lint / golangci (stable, ubuntu-latest-amd64) (pull_request) Successful in 2m9s
Golang Tests / unittest (stable, ubuntu-latest-arm64) (push) Successful in 1m11s
Golang CI lint / golangci (stable, ubuntu-latest-arm64) (push) Successful in 1m18s
Lint Markdown files / markdown-lint (push) Successful in 11s
Golang Tests / unittest (stable, ubuntu-latest-amd64) (push) Successful in 1m35s
Golang CI lint / golangci (stable, ubuntu-latest-amd64) (push) Successful in 1m41s
2025-07-08 19:13:39 +00:00
8a5ebcab7c chore(deps): update module github.com/alecthomas/kong to v1.12.0
All checks were successful
Golang Tests / unittest (stable, ubuntu-latest-amd64) (pull_request) Successful in 8s
Golang CI lint / golangci (stable, ubuntu-latest-amd64) (pull_request) Successful in 21s
Lint Markdown files / markdown-lint (pull_request) Successful in 5s
Golang Tests / unittest (stable, ubuntu-latest-arm64) (pull_request) Successful in 31s
Golang CI lint / golangci (stable, ubuntu-latest-arm64) (pull_request) Successful in 37s
Golang Tests / unittest (stable, ubuntu-latest-amd64) (push) Successful in 9s
Lint Markdown files / markdown-lint (push) Successful in 5s
Golang Tests / unittest (stable, ubuntu-latest-arm64) (push) Successful in 29s
Golang CI lint / golangci (stable, ubuntu-latest-amd64) (push) Successful in 55s
Golang CI lint / golangci (stable, ubuntu-latest-arm64) (push) Successful in 38s
2025-06-25 01:10:32 +00:00
7540303fa3 chore(deps): update davidanson/markdownlint-cli2-action action to v20
All checks were successful
Golang Tests / unittest (stable, ubuntu-latest-arm64) (pull_request) Successful in 1m12s
Golang CI lint / golangci (stable, ubuntu-latest-arm64) (pull_request) Successful in 1m19s
Lint Markdown files / markdown-lint (pull_request) Successful in 12s
Golang Tests / unittest (stable, ubuntu-latest-amd64) (pull_request) Successful in 2m43s
Golang CI lint / golangci (stable, ubuntu-latest-amd64) (pull_request) Successful in 3m5s
Golang Tests / unittest (stable, ubuntu-latest-arm64) (push) Successful in 1m18s
Golang CI lint / golangci (stable, ubuntu-latest-arm64) (push) Successful in 1m13s
Lint Markdown files / markdown-lint (push) Successful in 13s
Golang Tests / unittest (stable, ubuntu-latest-amd64) (push) Successful in 4m59s
Golang CI lint / golangci (stable, ubuntu-latest-amd64) (push) Successful in 3m20s
2025-06-05 22:11:07 +00:00
5388f53963 chore(deps): update dependency go to v1.24.4
All checks were successful
Golang Tests / unittest (stable, ubuntu-latest-arm64) (pull_request) Successful in 1m11s
Golang CI lint / golangci (stable, ubuntu-latest-arm64) (pull_request) Successful in 1m18s
Lint Markdown files / markdown-lint (pull_request) Successful in 13s
Golang Tests / unittest (stable, ubuntu-latest-amd64) (pull_request) Successful in 2m10s
Golang CI lint / golangci (stable, ubuntu-latest-amd64) (pull_request) Successful in 2m14s
Golang Tests / unittest (stable, ubuntu-latest-arm64) (push) Successful in 1m12s
Golang CI lint / golangci (stable, ubuntu-latest-arm64) (push) Successful in 1m21s
Lint Markdown files / markdown-lint (push) Successful in 12s
Golang Tests / unittest (stable, ubuntu-latest-amd64) (push) Successful in 3m32s
Golang CI lint / golangci (stable, ubuntu-latest-amd64) (push) Successful in 3m38s
2025-06-05 19:14:05 +00:00
4d3847ca67 chore(ci): use DavidAnson/markdownlint-cli2-action@v19.1.0
All checks were successful
Golang Tests / unittest (stable, ubuntu-latest-amd64) (push) Successful in 8s
Golang CI lint / golangci (stable, ubuntu-latest-amd64) (push) Successful in 10s
Lint Markdown files / markdown-lint (push) Successful in 4s
Golang Tests / unittest (stable, ubuntu-latest-arm64) (push) Successful in 43s
Golang CI lint / golangci (stable, ubuntu-latest-arm64) (push) Successful in 1m5s
2025-06-01 13:39:03 +02:00
be67170a6f fix(Makefile): adapt test command
All checks were successful
Golang Tests / unittest (stable, ubuntu-latest-amd64) (push) Successful in 16s
Markdown linter / markdown-lint (push) Successful in 2s
Golang CI lint / golangci (stable, ubuntu-latest-amd64) (push) Successful in 56s
Golang Tests / unittest (stable, ubuntu-latest-arm64) (push) Successful in 1m49s
Golang CI lint / golangci (stable, ubuntu-latest-arm64) (push) Successful in 1m6s
2025-06-01 13:32:57 +02:00
e4d457d73c docs(examples): adapt markdown file to be linter compatible
Some checks failed
Golang CI lint / golangci (stable, ubuntu-latest-amd64) (push) Successful in 9s
Markdown linter / markdown-lint (push) Successful in 3s
Golang Tests / unittest (stable, ubuntu-latest-arm64) (push) Failing after 25s
Golang Tests / unittest (stable, ubuntu-latest-amd64) (push) Failing after 35s
Golang CI lint / golangci (stable, ubuntu-latest-arm64) (push) Successful in 1m1s
2025-06-01 13:31:22 +02:00
3810acad34 fix(Makefile): add missing systemd service
Some checks failed
Golang Tests / unittest (stable, ubuntu-latest-arm64) (push) Failing after 23s
Golang CI lint / golangci (stable, ubuntu-latest-amd64) (push) Successful in 29s
Markdown linter / markdown-lint (push) Failing after 3s
Golang Tests / unittest (stable, ubuntu-latest-amd64) (push) Failing after 38s
Golang CI lint / golangci (stable, ubuntu-latest-arm64) (push) Successful in 58s
2025-06-01 13:29:32 +02:00
b8cb19ea7b fix(Makefile): adapt Makefile and golangci lint
Some checks failed
Golang Tests / unittest (stable, ubuntu-latest-amd64) (push) Failing after 5s
Markdown linter / markdown-lint (push) Failing after 2s
Golang Tests / unittest (stable, ubuntu-latest-arm64) (push) Failing after 15s
Golang CI lint / golangci (stable, ubuntu-latest-amd64) (push) Successful in 2m1s
Golang CI lint / golangci (stable, ubuntu-latest-arm64) (push) Successful in 2m51s
2025-06-01 13:23:40 +02:00
9eed0fe492 feat: use goreleaser
Some checks failed
Golang Tests / unittest (stable, ubuntu-latest-amd64) (push) Failing after 15s
Golang Tests / unittest (stable, ubuntu-latest-arm64) (push) Failing after 15s
Markdown linter / markdown-lint (push) Failing after 13s
Golang CI lint / golangci (stable, ubuntu-latest-amd64) (push) Failing after 28s
Golang CI lint / golangci (stable, ubuntu-latest-arm64) (push) Failing after 2m39s
2025-06-01 13:18:58 +02:00
76f5437ab3 chore(ci): add golangci-lint
Some checks failed
Golang Tests / unittest (stable, ubuntu-latest-amd64) (push) Failing after 4s
Golang CI lint / golangci (stable, ubuntu-latest-amd64) (push) Failing after 32s
Run unit tests / test (push) Successful in 1m43s
Golang Tests / unittest (stable, ubuntu-latest-arm64) (push) Failing after 16s
Golang CI lint / golangci (stable, ubuntu-latest-arm64) (push) Failing after 3m2s
2025-06-01 12:19:14 +02:00
b291247c3f chore(deps): update docker.io/library/golang docker tag to v1.24.3
All checks were successful
Run unit tests / test (pull_request) Successful in 5m54s
Run unit tests / test (push) Successful in 1m44s
2025-06-01 01:09:18 +00:00
e7d99c78d1 chore(deps): update dependency go to v1.24.3
All checks were successful
Run unit tests / test (pull_request) Successful in 5m25s
Run unit tests / test (push) Successful in 5m52s
2025-05-31 22:10:52 +00:00
ec377df034 fix: cleanup
All checks were successful
Run unit tests / test (push) Successful in 5m46s
2025-05-31 22:49:51 +02:00
43fbbc015e chore(renovate): use configuration presets
Some checks failed
Run unit tests / test (push) Has been cancelled
2025-05-31 22:48:51 +02:00
064cf42743 chore(deps): update git.cryptic.systems/volker.raschek/drone-email docker tag to v0.2.0
All checks were successful
Run unit tests / test (pull_request) Successful in 8m43s
Run unit tests / test (push) Successful in 5m31s
2025-05-31 18:25:12 +00:00
35155770c8 chore(deps): update git.cryptic.systems/volker.raschek/markdownlint docker tag to v0.45.0
All checks were successful
Run unit tests / test (pull_request) Successful in 2m6s
Run unit tests / test (push) Successful in 8m44s
2025-05-28 13:11:13 +00:00
e9c4f60cb5 chore(deps): update module github.com/alecthomas/kong to v1.11.0
All checks were successful
Run unit tests / test (pull_request) Successful in 2m5s
Run unit tests / test (push) Successful in 1m45s
2025-05-15 10:10:16 +00:00
5ae780517a chore(deps): update docker.io/library/golang docker tag to v1.24.3
All checks were successful
Run unit tests / test (pull_request) Successful in 6m26s
Run unit tests / test (push) Successful in 6m35s
2025-05-06 22:12:01 +00:00
451b3659a1 chore(deps): update module github.com/prometheus/client_golang to v1.22.0
All checks were successful
Run unit tests / test (pull_request) Successful in 6m10s
Run unit tests / test (push) Successful in 6m0s
2025-04-26 22:11:31 +00:00
218c04b34b chore(deps): update git.cryptic.systems/volker.raschek/markdownlint docker tag to v0.44.0
All checks were successful
Run unit tests / test (pull_request) Successful in 5m47s
Run unit tests / test (push) Successful in 8m7s
2025-04-26 19:10:27 +00:00
4a1297b9b8 chore(deps): update docker.io/library/golang docker tag to v1.24.2
Some checks failed
Run unit tests / test (pull_request) Successful in 7m35s
continuous-integration/drone/pr Build is passing
Run unit tests / test (push) Successful in 5m0s
continuous-integration/drone/push Build is failing
2025-04-01 17:29:30 +00:00
9cf687c7e4 chore(deps): update module github.com/alecthomas/kong to v1.10.0
All checks were successful
Run unit tests / test (pull_request) Successful in 6m24s
continuous-integration/drone/pr Build is passing
Run unit tests / test (push) Successful in 6m28s
continuous-integration/drone/push Build is passing
2025-04-01 04:21:28 +00:00
ce09c1b5df chore(deps): update docker.io/plugins/docker docker tag to v20.18.8
All checks were successful
Run unit tests / test (pull_request) Successful in 7m13s
continuous-integration/drone/pr Build is passing
Run unit tests / test (push) Successful in 7m7s
continuous-integration/drone/push Build is passing
2025-03-26 20:29:31 +00:00
5d52473015 chore(deps): update docker.io/library/golang docker tag to v1.24.1
All checks were successful
Run unit tests / test (pull_request) Successful in 7m2s
continuous-integration/drone/pr Build is passing
Run unit tests / test (push) Successful in 6m10s
continuous-integration/drone/push Build is passing
2025-03-11 11:25:22 +00:00
8c8a721e39 chore(deps): update module github.com/alecthomas/kong to v1.9.0
All checks were successful
Run unit tests / test (pull_request) Successful in 6m11s
continuous-integration/drone/pr Build is passing
Run unit tests / test (push) Successful in 6m9s
continuous-integration/drone/push Build is passing
2025-03-11 08:26:29 +00:00
005648f7d4 chore(deps): update module github.com/prometheus/client_golang to v1.21.1
All checks were successful
Run unit tests / test (pull_request) Successful in 6m2s
continuous-integration/drone/pr Build is passing
Run unit tests / test (push) Successful in 6m8s
continuous-integration/drone/push Build is passing
2025-03-04 14:27:14 +00:00
21 changed files with 505 additions and 937 deletions

View File

@ -1,610 +0,0 @@
---
kind: pipeline
type: kubernetes
name: linter
clone:
disable: true
platform:
os: linux
steps:
- name: clone
image: git.cryptic.systems/volker.raschek/git:1.4.0
- name: markdown lint
commands:
- markdownlint *.md
image: git.cryptic.systems/volker.raschek/markdownlint:0.43.0
resources:
limits:
cpu: 150
memory: 150M
- name: email-notification
environment:
SMTP_FROM_ADDRESS:
from_secret: smtp_from_address
SMTP_FROM_NAME:
from_secret: smtp_from_name
SMTP_HOST:
from_secret: smtp_host
SMTP_USERNAME:
from_secret: smtp_username
SMTP_PASSWORD:
from_secret: smtp_password
image: git.cryptic.systems/volker.raschek/drone-email:0.1.5
resources:
limits:
cpu: 150
memory: 150M
when:
status:
- changed
- failure
trigger:
event:
exclude:
- tag
---
kind: pipeline
type: docker
name: unit-test-amd64
clone:
disable: true
platform:
arch: amd64
steps:
- name: clone
image: git.cryptic.systems/volker.raschek/git:1.4.0
- name: unit-test
commands:
- go test -v ./...
image: docker.io/library/golang:1.24.0
trigger:
event:
exclude:
- tag
---
kind: pipeline
type: docker
name: unit-test-arm64
clone:
disable: true
platform:
arch: arm64
steps:
- name: clone
image: git.cryptic.systems/volker.raschek/git:1.4.0
- name: unit-test
commands:
- go test -v ./...
image: docker.io/library/golang:1.24.0
trigger:
event:
include:
- pull_request
- push
exclude:
- tag
---
kind: pipeline
type: docker
name: dry-run-amd64
clone:
disable: true
depends_on:
- linter
- unit-test-amd64
platform:
os: linux
arch: amd64
steps:
- name: clone
image: git.cryptic.systems/volker.raschek/git:1.4.0
- name: build
image: docker.io/plugins/docker:20.18.7
settings:
auto_tag: false
dockerfile: Dockerfile
dry_run: true
force_tag: true
no_cache: true
purge: true
mirror:
from_secret: docker_io_mirror
registry: git.cryptic.systems
repo: git.cryptic.systems/volker.raschek/prometheus-fail2ban-exporter
tags: latest-amd64
username:
from_secret: git_cryptic_systems_container_registry_user
password:
from_secret: git_cryptic_systems_container_registry_password
- name: email-notification
environment:
SMTP_FROM_ADDRESS:
from_secret: smtp_from_address
SMTP_FROM_NAME:
from_secret: smtp_from_name
SMTP_HOST:
from_secret: smtp_host
SMTP_USERNAME:
from_secret: smtp_username
SMTP_PASSWORD:
from_secret: smtp_password
image: git.cryptic.systems/volker.raschek/drone-email:0.1.5
when:
status:
- changed
- failure
trigger:
branch:
exclude:
- master
event:
- pull_request
- push
repo:
- volker.raschek/prometheus-fail2ban-exporter
---
kind: pipeline
type: docker
name: dry-run-arm64-v8
clone:
disable: true
depends_on:
- linter
- unit-test-arm64
platform:
os: linux
arch: arm64
steps:
- name: clone
image: git.cryptic.systems/volker.raschek/git:1.4.0
- name: build
image: docker.io/plugins/docker:20.18.7
settings:
auto_tag: false
dockerfile: Dockerfile
dry_run: true
force_tag: true
no_cache: true
purge: true
mirror:
from_secret: docker_io_mirror
registry: git.cryptic.systems
repo: git.cryptic.systems/volker.raschek/prometheus-fail2ban-exporter
tags: latest-arm64-v8
username:
from_secret: git_cryptic_systems_container_registry_user
password:
from_secret: git_cryptic_systems_container_registry_password
- name: email-notification
environment:
SMTP_FROM_ADDRESS:
from_secret: smtp_from_address
SMTP_FROM_NAME:
from_secret: smtp_from_name
SMTP_HOST:
from_secret: smtp_host
SMTP_USERNAME:
from_secret: smtp_username
SMTP_PASSWORD:
from_secret: smtp_password
image: git.cryptic.systems/volker.raschek/drone-email:0.1.5
when:
status:
- changed
- failure
trigger:
branch:
exclude:
- master
event:
- pull_request
- push
repo:
- volker.raschek/prometheus-fail2ban-exporter
---
kind: pipeline
type: docker
name: latest-amd64
clone:
disable: true
depends_on:
- linter
- unit-test-amd64
platform:
os: linux
arch: amd64
steps:
- name: clone
image: git.cryptic.systems/volker.raschek/git:1.4.0
- name: build
image: docker.io/plugins/docker:20.18.7
settings:
auto_tag: false
dockerfile: Dockerfile
force_tag: true
no_cache: true
purge: true
mirror:
from_secret: docker_io_mirror
registry: git.cryptic.systems
repo: git.cryptic.systems/volker.raschek/prometheus-fail2ban-exporter
tags: latest-amd64
username:
from_secret: git_cryptic_systems_container_registry_user
password:
from_secret: git_cryptic_systems_container_registry_password
- name: email-notification
environment:
SMTP_FROM_ADDRESS:
from_secret: smtp_from_address
SMTP_FROM_NAME:
from_secret: smtp_from_name
SMTP_HOST:
from_secret: smtp_host
SMTP_USERNAME:
from_secret: smtp_username
SMTP_PASSWORD:
from_secret: smtp_password
image: git.cryptic.systems/volker.raschek/drone-email:0.1.5
when:
status:
- changed
- failure
trigger:
branch:
- master
event:
- cron
- push
repo:
- volker.raschek/prometheus-fail2ban-exporter
---
kind: pipeline
type: docker
name: latest-arm64-v8
clone:
disable: true
depends_on:
- linter
- unit-test-arm64
platform:
os: linux
arch: arm64
steps:
- name: clone
image: git.cryptic.systems/volker.raschek/git:1.4.0
- name: build
image: docker.io/plugins/docker:20.18.7
settings:
auto_tag: false
dockerfile: Dockerfile
force_tag: true
no_cache: true
purge: true
mirror:
from_secret: docker_io_mirror
registry: git.cryptic.systems
repo: git.cryptic.systems/volker.raschek/prometheus-fail2ban-exporter
tags: latest-arm64-v8
username:
from_secret: git_cryptic_systems_container_registry_user
password:
from_secret: git_cryptic_systems_container_registry_password
- name: email-notification
environment:
SMTP_FROM_ADDRESS:
from_secret: smtp_from_address
SMTP_FROM_NAME:
from_secret: smtp_from_name
SMTP_HOST:
from_secret: smtp_host
SMTP_USERNAME:
from_secret: smtp_username
SMTP_PASSWORD:
from_secret: smtp_password
image: git.cryptic.systems/volker.raschek/drone-email:0.1.5
when:
status:
- changed
- failure
trigger:
branch:
- master
event:
- cron
- push
repo:
- volker.raschek/prometheus-fail2ban-exporter
---
kind: pipeline
type: kubernetes
name: latest-manifest
clone:
disable: true
depends_on:
- latest-amd64
- latest-arm64-v8
# docker.io/plugins/manifest only for amd64 architectures available
node_selector:
kubernetes.io/os: linux
kubernetes.io/arch: amd64
steps:
- name: clone
image: git.cryptic.systems/volker.raschek/git:1.4.0
- name: build-manifest
image: docker.io/plugins/manifest:1.4.0
settings:
auto_tag: false
ignore_missing: true
spec: manifest.tmpl
username:
from_secret: git_cryptic_systems_container_registry_user
password:
from_secret: git_cryptic_systems_container_registry_password
- name: email-notification
environment:
SMTP_FROM_ADDRESS:
from_secret: smtp_from_address
SMTP_FROM_NAME:
from_secret: smtp_from_name
SMTP_HOST:
from_secret: smtp_host
SMTP_USERNAME:
from_secret: smtp_username
SMTP_PASSWORD:
from_secret: smtp_password
image: git.cryptic.systems/volker.raschek/drone-email:0.1.5
resources:
limits:
cpu: 150
memory: 150M
when:
status:
- changed
- failure
trigger:
branch:
- master
event:
- cron
- push
repo:
- volker.raschek/prometheus-fail2ban-exporter
---
kind: pipeline
type: docker
name: tagged-amd64
clone:
disable: true
platform:
os: linux
arch: amd64
steps:
- name: clone
image: git.cryptic.systems/volker.raschek/git:1.4.0
- name: build
image: docker.io/plugins/docker:20.18.7
settings:
auto_tag: true
auto_tag_suffix: amd64
dockerfile: Dockerfile
force_tag: true
no_cache: true
purge: true
mirror:
from_secret: docker_io_mirror
registry: git.cryptic.systems
repo: git.cryptic.systems/volker.raschek/prometheus-fail2ban-exporter
username:
from_secret: git_cryptic_systems_container_registry_user
password:
from_secret: git_cryptic_systems_container_registry_password
build_args:
- VERSION=${DRONE_TAG}
- name: email-notification
environment:
SMTP_FROM_ADDRESS:
from_secret: smtp_from_address
SMTP_FROM_NAME:
from_secret: smtp_from_name
SMTP_HOST:
from_secret: smtp_host
SMTP_USERNAME:
from_secret: smtp_username
SMTP_PASSWORD:
from_secret: smtp_password
image: git.cryptic.systems/volker.raschek/drone-email:0.1.5
when:
status:
- changed
- failure
trigger:
event:
- tag
repo:
- volker.raschek/prometheus-fail2ban-exporter
---
kind: pipeline
type: docker
name: tagged-arm64-v8
clone:
disable: true
platform:
os: linux
arch: arm64
steps:
- name: clone
image: git.cryptic.systems/volker.raschek/git:1.4.0
- name: build
image: docker.io/plugins/docker:20.18.7
settings:
auto_tag: true
auto_tag_suffix: arm64-v8
dockerfile: Dockerfile
force_tag: true
no_cache: true
purge: true
mirror:
from_secret: docker_io_mirror
registry: git.cryptic.systems
repo: git.cryptic.systems/volker.raschek/prometheus-fail2ban-exporter
username:
from_secret: git_cryptic_systems_container_registry_user
password:
from_secret: git_cryptic_systems_container_registry_password
build_args:
- VERSION=${DRONE_TAG}
- name: email-notification
environment:
SMTP_FROM_ADDRESS:
from_secret: smtp_from_address
SMTP_FROM_NAME:
from_secret: smtp_from_name
SMTP_HOST:
from_secret: smtp_host
SMTP_USERNAME:
from_secret: smtp_username
SMTP_PASSWORD:
from_secret: smtp_password
image: git.cryptic.systems/volker.raschek/drone-email:0.1.5
when:
status:
- changed
- failure
trigger:
event:
- tag
repo:
- volker.raschek/prometheus-fail2ban-exporter
---
kind: pipeline
type: kubernetes
name: tagged-manifest
clone:
disable: true
depends_on:
- tagged-amd64
- tagged-arm64-v8
# docker.io/plugins/manifest only for amd64 architectures available
node_selector:
kubernetes.io/os: linux
kubernetes.io/arch: amd64
steps:
- name: clone
image: git.cryptic.systems/volker.raschek/git:1.4.0
- name: build-manifest
image: docker.io/plugins/manifest:1.4.0
settings:
auto_tag: true
ignore_missing: true
spec: manifest.tmpl
username:
from_secret: git_cryptic_systems_container_registry_user
password:
from_secret: git_cryptic_systems_container_registry_password
- name: email-notification
environment:
SMTP_FROM_ADDRESS:
from_secret: smtp_from_address
SMTP_FROM_NAME:
from_secret: smtp_from_name
SMTP_HOST:
from_secret: smtp_host
SMTP_USERNAME:
from_secret: smtp_username
SMTP_PASSWORD:
from_secret: smtp_password
image: git.cryptic.systems/volker.raschek/drone-email:0.1.5
resources:
limits:
cpu: 150
memory: 150M
when:
status:
- changed
- failure
trigger:
event:
- tag
repo:
- volker.raschek/prometheus-fail2ban-exporter

View File

@ -0,0 +1,24 @@
name: Golang Tests
on:
pull_request:
types: [ "opened", "reopened", "synchronize" ]
push:
branches: [ '**' ]
tags-ignore: [ '**' ]
jobs:
unittest:
runs-on: ${{ matrix.os }}
strategy:
matrix:
go: [ stable ]
os: [ ubuntu-latest-amd64, ubuntu-latest-arm64 ]
steps:
- uses: actions/checkout@v5.0.0
- uses: actions/setup-go@v5.5.0
with:
go-version: ${{ matrix.go }}
- env:
GOPROXY: ${{ vars.GOPROXY }}
run: make test/unit

View File

@ -0,0 +1,27 @@
name: Golang CI lint
on:
pull_request:
types: [ "opened", "reopened", "synchronize" ]
push:
branches: [ '**' ]
tags-ignore: [ '**' ]
permissions:
contents: read
jobs:
golangci:
runs-on: ${{ matrix.os }}
strategy:
matrix:
go: [ stable ]
os: [ ubuntu-latest-amd64, ubuntu-latest-arm64 ]
steps:
- uses: actions/checkout@v5.0.0
- uses: actions/setup-go@v5.5.0
with:
go-version: ${{ matrix.go }}
- uses: golangci/golangci-lint-action@v8.0.0
with:
version: v2.1

View File

@ -0,0 +1,18 @@
name: 'Lint Markdown files'
on:
pull_request:
types: [ "opened", "reopened", "synchronize" ]
push:
branches: [ '*' ]
tags-ignore: [ '*' ]
jobs:
markdown-lint:
runs-on:
- ubuntu-latest
steps:
- uses: actions/checkout@v5.0.0
- uses: DavidAnson/markdownlint-cli2-action@v20.0.0
with:
globs: '**/*.md'

View File

@ -0,0 +1,52 @@
name: Release
on:
push:
tags: [ '**' ]
permissions:
contents: write
jobs:
release:
runs-on:
- ubuntu-latest
steps:
- uses: actions/checkout@v5.0.0
- uses: docker/setup-qemu-action@v3.6.0
- uses: actions/setup-go@v5.5.0
with:
go-version: stable
- uses: docker/login-action@v3.5.0
with:
registry: git.cryptic.systems
username: ${{ github.repository_owner }}
password: ${{ secrets.GIT_CRYPTIC_SYSTEMS_PACKAGE_REGISTRY_TOKEN }}
- env:
GITEA_TOKEN: ${{ secrets.GIT_CRYPTIC_SYSTEMS_PACKAGE_REGISTRY_TOKEN }}
GONOSUMDB: ${{ vars.GONOSUMDB }}
GOPROXY: ${{ vars.GOPROXY }}
uses: goreleaser/goreleaser-action@v6.3.0
with:
version: "~> v2"
args: release --clean
sync-to-hub-docker-io:
needs:
- release
runs-on: ubuntu-latest
steps:
- name: Copy images to docker.io
run: |
TAG=$(echo ${{ github.ref_name }} | sed 's/v//gm')
apt-get update --yes
apt-get install --yes skopeo
skopeo copy \
--all \
--dest-password ${{ secrets.DOCKER_IO_PASSWORD }} \
--dest-username ${{ secrets.DOCKER_IO_USERNAME }} \
--src-password ${{ secrets.GIT_CRYPTIC_SYSTEMS_PACKAGE_REGISTRY_TOKEN }} \
--src-username volker.raschek \
docker://git.cryptic.systems/volker.raschek/prometheus-fail2ban-exporter:${TAG} \
docker://docker.io/volkerraschek/prometheus-fail2ban-exporter:${TAG}

View File

@ -1,30 +0,0 @@
name: Run unit tests
on:
pull_request:
branches:
- '*'
types: [ "opened", "reopened", "synchronize" ]
push:
branches:
- '*'
workflow_dispatch: {}
jobs:
test:
container:
image: docker.io/library/golang:1.24.0
runs-on:
- ubuntu-latest
steps:
- name: Install tooling
run: |
apt-get update --yes
apt-get upgrade --yes
apt-get install --yes git npm
- uses: actions/checkout@v4
- env:
GOPROXY: ${{ vars.GOPROXY }}
GONOSUMDB: ${{ vars.GONOSUMDB }}
name: Execute containerized unit test
run: make test

View File

@ -0,0 +1,20 @@
name: Update Docker Hub Description
on:
push:
branches: [ 'master' ]
paths: [ 'README.md' ]
workflow_dispatch: {}
jobs:
update-description-on-hub-docker-io:
runs-on:
- ubuntu-latest
steps:
- uses: actions/checkout@v5.0.0
- uses: peter-evans/dockerhub-description@v4.0.2
with:
username: ${{ secrets.DOCKER_IO_USERNAME }}
password: ${{ secrets.DOCKER_IO_PASSWORD }}
repository: volkerraschek/prometheus-fail2ban-exporter
readme-filepath: README.md

9
.gitignore vendored
View File

@ -1,8 +1,3 @@
.idea/
vendor/
*.iml
build/
dist/
prometheus-fail2ban-exporter
coverage.txt
dist

175
.goreleaser.yaml Normal file
View File

@ -0,0 +1,175 @@
project_name: prometheus-fail2ban-exporter
archives:
- formats: [ "tar.xz" ]
files:
- README.md
- LICENSE
before:
hooks:
- go mod tidy
builds:
- main: main.go
binary: >-
{{ .ProjectName }}-
{{- .Version }}-
{{- .Os }}-
{{- if eq .Arch "amd64" }}amd64
{{- else if eq .Arch "amd64_v1" }}amd64
{{- else }}{{ .Arch }}{{ end }}
{{- if .Arm }}-{{ .Arm }}{{ end }}
env:
- CGO_ENABLED=0
- GONOSUMDB={{ .Env.GONOSUMDB }}
- GOPROXY={{ .Env.GOPROXY }}
goos:
- linux
goarch:
- amd64
- arm
- arm64
- riscv64
goarm:
- "6"
- "7"
flags:
- -trimpath
ldflags:
- -s -w -X 'main.version={{ trimprefix .Tag "v" }}' -X 'main.date={{ time "2006-01-02T15:04:05Z07:00" }}'
changelog:
filters:
exclude:
- '^chore'
- '^docs'
- '^test'
- Merge pull request
- Merge branch
- go mod tidy
format: "{{.SHA}}: {{.Message}} (@{{.AuthorUsername}})"
groups:
- title: Features
regexp: '^.*?feat(\([[:word:]]+\))??!?:.+$'
order: 0
- title: "Bug fixes"
regexp: '^.*?fix(\([[:word:]]+\))??!?:.+$'
order: 1
- title: Others
order: 999
sort: asc
use: git
dockers:
- build_flag_templates:
- --label=org.opencontainers.image.created={{ time "2006-01-02T15:04:05Z07:00" }}
- --label=org.opencontainers.image.description={{ .ProjectName }}
- --label=org.opencontainers.image.documentation={{ .ProjectName }}
- --label=org.opencontainers.image.revision={{ .FullCommit }}
- --label=org.opencontainers.image.source={{ .GitURL }}
- --label=org.opencontainers.image.title={{ .ProjectName }}
- --label=org.opencontainers.image.url=https://git.cryptic.systems/volker.raschek/{{ .ProjectName }}
- --label=org.opencontainers.image.version={{ trimprefix .Tag "v" }}
- --platform=linux/amd64
- --pull
dockerfile: Dockerfile
goarch: amd64
goos: linux
image_templates:
- 'git.cryptic.systems/volker.raschek/{{ .ProjectName }}:{{ trimprefix .Tag "v" }}-amd64'
skip_push: false
use: buildx
- build_flag_templates:
- --label=org.opencontainers.image.created={{ time "2006-01-02T15:04:05Z07:00" }}
- --label=org.opencontainers.image.description={{ .ProjectName }}
- --label=org.opencontainers.image.documentation={{ .ProjectName }}
- --label=org.opencontainers.image.revision={{ .FullCommit }}
- --label=org.opencontainers.image.source={{ .GitURL }}
- --label=org.opencontainers.image.title={{ .ProjectName }}
- --label=org.opencontainers.image.url=https://git.cryptic.systems/volker.raschek/{{ .ProjectName }}
- --label=org.opencontainers.image.version={{ trimprefix .Tag "v" }}
- --platform=linux/arm/v6
- --pull
dockerfile: Dockerfile
goarch: arm
goarm: "6"
goos: linux
image_templates:
- 'git.cryptic.systems/volker.raschek/{{ .ProjectName }}:{{ trimprefix .Tag "v" }}-arm-v6'
skip_push: false
use: buildx
- build_flag_templates:
- --label=org.opencontainers.image.created={{ time "2006-01-02T15:04:05Z07:00" }}
- --label=org.opencontainers.image.description={{ .ProjectName }}
- --label=org.opencontainers.image.documentation={{ .ProjectName }}
- --label=org.opencontainers.image.revision={{ .FullCommit }}
- --label=org.opencontainers.image.source={{ .GitURL }}
- --label=org.opencontainers.image.title={{ .ProjectName }}
- --label=org.opencontainers.image.url=https://git.cryptic.systems/volker.raschek/{{ .ProjectName }}
- --label=org.opencontainers.image.version={{ trimprefix .Tag "v" }}
- --platform=linux/arm/v7
- --pull
dockerfile: Dockerfile
goarch: arm
goarm: "7"
goos: linux
image_templates:
- 'git.cryptic.systems/volker.raschek/{{ .ProjectName }}:{{ trimprefix .Tag "v" }}-arm-v7'
skip_push: false
use: buildx
- build_flag_templates:
- --label=org.opencontainers.image.created={{ time "2006-01-02T15:04:05Z07:00" }}
- --label=org.opencontainers.image.description={{ .ProjectName }}
- --label=org.opencontainers.image.documentation={{ .ProjectName }}
- --label=org.opencontainers.image.revision={{ .FullCommit }}
- --label=org.opencontainers.image.source={{ .GitURL }}
- --label=org.opencontainers.image.title={{ .ProjectName }}
- --label=org.opencontainers.image.url=https://git.cryptic.systems/volker.raschek/{{ .ProjectName }}
- --label=org.opencontainers.image.version={{ trimprefix .Tag "v" }}
- --platform=linux/arm64
- --pull
dockerfile: Dockerfile
goarch: arm64
goos: linux
image_templates:
- 'git.cryptic.systems/volker.raschek/{{ .ProjectName }}:{{ trimprefix .Tag "v" }}-arm64'
skip_push: false
use: buildx
- build_flag_templates:
- --label=org.opencontainers.image.created={{ time "2006-01-02T15:04:05Z07:00" }}
- --label=org.opencontainers.image.description={{ .ProjectName }}
- --label=org.opencontainers.image.documentation={{ .ProjectName }}
- --label=org.opencontainers.image.revision={{ .FullCommit }}
- --label=org.opencontainers.image.source={{ .GitURL }}
- --label=org.opencontainers.image.title={{ .ProjectName }}
- --label=org.opencontainers.image.url=https://git.cryptic.systems/volker.raschek/{{ .ProjectName }}
- --label=org.opencontainers.image.version={{ trimprefix .Tag "v" }}
- --platform=linux/riscv64
- --pull
dockerfile: Dockerfile
goarch: riscv64
goos: linux
image_templates:
- 'git.cryptic.systems/volker.raschek/{{ .ProjectName }}:{{ trimprefix .Tag "v" }}-riscv64'
skip_push: false
use: buildx
docker_manifests:
- name_template: 'git.cryptic.systems/volker.raschek/{{ .ProjectName }}:{{ trimprefix .Tag "v" }}'
image_templates:
- 'git.cryptic.systems/volker.raschek/{{ .ProjectName }}:{{ trimprefix .Tag "v" }}-amd64'
- 'git.cryptic.systems/volker.raschek/{{ .ProjectName }}:{{ trimprefix .Tag "v" }}-arm-v6'
- 'git.cryptic.systems/volker.raschek/{{ .ProjectName }}:{{ trimprefix .Tag "v" }}-arm-v7'
- 'git.cryptic.systems/volker.raschek/{{ .ProjectName }}:{{ trimprefix .Tag "v" }}-arm64'
- 'git.cryptic.systems/volker.raschek/{{ .ProjectName }}:{{ trimprefix .Tag "v" }}-riscv64'
gitea_urls:
api: https://git.cryptic.systems/api/v1
download: https://git.cryptic.systems
version: 2

View File

@ -45,19 +45,17 @@ MD012:
# MD013/line-length - Line length
MD013:
# Number of characters
line_length: 80
line_length: 120
# Number of characters for headings
heading_line_length: 80
heading_line_length: 120
# Number of characters for code blocks
code_block_line_length: 80
code_block_line_length: 120
# Include code blocks
code_blocks: false
# Include tables
tables: false
# Include headings
headings: true
# Include headings
headers: true
# Strict length checking
strict: false
# Stern length checking
@ -70,11 +68,6 @@ MD022:
# Blank lines below heading
lines_below: 1
# MD024/no-duplicate-heading/no-duplicate-header - Multiple headings with the same content
MD024:
# Only check sibling headings
allow_different_nesting: true
# MD025/single-title/single-h1 - Multiple top-level headings in the same document
MD025:
# Heading level

View File

@ -1,19 +1,5 @@
FROM docker.io/library/golang:1.24.0 AS build
FROM scratch AS build
WORKDIR /workspace
ADD . /workspace
COPY prometheus-fail2ban-exporter-* /usr/bin/prometheus-fail2ban-exporter
RUN apt update --yes && \
apt install --yes build-essential && \
make install \
PREFIX=/usr \
DESTDIR=/app \
EXECUTABLE=prometheus-fail2ban-exporter
FROM docker.io/library/debian:12-slim
COPY --from=build /app /
EXPOSE 9191
ENTRYPOINT [ "/usr/bin/prometheus-fail2ban-exporter" ]
ENTRYPOINT [ "/usr/bin/prometheus-fail2ban-exporter" ]

169
Makefile
View File

@ -1,85 +1,118 @@
EXECUTABLE=prometheus-fail2ban-exporter
VERSION?=$(shell git describe --abbrev=0)+hash.$(shell git rev-parse --short HEAD)
# Destination directory and prefix to place the compiled binaries, documentaions
# and other files.
DESTDIR?=
PREFIX?=/usr/local
EXECUTABLE?=prometheus-fail2ban-exporter
# CONTAINER_RUNTIME
# The CONTAINER_RUNTIME variable will be used to specified the path to a
# container runtime. This is needed to start and run a container image.
CONTAINER_RUNTIME?=$(shell which podman)
# List make commands
.PHONY: ls
ls:
cat Makefile | grep "^[a-zA-Z#].*" | cut -d ":" -f 1 | sed s';#;\n#;'g
# PROM_FAIL2BAN_EXP_IMAGE_REGISTRY_NAME
# Defines the name of the new container to be built using several variables.
PROM_FAIL2BAN_EXP_IMAGE_REGISTRY_NAME:=git.cryptic.systems
PROM_FAIL2BAN_EXP_IMAGE_REGISTRY_USER:=volker.raschek
# Run project tests
.PHONY: test
test:
GONOSUMDB=${GONOSUMDB} \
GOPROXY=${GOPROXY} \
go test ./... -v -race
PROM_FAIL2BAN_EXP_IMAGE_NAMESPACE?=${PROM_FAIL2BAN_EXP_IMAGE_REGISTRY_USER}
PROM_FAIL2BAN_EXP_IMAGE_NAME:=${EXECUTABLE}
PROM_FAIL2BAN_EXP_IMAGE_VERSION?=latest
PROM_FAIL2BAN_EXP_IMAGE_FULLY_QUALIFIED=${PROM_FAIL2BAN_EXP_IMAGE_REGISTRY_NAME}/${PROM_FAIL2BAN_EXP_IMAGE_NAMESPACE}/${PROM_FAIL2BAN_EXP_IMAGE_NAME}:${PROM_FAIL2BAN_EXP_IMAGE_VERSION}
# Look for "suspicious constructs" in source code
.PHONY: vet
vet:
GONOSUMDB=${GONOSUMDB} \
GOPROXY=${GOPROXY} \
go vet ./...
# BIN
# ==============================================================================
prometheus-fail2ban-exporter:
CGO_ENABLED=0 \
GOPROXY=$(shell go env GOPROXY) \
go build -ldflags "-X 'main.version=${VERSION}' -X 'main.date=$(shell date --rfc-3339=seconds )'" -o ${@} main.go
# Format code
.PHONY: fmt
fmt:
GONOSUMDB=${GONOSUMDB} \
GOPROXY=${GOPROXY} \
go mod tidy
# CLEAN
# ==============================================================================
PHONY+=clean
clean:
rm --force --recursive prometheus-fail2ban-exporter
GONOSUMDB=${GONOSUMDB} \
GOPROXY=${GOPROXY} \
go fmt ./...
# TESTS
# ==============================================================================
PHONY+=test/unit
test/unit:
CGO_ENABLED=0 \
GOPROXY=$(shell go env GOPROXY) \
go test -v -p 1 -coverprofile=coverage.txt -covermode=count -timeout 1200s ./...
# Check for unformatted go code
.PHONY: check/fmt
check/fmt:
test -z $(shell gofmt -l .)
PHONY+=test/integration
test/integration:
CGO_ENABLED=0 \
GOPROXY=$(shell go env GOPROXY) \
go test -v -p 1 -count=1 -timeout 1200s ./it/...
# Build project
.PHONY: build
build:
CGO_ENABLED=0
GONOSUMDB=${GONOSUMDB} \
GOPROXY=${GOPROXY} \
go build \
-ldflags "\
-X main.version=${shell git describe --tags} \
-X main.commit=${shell git rev-parse HEAD} \
-X main.date=${shell date --iso-8601=seconds} \
-X main.builtBy=manual \
" \
-trimpath \
-o ${EXECUTABLE} \
exporter.go
PHONY+=test/coverage
test/coverage: test/unit
CGO_ENABLED=0 \
GOPROXY=$(shell go env GOPROXY) \
go tool cover -html=coverage.txt
# build container-image
.PHONY: build/container-image
build/container-image:
# GOLANGCI-LINT
# ==============================================================================
PHONY+=golangci-lint
golangci-lint:
golangci-lint run --concurrency=$(shell nproc)
# INSTALL
# ==============================================================================
PHONY+=uninstall
install: prometheus-fail2ban-exporter
install --directory ${DESTDIR}/etc/bash_completion.d
./prometheus-fail2ban-exporter completion bash > ${DESTDIR}/etc/bash_completion.d/${EXECUTABLE}
install --directory ${DESTDIR}${PREFIX}/bin
install --mode 0755 ${EXECUTABLE} ${DESTDIR}${PREFIX}/bin/${EXECUTABLE}
install --directory ${DESTDIR}${PREFIX}/share/licenses/${EXECUTABLE}
install --mode 0644 LICENSE ${DESTDIR}${PREFIX}/share/licenses/${EXECUTABLE}/LICENSE
install --directory ${DESTDIR}${PREFIX}/systemd/system
install --mode 0644 systemd/systemd.service ${DESTDIR}${PREFIX}/systemd/system/${EXECUTABLE}.service
sed --in-place --regexp-extended 's/EXECUTABLE/${EXECUTABLE}/gm' ${DESTDIR}${PREFIX}/systemd/system/${EXECUTABLE}.service
# UNINSTALL
# ==============================================================================
PHONY+=uninstall
uninstall:
-rm --force --recursive \
${DESTDIR}/etc/bash_completion.d/${EXECUTABLE} \
${DESTDIR}${PREFIX}/bin/${EXECUTABLE} \
${DESTDIR}${PREFIX}/share/licenses/${EXECUTABLE}
# BUILD CONTAINER IMAGE
# ==============================================================================
PHONY+=container-image/build
container-image/build:
${CONTAINER_RUNTIME} build \
--tag ${EXECUTABLE} \
--build-arg VERSION=${VERSION} \
--file Dockerfile \
--no-cache \
--pull \
--tag ${PROM_FAIL2BAN_EXP_IMAGE_FULLY_QUALIFIED} \
.
.PHONY: install
install: build
mkdir --parents ${DESTDIR}/usr/lib/systemd/system
sed -e "s/EXECUTABLE/${EXECUTABLE}/gm" systemd/systemd.service > ${DESTDIR}/usr/lib/systemd/system/${EXECUTABLE}.service
chmod 0644 ${DESTDIR}/usr/lib/systemd/system/${EXECUTABLE}.service
# DELETE CONTAINER IMAGE
# ==============================================================================
PHONY:=container-image/delete
container-image/delete:
- ${CONTAINER_RUNTIME} image rm ${PROM_FAIL2BAN_EXP_IMAGE_FULLY_QUALIFIED}
install -D --mode 0755 --target-directory ${DESTDIR}${PREFIX}/bin ${EXECUTABLE}
# PUSH CONTAINER IMAGE
# ==============================================================================
PHONY+=container-image/push
container-image/push:
echo ${PROM_FAIL2BAN_EXP_IMAGE_REGISTRY_PASSWORD} | ${CONTAINER_RUNTIME} login ${PROM_FAIL2BAN_EXP_IMAGE_REGISTRY_NAME} --username ${PROM_FAIL2BAN_EXP_IMAGE_REGISTRY_USER} --password-stdin
${CONTAINER_RUNTIME} push ${PROM_FAIL2BAN_EXP_IMAGE_FULLY_QUALIFIED}
# NOTE: Set restrict file permissions by default to protect optional basic auth credentials
install -D --mode 0600 env ${DESTDIR}/etc/conf.d/${EXECUTABLE}
install -D --mode 0755 --target-directory ${DESTDIR}${PREFIX}/share/licenses/${EXECUTABLE} LICENSE
.PHONY: uninstall
uninstall:
-rm --recursive --force \
${DESTDIR}${PREFIX}/bin/${EXECUTABLE} \
${DESTDIR}/usr/lib/systemd/system/${EXECUTABLE}.service \
${DESTDIR}/etc/conf.d/${EXECUTABLE} \
${DESTDIR}${PREFIX}/share/licenses/${EXECUTABLE}/LICENSE
# PHONY
# ==============================================================================
# Declare the contents of the PHONY variable as phony. We keep that information
# in a variable so we can use it in if_changed.
.PHONY: ${PHONY}

View File

@ -1,11 +1,7 @@
# prometheus-fail2ban-exporter
[![Build Status](https://drone.cryptic.systems/api/badges/volker.raschek/prometheus-fail2ban-exporter/status.svg)](https://drone.cryptic.systems/volker.raschek/prometheus-fail2ban-exporter)
This is a fork of Hector's fail2ban
[exporter](https://gitlab.com/hectorjsmith/fail2ban-prometheus-exporter). This
fork contains some changes to get the application running in a kubernetes
cluster.
This is a fork of Hector's fail2ban [exporter](https://gitlab.com/hectorjsmith/fail2ban-prometheus-exporter). This fork
contains some changes to get the application running in a kubernetes cluster.
## Table of Contents
@ -21,8 +17,8 @@ The exporter can be run as a standalone binary or a docker container.
### 1.1. Standalone
The following command will start collecting metrics from the
`/var/run/fail2ban/fail2ban.sock` file and expose them on port `9191`.
The following command will start collecting metrics from the `/var/run/fail2ban/fail2ban.sock` file and expose them on
port `9191`.
```bash
$ fail2ban_exporter --collector.f2b.socket=/var/run/fail2ban/fail2ban.sock --web.listen-address=":9191"
@ -35,12 +31,10 @@ $ fail2ban_exporter --collector.f2b.socket=/var/run/fail2ban/fail2ban.sock --web
```
Binary files for each release can be found on the
[releases](https://gitlab.com/hectorjsmith/fail2ban-prometheus-exporter/-/releases)
page.
[releases](https://gitlab.com/hectorjsmith/fail2ban-prometheus-exporter/-/releases) page.
There is also an [example systemd service
file](/_examples/systemd/fail2ban_exporter.service) included in the repository.
This is a starting point to run the exporter as a service.
There is also an [example systemd service file](/_examples/systemd/fail2ban_exporter.service) included in the
repository. This is a starting point to run the exporter as a service.
### 1.2. Docker
@ -68,14 +62,11 @@ services:
```
Use the `:latest` tag to get the latest stable release. See the [registry
page](https://gitlab.com/hectorjsmith/fail2ban-prometheus-exporter/container_registry)
for all available tags.
page](https://gitlab.com/hectorjsmith/fail2ban-prometheus-exporter/container_registry) for all available tags.
**NOTE:** While it is possible to mount the `fail2ban.sock` file directly, it is
recommended to mount the parent folder instead. The `.sock` file is deleted by
fail2ban on shutdown and re-created on startup and this causes problems for the
docker mount. See [this
reply](https://gitlab.com/hectorjsmith/fail2ban-prometheus-exporter/-/issues/11#note_665003499)
**NOTE:** While it is possible to mount the `fail2ban.sock` file directly, it is recommended to mount the parent folder
instead. The `.sock` file is deleted by fail2ban on shutdown and re-created on startup and this causes problems for the
docker mount. See [this reply](https://gitlab.com/hectorjsmith/fail2ban-prometheus-exporter/-/issues/11#note_665003499)
for more details.
## 2. Metrics
@ -117,20 +108,18 @@ Status for the jail: sshd
### 2.1. Grafana
The metrics exported by this tool are compatible with Prometheus and Grafana. A
sample grafana dashboard can be found in the
[grafana.json](/_examples/grafana/dashboard.json) file. Just import the contents
of this file into a new Grafana dashboard to get started.
The metrics exported by this tool are compatible with Prometheus and Grafana. A sample grafana dashboard can be found in
the [grafana.json](/_examples/grafana/dashboard.json) file. Just import the contents of this file into a new Grafana
dashboard to get started.
The dashboard supports displaying data from multiple exporters. Use the
`instance` dashboard variable to select which ones to display.
The dashboard supports displaying data from multiple exporters. Use the `instance` dashboard variable to select which
ones to display.
*(Sample dashboard is compatible with Grafana `9.1.8` and above)*
## 3. Configuration
The exporter is configured with CLI flags and environment variables.
There are no configuration files.
The exporter is configured with CLI flags and environment variables. There are no configuration files.
### CLI flags
@ -164,8 +153,7 @@ Flags:
### Environment variables
Each environment variable corresponds to a CLI flag.
If both are specified, the CLI flag takes precedence.
Each environment variable corresponds to a CLI flag. If both are specified, the CLI flag takes precedence.
| Environment variable | Corresponding CLI flag |
|---------------------------------|---------------------------------------------------|
@ -185,23 +173,18 @@ Building from source has the following dependencies:
From there, simply run `make build`
This will download the necessary dependencies and build a `fail2ban_exporter`
binary in the root of the project.
This will download the necessary dependencies and build a `fail2ban_exporter` binary in the root of the project.
## 5. Textfile metrics
For more flexibility the exporter also allows exporting metrics collected from a
text file.
For more flexibility the exporter also allows exporting metrics collected from a text file.
To enable textfile metrics provide the directory to read files from with the
`--collector.textfile.directory` flag.
To enable textfile metrics provide the directory to read files from with the `--collector.textfile.directory` flag.
Metrics collected from these files will be exposed directly alongside the other
metrics without any additional processing. This means that it is the
responsibility of the file creator to ensure the format is correct.
Metrics collected from these files will be exposed directly alongside the other metrics without any additional
processing. This means that it is the responsibility of the file creator to ensure the format is correct.
By exporting textfile metrics an extra metric is also exported with an error
count for each file:
By exporting textfile metrics an extra metric is also exported with an error count for each file:
```text
# HELP textfile_error Checks for errors while reading text files
@ -213,8 +196,7 @@ textfile_error{path="file.prom"} 0
### Running in Docker
To collect textfile metrics inside a docker container, a couple of things need
to be done:
To collect textfile metrics inside a docker container, a couple of things need to be done:
1. Mount the folder with the metrics files
2. Set the `F2B_COLLECTOR_TEXT_PATH` environment variable

View File

@ -1,7 +1,9 @@
# Systemd
The `.service` file in this directory should be copied to the `/etc/systemd/system/` folder.
- It expects the binary file to be installed at `/usr/sbin/fail2ban_exporter`.
- It expects a user named `fail2ban_exporter` to exist. This user should not have a shell or any special privileges aside from read-access to the fail2ban socket file.
- It expects a user named `fail2ban_exporter` to exist. This user should not have a shell or any special privileges
aside from read-access to the fail2ban socket file.
The `ExecStart` line can be modified to add any custom CLI flags.

View File

@ -74,7 +74,7 @@ func validateFlags(cliCtx *kong.Context) {
}
}
if !flagsValid {
cliCtx.PrintUsage(false)
_ = cliCtx.PrintUsage(false)
fmt.Println()
for i := 0; i < len(messages); i++ {
fmt.Println(messages[i])

View File

@ -50,7 +50,7 @@ func (c *Collector) Collect(ch chan<- prometheus.Metric) {
os.Exit(1)
}
} else {
defer s.Close()
defer func() { _ = s.Close() }()
}
c.collectServerUpMetric(ch, s)

20
go.mod
View File

@ -2,26 +2,24 @@ module git.cryptic.systems/volker.raschek/prometheus-fail2ban-exporter
go 1.23.0
toolchain go1.24.0
toolchain go1.24.6
require (
github.com/alecthomas/kong v1.8.1
github.com/alecthomas/kong v1.12.1
github.com/kisielk/og-rek v1.3.0
github.com/nlpodyssey/gopickle v0.3.0
github.com/prometheus/client_golang v1.21.0
github.com/prometheus/client_golang v1.23.0
)
require (
github.com/aristanetworks/gomap v0.0.0-20240919214256-2b26376628e1 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/klauspost/compress v1.18.0 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/prometheus/client_model v0.6.1 // indirect
github.com/prometheus/common v0.62.0 // indirect
github.com/prometheus/procfs v0.15.1 // indirect
golang.org/x/exp v0.0.0-20250228200357-dead58393ab7 // indirect
golang.org/x/sys v0.30.0 // indirect
golang.org/x/text v0.22.0 // indirect
google.golang.org/protobuf v1.36.5 // indirect
github.com/prometheus/client_model v0.6.2 // indirect
github.com/prometheus/common v0.65.0 // indirect
github.com/prometheus/procfs v0.16.1 // indirect
golang.org/x/sys v0.33.0 // indirect
golang.org/x/text v0.25.0 // indirect
google.golang.org/protobuf v1.36.6 // indirect
)

70
go.sum
View File

@ -1,56 +1,50 @@
github.com/alecthomas/assert/v2 v2.6.0 h1:o3WJwILtexrEUk3cUVal3oiQY2tfgr/FHWiz/v2n4FU=
github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0=
github.com/alecthomas/kong v0.9.0 h1:G5diXxc85KvoV2f0ZRVuMsi45IrBgx9zDNGNj165aPA=
github.com/alecthomas/kong v0.9.0/go.mod h1:Y47y5gKfHp1hDc7CH7OeXgLIpp+Q2m1Ni0L5s3bI8Os=
github.com/alecthomas/kong v1.8.1 h1:6aamvWBE/REnR/BCq10EcozmcpUPc5aGI1lPAWdB0EE=
github.com/alecthomas/kong v1.8.1/go.mod h1:p2vqieVMeTAnaC83txKtXe8FLke2X07aruPWXyMPQrU=
github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k=
github.com/alecthomas/kong v1.12.1 h1:iq6aMJDcFYP9uFrLdsiZQ2ZMmcshduyGv4Pek0MQPW0=
github.com/alecthomas/kong v1.12.1/go.mod h1:p2vqieVMeTAnaC83txKtXe8FLke2X07aruPWXyMPQrU=
github.com/alecthomas/repr v0.4.0 h1:GhI2A8MACjfegCPVq9f1FLvIBS+DrQ2KQBFZP1iFzXc=
github.com/aristanetworks/gomap v0.0.0-20230726210543-f4e41046dced h1:HxlRMDx/VeRqzj3nvqX9k4tjeBcEIkoNHDJPsS389hs=
github.com/aristanetworks/gomap v0.0.0-20230726210543-f4e41046dced/go.mod h1:p7lmI+ecoe1RTyD11SPXWsSQ3H+pJ4cp5y7vtKW4QdM=
github.com/alecthomas/repr v0.4.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4=
github.com/aristanetworks/gomap v0.0.0-20240919214256-2b26376628e1 h1:D5mrqTj0YyG8O2A2SUCuPc2Qf68vyTBaWChSBAJtYJk=
github.com/aristanetworks/gomap v0.0.0-20240919214256-2b26376628e1/go.mod h1:v/+Hpx3wuPnPWEwT1unZJsNUe4Pu/y1Y+qAf+xj0Ykg=
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM=
github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg=
github.com/kisielk/og-rek v1.3.0 h1:lTXdQXqFETZKA//FWH4RBNAuiJ/dofxIwHAidoUZoMk=
github.com/kisielk/og-rek v1.3.0/go.mod h1:4at7oxyfBTDilURhNCf7irHWtosJlJl9uyqUqAkrP4w=
github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA=
github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw=
github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo=
github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ=
github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
github.com/nlpodyssey/gopickle v0.3.0 h1:BLUE5gxFLyyNOPzlXxt6GoHEMMxD0qhsE4p0CIQyoLw=
github.com/nlpodyssey/gopickle v0.3.0/go.mod h1:f070HJ/yR+eLi5WmM1OXJEGaTpuJEUiib19olXgYha0=
github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y=
github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE=
github.com/prometheus/client_golang v1.21.0 h1:DIsaGmiaBkSangBgMtWdNfxbMNdku5IK6iNhrEqWvdA=
github.com/prometheus/client_golang v1.21.0/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg=
github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E=
github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY=
github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc=
github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8=
github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io=
github.com/prometheus/common v0.62.0/go.mod h1:vyBcEuLSvWos9B1+CyL7JZ2up+uFzXhkqml0W5zIY1I=
github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc=
github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk=
golang.org/x/exp v0.0.0-20230725093048-515e97ebf090 h1:Di6/M8l0O2lCLc6VVRWhgCiApHV8MnQurBnFSHsQtNY=
golang.org/x/exp v0.0.0-20230725093048-515e97ebf090/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc=
golang.org/x/exp v0.0.0-20250228200357-dead58393ab7 h1:aWwlzYV971S4BXRS9AmqwDLAD85ouC6X+pocatKY58c=
golang.org/x/exp v0.0.0-20250228200357-dead58393ab7/go.mod h1:BHOTPb3L19zxehTsLoJXVaTktb06DFgmdW6Wb9s8jqk=
golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI=
golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc=
golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4=
golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI=
golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM=
golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY=
google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM=
google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/prometheus/client_golang v1.23.0 h1:ust4zpdl9r4trLY/gSjlm07PuiBq2ynaXXlptpfy8Uc=
github.com/prometheus/client_golang v1.23.0/go.mod h1:i/o0R9ByOnHX0McrTMTyhYvKE4haaf2mW08I+jGAjEE=
github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk=
github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE=
github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE=
github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8=
github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg=
github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is=
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw=
golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4=
golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA=
google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY=
google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

View File

@ -16,14 +16,12 @@ import (
var (
version = "dev"
commit = "none"
date = "unknown"
builtBy = "unknown"
)
func printAppVersion() {
fmt.Println(version)
fmt.Printf(" build date: %s\r\n commit hash: %s\r\n built by: %s\r\n", date, commit, builtBy)
fmt.Printf("Version: %s\n", version)
fmt.Printf("Build date: %s\n", date)
}
func main() {

View File

@ -1,20 +0,0 @@
image: git.cryptic.systems/volker.raschek/prometheus-fail2ban-exporter:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}latest{{/if}}
{{#if build.tags}}
tags:
{{#each build.tags}}
- {{this}}
{{/each}}
- "latest"
{{/if}}
manifests:
-
image: git.cryptic.systems/volker.raschek/prometheus-fail2ban-exporter:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}latest{{/if}}-amd64
platform:
architecture: amd64
os: linux
-
image: git.cryptic.systems/volker.raschek/prometheus-fail2ban-exporter:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}latest{{/if}}-arm64-v8
platform:
architecture: arm64
os: linux
variant: v8

View File

@ -1,79 +1,10 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"labels": [ "renovate" ],
"packageRules": [
{
"automerge": false,
"description": "Disable all package updates by default",
"enabled": false,
"matchPackagePatterns": [
"*"
],
"matchUpdateTypes": [
"major",
"minor",
"patch",
"pin",
"digest"
]
},
{
"addLabels": [ "renovate/droneci", "renovate/automerge" ],
"automerge": true,
"description": "Automatically update minor and patch versions of used drone-ci images",
"enabled": true,
"matchManagers": "droneci",
"matchUpdateTypes": [
"minor",
"patch"
]
},
{
"addLabels": [
"renovate/automerge",
"renovate/github-action"
],
"automerge": true,
"description": "Automatically update public github-actions dependencies",
"enabled": true,
"matchManagers": [
"github-actions"
],
"matchUpdateTypes": [
"minor",
"patch"
]
},
{
"addLabels": [
"renovate/automerge",
"renovate/golang"
],
"automerge": true,
"description": "Automatically update public go dependencies",
"enabled": true,
"matchDatasources": [
"go"
],
"matchUpdateTypes": [
"minor",
"patch"
]
},
{
"description": "Automatically update patch version of used container images in docker files",
"addLabels": [ "renovate/container-image", "renovate/automerge" ],
"automerge": true,
"matchManagers": [ "dockerfile" ],
"matchUpdateTypes": [ "patch" ]
}
],
"platformAutomerge": true,
"postUpdateOptions": [
"gomodTidy"
],
"prConcurrentLimit": 0,
"prHourlyLimit": 0,
"rebaseLabel": "renovate/rebase",
"rebaseWhen": "behind-base-branch"
"extends": [
"local>volker.raschek/renovate-config:default#master",
"local>volker.raschek/renovate-config:container#master",
"local>volker.raschek/renovate-config:actions#master",
"local>volker.raschek/renovate-config:golang#master",
"local>volker.raschek/renovate-config:regexp#master"
]
}