For workflow inputs and everyday use, see the README.
- Configure
DOCKERHUB_USERNAMEandDOCKERHUB_PASSWORDwith write access to the destination Docker Hub repositories. The Helm repository ishugegraph/hugegraph-helmand must be public. - GHCR publication uses
GITHUB_TOKENwithpackages: write. An existing package must granthugegraph/actionswrite access and allow anonymous pulls. - Latest image workflows can update their
LAST_*_HASHrepository variable after publication. Validation-only runs leave these variables unchanged.
Create GitHub environments testpypi and pypi, each with a PYPI_API_TOKEN that can upload every selected package. A token scoped only to hugegraph-python cannot publish hugegraph-mcp.
Restrict the pypi environment to this repository's master branch, require maintainer approval, and disable administrator bypass. This restriction applies to the workflow branch, not the selected source ref. Allow branch testing in testpypi.
Validation-only runs do not request approval or receive an upload token. Publishing both packages requests one approval; the token is available only to the upload steps.
Use Re-run failed jobs to resume publication with the retained artifacts. Do not repackage an existing version: the bytes may change, and conflicting registry contents are rejected.
The Helm publication bundle is retained for 30 days and Python artifacts for 14 days, subject to repository policy. If those artifacts have expired or been deleted, recovery fails; publish a new version instead. The two Helm registries have no shared transaction, so one copy may already exist when the other fails.
Publish Helm repository metadata updates the repository identity from artifacthub-repo.yml. Run it when that identity changes. It uses the separate artifacthub.io OCI tag and does not modify Chart versions.
Image entry workflows define the source, Dockerfiles, platforms and component settings. Use FROM --platform=$BUILDPLATFORM for portable Maven/Node build stages so packaging runs natively; runtime stages use the target platform. Native libraries and architecture-specific downloads still need appropriate builds and runtime tests. See Docker's build strategies.
The Helm smoke test uses 1 PD + 1 Store + 1 Server with memory limits of 1/2/2 GiB, persistent volumes, and Hubble disabled. These limits are for CI, not production sizing. Tools are checksum-pinned and test images are resolved to digests; published Chart image values stay as defined in source.
Python builds test wheel and source distributions in isolated environments. With both, MCP uses the client artifact from the same run before publication and the published client afterward. For TestPyPI publication, it selects the matching TestPyPI client wheel; other dependencies come from public PyPI.
Local checks require no Docker or publication:
python3 -m unittest discover -s tests -p 'test_helm*.py' -v
bash tests/test_publish_prepare.sh
actionlint .github/workflows/publish_helm.yml .github/workflows/publish_latest_*.yml
uv run --no-project --python 3.11 python -m unittest discover -s tests -p 'test_python_release.py' -v
actionlint .github/workflows/publish_python.yml .github/workflows/_build_python_reusable.yml