f296056360
ci/woodpecker/tag/release Pipeline failed
## Why `node-lookup` output is handy for pivoting to Puppetboard, but there was no quick way to turn a list of hosts into Puppetboard node-page URLs, or to see when each host last ran Puppet. These two small tools close that gap and ship in the **same RPM** so they're available wherever `node-lookup` is. ## Changes - Add **`pburl`**: reads hostnames from args or piped `node-lookup` output (first field of each line, de-duped) and prints `<host> <puppetboard-node-page-url>`. - Add **`pblastreport`**: prints `<host>\t<last-report-time>\t<url>` using `report_timestamp` from the PuppetDB v4 `nodes` endpoint. Supports `--relative`/`-r` (relative age) and `--timezone`/`-z <IANA>` (default: local timezone). - Add **`internal/puppet`** package shared by both tools: config load, PuppetDB `nodes` query, Puppetboard URL construction (`<base>/node/<certname>`), and no-TTY-safe stdin host reading. - Add **`puppetboard_url`** config key (env `NODE_LOOKUP_PUPPETBOARD_URL`, default `https://puppetboard.k8s.syd1.au.unkin.net`) to the shared config so `config init`/`config show` scaffold it for the whole tool family. `node-lookup`'s own query behaviour is unchanged. - Build all three binaries individually (each is its own `main` package — a single `go build ./...` can't emit multiple mains) and generate per-binary bash/zsh/fish completions in the Makefile, `build-rpm.sh`, and nfpm spec. - Cross-compile and attach all three tools per os/arch in the release pipeline; extend `.gitignore`; `go mod tidy` promotes cobra/yaml to direct deps. - Document the tools, config key, and env var in `AGENTS.md`. ## Testing - `go test -race ./...` passes (new tests cover config precedence, `nodes` endpoint derivation, host-page URLs, `LookupNode`, stdin host parsing, and the report-time formatting incl. timezone/relative/edge cases). - Built the RPM locally and confirmed it installs all 3 binaries + 9 completion files. - Smoke-tested both tools end-to-end against a mock PuppetDB (timezone conversion, relative time, and error handling all correct). No cross-repo changes needed: the release reuses the existing `default` ServiceAccount and the artifactapi `rpm-internal` upload. Reviewed-on: #15 Co-authored-by: Ben Vincent <ben@unkin.net> Co-committed-by: Ben Vincent <ben@unkin.net>
83 lines
2.1 KiB
YAML
83 lines
2.1 KiB
YAML
---
|
|
# nfpm config for building the node-lookup RPM.
|
|
# Rendered through envsubst (see scripts/build-rpm.sh) then fed to `nfpm pkg`.
|
|
|
|
name: ${PACKAGE_NAME}
|
|
version: ${PACKAGE_VERSION}
|
|
release: ${PACKAGE_RELEASE}
|
|
arch: ${PACKAGE_ARCH}
|
|
platform: ${PACKAGE_PLATFORM}
|
|
section: default
|
|
priority: extra
|
|
description: "${PACKAGE_DESCRIPTION}"
|
|
|
|
maintainer: ${PACKAGE_MAINTAINER}
|
|
homepage: ${PACKAGE_HOMEPAGE}
|
|
license: ${PACKAGE_LICENSE}
|
|
|
|
disable_globbing: false
|
|
|
|
replaces:
|
|
- node-lookup
|
|
provides:
|
|
- node-lookup
|
|
|
|
contents:
|
|
# The CLI binaries: node-lookup and its companion tools.
|
|
- src: dist/node-lookup
|
|
dst: /usr/bin/node-lookup
|
|
file_info:
|
|
mode: 0755
|
|
owner: root
|
|
group: root
|
|
- src: dist/pburl
|
|
dst: /usr/bin/pburl
|
|
file_info:
|
|
mode: 0755
|
|
owner: root
|
|
group: root
|
|
- src: dist/pblastreport
|
|
dst: /usr/bin/pblastreport
|
|
file_info:
|
|
mode: 0755
|
|
owner: root
|
|
group: root
|
|
|
|
# Shell completions (generated by scripts/build-rpm.sh before packaging).
|
|
- src: dist/completions/node-lookup.bash
|
|
dst: /usr/share/bash-completion/completions/node-lookup
|
|
file_info:
|
|
mode: 0644
|
|
- src: dist/completions/_node-lookup
|
|
dst: /usr/share/zsh/site-functions/_node-lookup
|
|
file_info:
|
|
mode: 0644
|
|
- src: dist/completions/node-lookup.fish
|
|
dst: /usr/share/fish/vendor_completions.d/node-lookup.fish
|
|
file_info:
|
|
mode: 0644
|
|
- src: dist/completions/pburl.bash
|
|
dst: /usr/share/bash-completion/completions/pburl
|
|
file_info:
|
|
mode: 0644
|
|
- src: dist/completions/_pburl
|
|
dst: /usr/share/zsh/site-functions/_pburl
|
|
file_info:
|
|
mode: 0644
|
|
- src: dist/completions/pburl.fish
|
|
dst: /usr/share/fish/vendor_completions.d/pburl.fish
|
|
file_info:
|
|
mode: 0644
|
|
- src: dist/completions/pblastreport.bash
|
|
dst: /usr/share/bash-completion/completions/pblastreport
|
|
file_info:
|
|
mode: 0644
|
|
- src: dist/completions/_pblastreport
|
|
dst: /usr/share/zsh/site-functions/_pblastreport
|
|
file_info:
|
|
mode: 0644
|
|
- src: dist/completions/pblastreport.fish
|
|
dst: /usr/share/fish/vendor_completions.d/pblastreport.fish
|
|
file_info:
|
|
mode: 0644
|