Thank you for contributing to the ioFog / Datasance router wrapper image.
| Role | GitHub | Container registry |
|---|---|---|
| Upstream (canonical module path) | eclipse-iofog/router | ghcr.io/eclipse-iofog/router |
| Mirror (primary development remote) | Datasance/router | ghcr.io/datasance/router |
The git tree is identical on both remotes. Product flavor (registry URL, OCI labels) is selected by CI repository variables — not by forked application code.
| Branch | Purpose |
|---|---|
develop |
Integration branch on both remotes |
router/<plan>-<slug> |
Feature / plan branches (e.g. router/07-docs) |
Typical flow:
- Branch from
developonDatasance/router. - Open a pull request to
eclipse-iofog/routerdevelop. - Ensure CI is green (lint, test, docker smoke on
developpushes and PRs). - After merge, release maintainers tag identical
v*semver on both remotes;release.ymlpublishes GHCR images.
Do not use the legacy iofog/merge branch — it is abandoned in favor of the develop workflow above.
- Go 1.26.4 (see
go.mod). make test,make fmt-check,make security-codebefore pushing.- Local wrapper overlay:
Dockerfile.dev(upstreamquay.io/skupper/skupper-router:3.5.1image).
Module import path is always github.com/eclipse-iofog/router, even when cloning the Datasance mirror.
- Target
develop, notmain. - Keep changes focused; one active implementation plan per branch when following the modernization wave.
- Do not reintroduce: per-file copyright headers,
push.yaml, CI push on every branch push,secrets.PATfor routine CI, orrouter-adaptorpublish paths.
- Wrapper git tags:
v3.8.0,v3.8.0-1, etc. - Embedded skupper-router version (3.5.1) is documented separately from wrapper semver.
- Images publish only on
v*tag push — not on ordinarydevelopcommits.
Open an issue on the mirror you are developing against, or reach out to the ioFog / Datasance maintainers for release coordination between remotes.