This repository publishes the static dependency manifests served from
https://deps.podplane.dev/manifests/.
The manifest-producing repositories remain the source of truth for release artifacts. This repository only mirrors the latest released manifest assets into a static object-storage bucket.
The build writes these public paths:
/manifests/components.json
/manifests/templates.json
/manifests/seeds.json
/manifests/vmconfig_knd_debian-13_amd64.json
/manifests/vmconfig_knd_debian-13_arm64.json
/manifests/vmconfig_knc_debian-13_amd64.json
/manifests/vmconfig_knc_debian-13_arm64.json
scripts/build.shreadsconfig/manifests.json.- For each configured entry, it fetches the latest GitHub Release for the source repository.
- It downloads the matching JSON release asset.
- It validates that the asset is JSON.
- It writes the file under
dist/manifests/. - The GitHub Action uses
rclone syncto publishdist/to the configured object-storage destination.
If the build step fails, the workflow fails before the rclone sync step runs,
so incomplete or invalid generated output is not published.
make buildSet GH_TOKEN if you want a higher GitHub API rate limit:
GH_TOKEN=ghp_... make buildThe build script intentionally uses only Bash plus the standard GitHub Actions
CLI tools: gh, jq, and curl.
The sync workflow publishes dist/ with rclone. The storage backend is
intentionally configured through generic rclone settings rather than
provider-specific workflow logic:
RCLONE_CONFIG # secret containing a complete rclone config file
RCLONE_DESTINATION # variable or secret, for example: `deps:<bucket-name>`
The public DNS name deps.podplane.dev points at the object-storage bucket
configured by RCLONE_DESTINATION. If the backing store changes later, only the
rclone config/destination should need to change; the generated dist/ tree and
public URL layout stay the same.
The workflow runs periodically, on pushes to main, and by manual
workflow_dispatch. Manifest-producing repositories can trigger it after their
release workflow has created the GitHub Release and uploaded the manifest asset.
Those repositories use a GitHub App token with access to podplane/deps and
permission to dispatch workflows:
- name: Create deps app token
id: deps-app
uses: actions/create-github-app-token@v2
with:
app-id: ${{ vars.PODPLANE_DEPS_APP_ID }}
private-key: ${{ secrets.PODPLANE_DEPS_APP_PRIVATE_KEY }}
owner: podplane
repositories: deps
- name: Trigger deps sync
env:
GH_TOKEN: ${{ steps.deps-app.outputs.token }}
run: |
gh workflow run sync.yml \
--repo podplane/deps \
--ref main \
-f source_repo="${GITHUB_REPOSITORY}" \
-f source_ref="${GITHUB_REF_NAME}"The source_repo and source_ref fields are only for audit/debug logs. The sync
workflow always reconciles every configured manifest, so publishing repositories
do not get direct write access to the published bucket.
Learn more about Podplane at the official project website: podplane.dev
Podplane is licensed under the Apache License, Version 2.0. Copyright The Podplane Authors.
See the LICENSE file for details.