Automatically creates git tags when version numbers change in code. Triggers on pushes to main that modify version files.
| Chain | Version Source | Tag Format |
|---|---|---|
| IDN node | chains/ideal-network/node/Cargo.toml |
node/v0.4.0 |
| IDN runtime | chains/ideal-network/runtime/src/lib.rs (spec_version) |
runtime/v11 |
| IDNC node | chains/idn-consumer-chain/node/Cargo.toml |
consumer-node/v0.3.0 |
| IDNC runtime | chains/idn-consumer-chain/runtime/src/lib.rs (spec_version) |
consumer-runtime/v5 |
Docker images are built and pushed to Docker Hub automatically when node versions change.
- Triggers: Automatically on
node/v*tag push or manually via workflow dispatch - Images:
ideallabs/idn-node - Platforms: linux/amd64, linux/arm64
- Triggers: Automatically on
consumer-node/v*tag push or manually via workflow dispatch - Images:
ideallabs/idn-consumer-node - Platforms: linux/amd64, linux/arm64
Each build creates the following Docker tags:
vX.Y.Z- Full versionX.Y- Major.minor versionlatest- Most recent build
Builds run natively on each platform (no QEMU emulation):
- amd64 builds on
ubuntu-latest - arm64 builds on
ubuntu-24.04-arm
After both architectures complete, a manifest is created combining them into a multi-arch image.
Automatically deploys IDN collators to testnet GKE clusters when new Docker images are published.
- Triggers: Automatically after
docker.ymlcompletes successfully, or manually via workflow dispatch - Clusters: us-central1, europe-west1
- Strategy: Parallel deployment to all regions
Manually deploys IDN collators to mainnet GKE clusters.
- Triggers: Manual workflow dispatch only (requires typing
deployfor confirmation) - Clusters: us-central1, europe-west1, asia-east1
- Strategy: Sequential deployment (
max-parallel: 1) to minimize disruption
For deployment workflows to function:
Secrets:
GCP_SA_KEY: Service account JSON key with roles:roles/container.developerroles/container.clusterViewer
Variables:
GCP_PROJECT_ID: Your GCP project ID
Create the service account:
# Create service account
gcloud iam service-accounts create github-deploy \
--display-name="GitHub Actions Deploy"
# Grant permissions
gcloud projects add-iam-policy-binding your-project-id \
--member="serviceAccount:[email protected]" \
--role="roles/container.developer"
gcloud projects add-iam-policy-binding your-project-id \
--member="serviceAccount:[email protected]" \
--role="roles/container.clusterViewer"
# Create and download key
gcloud iam service-accounts keys create github-sa-key.json \
--iam-account=github-deploy@your-project-id.iam.gserviceaccount.com
# Add the contents of github-sa-key.json as the GCP_SA_KEY secret in GitHub- Bump the
versioninCargo.toml(for node) orspec_versioninlib.rs(for runtime) - Merge to
main auto-tag.ymldetects the version change and creates the appropriate tag- For node version changes, the corresponding Docker workflow triggers automatically
- For testnet,
deploy-testnet.ymltriggers after successful Docker build