gameserver-observability · v0.1.1
0006. promtool from the official release tarball
- Status: accepted
- Date: 2026-10-21
Context
Rules are only useful when they are checked and tested: promtool check rules catches syntax and
PromQL errors, promtool test rules runs unit tests with input series and expected alerts. CI
needs promtool in a known version. The organization allows only GitHub-owned actions plus three
named third-party actions, and every downloaded tool must be pinned
(ADR 0002).
Considered options
- The official tarball
prometheus-<version>.linux-amd64.tar.gzfrom the Prometheus GitHub release, checked against the release’ssha256sums.txt. - The
prom/prometheuscontainer image, pinned by digest, run with--entrypoint promtool. - A third-party setup action from the Marketplace.
Decision
Chosen option: “official tarball”, because it is the same download as for a binary install of the
Prometheus server, needs no container runtime, and works the same way locally and in CI. The CI
job promtool downloads version 3.15.0, checks the pinned sha256 with sha256sum -c, extracts
only promtool and runs scripts/check_promtool.sh. The script checks rules/*.yml (and
*.yaml), runs tests/rules/*.test.yml, and fails when rule files exist without any rule test;
a unit test in ci / lint-test checks that every rule file is named in the rule_files of a rule
test. Option 3 is not on the allow-list; option 2 needs a Docker pull for a single binary.
Consequences
- Good: a replaced release asset fails the job; the version is visible in the workflow and in docs/toolchain.md, and a test keeps the two equal.
- Bad: Dependabot does not see the pin; it is bumped by hand with the other downloaded tools.
- Bad: the
promtooljob is not one of the four required checks yet; it is added to the ruleset once it has run on a pull request.
Not affiliated with or endorsed by Cfx.re, Rockstar Games or Take-Two.
docs/adr/0006-promtool-from-the-official-release-tarball.md on GitHub
Licensed under Apache-2.0. Source: luminare-dev/gameserver-observability at v0.1.1.