<!--Delete sections as needed -->
## Description
Added check for circular aliases.
I've done it a few times. Move something and add an alias. Then move it
back and forget to remove the alias.
Currently there is a circular alias, so it should fail successfully.
## Related issues or tickets
<!-- Related issues, pull requests, or Jira tickets -->
## Reviews
<!-- Notes for reviewers here -->
<!-- List applicable reviews (optionally @tag reviewers) -->
- [ ] Editorial review
Signed-off-by: Craig Osterhout <craig.osterhout@docker.com>
## Summary
The CloudFront redirect Lambda (`cloudfront-lambda-redirects.js`)
dropped the request query string when issuing 301 responses, so UTM tags
and other params were lost on redirected URLs. This appends the query
string to the `Location` header of both the exact-match and prefix
redirects (the directory/markdown rewrite branch already forwards the
request, so params survive there).
Adds unit tests (`node --test`, zero dependencies) that render the Go
template the same way `aws.go` does and exercise the handler. The tests
run in CI via a new `releaser-test` Dockerfile stage / bake target,
baked alongside `releaser-build` in the existing `releaser` job.
## Learnings
- The redirect Lambda source is a Go `text/template`
(`{{.RedirectsJSON}}` / `{{.RedirectsPrefixesJSON}}`), rendered and
zipped by `hack/releaser/aws.go`. To unit-test it, substitute the
placeholders the same way `aws.go` does, then evaluate the result as a
CommonJS module.
- `test-go-redirects` validates redirect *data* against the built
`public/` site, so it's the wrong host for a fast pure-JS test — the
`releaser` job, which already builds from `hack/releaser`, is the
natural home and has no Hugo dependency.
Generated by Claude Code
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
With the latest Buildx, BuildKit, and Dockerfile, bake can detect when
multiple targets use the same local context, and deduplicate context
transfer.
Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
Test ensures that:
- Go redirects are unique (this is actually enforced by YAML already
because it requires keys to be unique, but just in case someone
'echo >>'es into the file or whatever
- Go redirects always resolve to an index.html in the public output dir
Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
This validation was not caused in CI, and it can't really be in it's
current form, since the hugo_stats.json contains a lot of
false-positives, meaning that the file can easily become outdated
without it actually impacting anything.
Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
Add GitHub Actions annotations that will appear in the CI checks - this
should make it easier to see the reasons for the linting failures,
without needing to deep dive into the logs.