feat(examples & workflows): Add prometheus3.5.3 - #333
Conversation
razvand
left a comment
There was a problem hiding this comment.
Use present tense in the commit description. Also add more information in the commit description. Mention what are the contents of the commit.
Add Prometheus 3.5.3 as a new example for Unikraft Cloud deployment. The example includes: - Dockerfile: builds a minimal image with the Prometheus binary downloaded from the official GitHub release tarball - Kraftfile: defines the Unikraft Cloud deployment specification, including runtime, rootfs, volume for persistent metrics storage, network port mapping and startup command flags - README.md: provides instructions for deploying Prometheus on Unikraft Cloud using both the unikraft and kraft CLIs - .dockerignore and .gitignore: standard ignore files for the example Signed-off-by: Alexandru-Iulian Aranghel <alexandru.aranghel@yahoo.com>
Add staging and stable GitHub Actions workflows for the prometheus3.5.3. The workflows include: - example-prometheus3.5.3-staging.yaml: runs against the staging environment, triggered on push, pull request, and daily schedule (weekdays at 15:30 UTC) - example-prometheus3.5.3-stable.yaml: runs against the stable environment, triggered on push, pull request, and daily schedule (weekdays at 16:30 UTC) Both workflows deploy the example to Unikraft Cloud, verify the /metrics endpoint is reachable via curl, and clean up the instance, image and logs on completion. Signed-off-by: Alexandru-Iulian Aranghel <alexandru.aranghel@yahoo.com>
102ea9c to
7efc96a
Compare
There was a problem hiding this comment.
Pull request overview
Adds a new Prometheus 3.5.3 example for Unikraft Cloud, plus CI workflows to deploy and smoke-test the example in staging/stable environments.
Changes:
- Introduces
prometheus3.5.3/example assets (Kraftfile, Dockerfile, README, ignores). - Adds GitHub Actions workflows to deploy the example and verify the
/metricsendpoint in staging and stable.
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| prometheus3.5.3/README.md | Usage guide for deploying/running the Prometheus example and customization notes |
| prometheus3.5.3/Kraftfile | Runtime/rootfs/port/volume configuration and Prometheus command flags |
| prometheus3.5.3/Dockerfile | Builds a minimal rootfs with the Prometheus 3.5.3 binary and default config |
| prometheus3.5.3/.gitignore | Ignores local Unikraft build artifacts |
| prometheus3.5.3/.dockerignore | Ignores local Unikraft build artifacts during docker builds |
| .github/workflows/example-prometheus3.5.3-staging.yaml | CI deploy + /metrics smoke test in staging |
| .github/workflows/example-prometheus3.5.3-stable.yaml | CI deploy + /metrics smoke test in stable |
Suppressed comments (2)
prometheus3.5.3/README.md:177
- This Dockerfile explanation doesn't match the actual Dockerfile: the image copies
prometheus.ymlfrom the upstream release (via--from=build), not from a localprometheus.ymlfile.
* `COPY prometheus.yml /etc/prometheus/prometheus.yml`: Copy the Prometheus configuration file into the image.
prometheus3.5.3/README.md:181
- This suggests editing a local
prometheus.yml, but the current Dockerfile pullsprometheus.ymlfrom the upstream tarball, and there is noprometheus.ymlin the repo. The customization instructions should describe how to supply an overridden config (e.g., addprometheus.ymlto the repo and adjust the Dockerfile COPY).
* Update `prometheus.yml` to change scrape targets, intervals, alerting rules, or any other Prometheus configuration.
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Signed-off-by: AlexiksA <alexandru.aranghel@yahoo.com>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 7 out of 7 changed files in this pull request and generated no new comments.
Suppressed comments (5)
Previously missed (4) — in code that hasn't changed since the last review.
prometheus3.5.3/README.md:51
- The README says Prometheus needs a volume for persistence, but the
unikraft runexample doesn’t mount theprometheus-datavolume, so metrics will still be stored on ephemeral storage.
unikraft run --metro fra -p 443:9090/tls+http -m 1G --image <my-org>/prometheus:latest
prometheus3.5.3/README.md:155
prometheus.ymlis listed as a repository file to edit, but there is noprometheus3.5.3/prometheus.ymlchecked in (the Dockerfile extracts it from the upstream tarball). This makes the customization instructions misleading.
This issue also appears on line 175 of the same file.
* `Kraftfile`: the Unikraft Cloud specification
* `Dockerfile`: the Docker-specified app filesystem
* `prometheus.yml`: Prometheus configuration file (copied from the upstream Prometheus release; customize by providing your own file and updating the Dockerfile COPY line)
prometheus3.5.3/Kraftfile:7
- This Kraftfile uses the shorthand
rootfs: ./Dockerfile, which is inconsistent with the rest of the repo’s examples that declarerootfs.sourceand set an explicitformat: erofs(e.g.grafana/Kraftfile:5-7). Using the full form avoids relying on defaults and makes automated tooling more consistent.
rootfs: ./Dockerfile
prometheus3.5.3/Dockerfile:14
- The final image doesn’t install
ca-certificates. That can break HTTPS scrapes/remote-write/alerting integrations which rely on the OS trust store, even if the/metricsendpoint itself is served over plain HTTP behind the platform TLS terminator.
# minimal rootfs
FROM alpine:3.19
COPY --from=build /tmp/prometheus-release/prometheus /bin/prometheus
COPY --from=build /tmp/prometheus-release/prometheus.yml /etc/prometheus/prometheus.yml
prometheus3.5.3/README.md:177
- This Dockerfile explanation doesn’t match the actual Dockerfile: the config is copied from the build stage (
COPY --from=build .../prometheus.yml), not from a localprometheus.ymlfile.
* `COPY --from=build /tmp/prometheus-release/prometheus /bin/prometheus`: Copy only the Prometheus binary into the final image.
* `COPY prometheus.yml /etc/prometheus/prometheus.yml`: Copy the Prometheus configuration file into the image.
Add prometheus 3.5.3 example and Workflows.