Repository navigation
ci: publish the Streamlit Service Catalog image to Harbor - #115
Merged
Merged
Conversation
Users had to build the Service Catalog image themselves. CI now publishes it to registry.opsmill.io/opsmill/infrahub-demo-dc-streamlit for linux/amd64 and linux/arm64, signed and with a software bill of materials. The image is self-contained (it carries objects/dc and the logos that compose used to mount), runs as a non-root user and installs the versions pinned in uv.lock. Streamlit and pandas move into a `catalog` dependency group so the lock covers them. `invoke start` pulls the image; `--rebuild` or INFRAHUB_SERVICE_CATALOG_BUILD builds it from the checkout. Docs updated. uv.lock also moves anyio to 4.15.1 and typing-extensions to 4.16.0, because the image installs the locked versions and 4.11.0 carries CVE-2026-63374. Signed-off-by: Simon AURA--SCUSSEL <simon@opsmill.com>
Deploying infrahub-demo with
|
| Latest commit: |
26b1f06
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://b090e193.infrahub-demo.pages.dev |
| Branch Preview URL: | https://ci-publish-streamlit-image.infrahub-demo.pages.dev |
DharmaBytesX
marked this pull request as ready for review
October 19, 2026 06:12
petercrocker
requested review from
lancamat1
and removed request for
iddocohen
October 23, 2026 10:23
lancamat1
approved these changes
Oct 26, 2026
lancamat1
left a comment
There was a problem hiding this comment.
lgtm, but the repo does not have HARBOR_HOST, HARBOR_USERNAME and HARBOR_PASSWORD set yet, so the publish run will fail on merge. please add them first, same as on service-catalog
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
A user who wants to try the demo builds the Streamlit Service Catalog image locally
(Slack thread).
This PR publishes it as an image on
registry.opsmill.io, soinvoke startpulls it.It is the same change as opsmill/infrahub-demo-sp#152,
which is merged and published its images from
main(run).
This PR applies it to
infrahub-demo-dc, with one image instead of two. The Styrmingeneric-app driver takes an image repository and tag
(styrmin#468), so the sandbox can use the image.
Image, workflow and local development changes
registry.opsmill.io/opsmill/infrahub-demo-dc-streamlit, forlinux/amd64andlinux/arm64, taggedmainandsha-<commit>.publish-images.yml:files are present, the user is not root, and the container reports healthy.
mainthat touch the image sources, a weekly run (Monday 04:41 UTC) and manualruns with
publishpush the image, sign it with Cosign and attach SPDX and CycloneDXsoftware bills of materials. The steps are those of the demo-sp workflow.
objects/dc/(the DC templates the Create DC page lists) and the logos fromdocs/static/img/, which compose used to mount.uv.lock.streamlitandpandaswere not in the lock,so they move into a new
catalogdependency group inpyproject.toml. Dependabot nowmanages them.
service_catalog/requirements.txtlists package names only.anyio4.11.0 to 4.15.1 andtyping-extensions4.15.0 to 4.16.0.Harbor's scan of a test push of this image flagged
anyio4.11.0 as Critical(CVE-2026-63374, fixed in 4.14.2). After the update the scan shows 0 Critical and 65 High.
Both packages are also used by the repository's own tooling.
invoke:STREAMLIT_IMAGE, default...:main), andinvoke startpulls it.invoke start --rebuildorINFRAHUB_SERVICE_CATALOG_BUILD=truebuilds from the checkout,using the new
docker-compose.catalog-dev.yml, which also mounts the sources.docker-compose --profile service-catalog up, which needs alocal base compose file this repository does not have.
STREAMLIT_SERVER_PORTchanges it, which the generic-appdriver needs (it requires 8080, per styrmin#468).
Before merge
HARBOR_USERNAMEandHARBOR_PASSWORDand the variableHARBOR_HOST. At the time of writing, none of them is set here.enabled cannot pull
:main.infrahub,infrahub-enterpriseand
styrmin. No rule covers this image yet.Test plan
Verified on a local arm64 machine:
uv.lock, the user is uid 1000, thetemplates and logos are present, and
STREAMLIT_SERVER_PORT=8080is honoured.invoke lintandinvoke test-unitpass, including 4 new tests.actionlintpasses on theworkflow. The compose config resolves correctly in both modes.
actagainst Harbor.Both architectures were pushed and pulled back. Signing, the software bills of materials and
the GitHub cache were not part of that run, and the health check ran inside the container.
invoke startandinvoke bootstrap, withthe catalog pulled from Harbor. Creating
dc-aristafrom the Create DC page made a branch,ran the generator and opened a proposed change. All 32 validators succeeded. The other
catalog pages load.
Not verified:
the demo-sp workflow linked above.
secrets can push images and signatures.
Assisted-by: opsmill-dev-commit 0.1.0
Assisted-by: opsmill-dev-pr 0.2.0