• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

zalando / skipper / 31731573193
81%

Build:
DEFAULT BRANCH: master
Ran 13 Aug 2026 06:54PM UTC
Jobs 1
Files 313
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

13 Aug 2026 06:36PM UTC coverage: 80.648% (+0.03%) from 80.616%
31731573193

push

github

web-flow
filters: annotate routes with application label (#4147)

## Change

Pass the Kubernetes routing object's configured label value into Skipper
route context by adding `annotate("Application", <label value>)` to
generated routes. The label *key* to read the value from is configurable
via `-kubernetes-application-annotation-label` (e.g. `application`,
`app.kubernetes.io/name`), but the annotation key written to the route's
StateBag is always the fixed `"Application"` constant.
The annotation is sourced from:
- `Ingress.metadata.labels.application`
- `RouteGroup.metadata.labels.application`

Covered route generation paths:
- Ingress normal `spec.rules[].http.paths[]` routes via
`addEndpointsRuleV1`
- Ingress custom routes from `zalando.org/skipper-routes` via
`addExtraRoutes`
- Ingress `spec.defaultBackend` routes via `ingressV1Route`
- RouteGroup implicit routes via `implicitGroupRoutes`
- RouteGroup explicit routes via `explicitGroupRoutes`

The filter is prepended so `annotate("Application", ...)` runs before
later route filters that may read annotations from the request
`StateBag`. If a user explicitly adds their own `annotate("Application",
...)` later in the route, that annotation still wins because `annotate`
overwrites the same key.

The feature is off by default:
`-kubernetes-application-annotation-label` defaults to an empty string,
so no `annotate` filter is added unless an operator explicitly sets a
label key (e.g. `application` or `app.kubernetes.io/name`).

The annotation is intentionally added to real routes generated from
Ingress and RouteGroup objects, not to synthetic helper routes such as
HTTPS redirects or catch-all shunt routes, to avoid attributing proxy
control traffic to an application.

## Known gap
Ingress routes using `zalando.org/skipper-backend: <forward>` may still
lose the generated annotation on normal/custom paths because
forward-backend handling clears route filters in `applyBackend`. This PR
leaves that existing forward-b... (continued)

26 of 30 new or added lines in 7 files covered. (86.67%)

473 existing lines in 11 files now uncovered.

29147 of 36141 relevant lines covered (80.65%)

78484.27 hits per line

Uncovered Changes

Lines Coverage ∆ File
2
92.86
-7.14% dataclients/kubernetes/annotations.go
2
0.0
0.0% dataclients/kubernetes/kubernetestest/fixtures.go

Coverage Regressions

Lines Coverage ∆ File
180
69.37
0.09% skipper.go
70
88.63
0.04% config/config.go
70
61.75
1.01% dataclients/kubernetes/kubernetestest/api.go
47
0.0
0.0% dataclients/kubernetes/kubernetestest/fixtures.go
35
88.71
0.25% dataclients/kubernetes/ingress.go
27
91.18
0.97% loadbalancer/algorithm.go
22
91.1
0.0% dataclients/kubernetes/kube.go
15
94.48
-0.05% filters/tls/mtls.go
4
72.94
-4.71% filters/tee/tee_response.go
2
95.65
-1.74% eskipfile/watch.go
1
92.87
0.07% dataclients/kubernetes/ingressv1.go
Jobs
ID Job ID Ran Files Coverage
1 31731573193.1 13 Aug 2026 06:54PM UTC 313
80.65
GitHub Action Run
Source Files on build 31731573193
  • Tree
  • List 313
  • Changed 14
  • Source Changed 11
  • Coverage Changed 14
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #31731573193
  • 86f1c5ea on github
  • Prev Build on master (#31579648478)
  • Next Build on master (#31793396785)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc