|
| 1 | +```mermaid |
| 2 | +graph TB |
| 3 | + %% Input triggers and verification |
| 4 | + T[Signed Git Tag<br/>fennel-node-X.Y.Z] --> GV{GPG Signature<br/>Verification} |
| 5 | + GV -->|✅ Valid| CI[CI/CD Pipeline] |
| 6 | + GV -->|❌ Invalid| FAIL[Build Fails] |
| 7 | + |
| 8 | + %% Version extraction and propagation |
| 9 | + CI --> VE[Version Extraction<br/>X.Y.Z from tag] |
| 10 | + VE --> RT[Runtime Build<br/>srtool] |
| 11 | + VE --> CS[Chainspec Generation] |
| 12 | + VE --> DI[Docker Image Build] |
| 13 | + VE --> HC[Helm Chart Update] |
| 14 | + |
| 15 | + %% Runtime and chainspec processing |
| 16 | + RT --> WH[Wasm Hash<br/>sha256] |
| 17 | + CS --> CSH[Chainspec SHA-256<br/>dev_sha + staging_sha] |
| 18 | + |
| 19 | + %% Docker image processing |
| 20 | + DI --> IT[Image Tag<br/>fennel-node-X.Y.Z] |
| 21 | + DI --> ID[Image Digest<br/>sha256:abc123...] |
| 22 | + |
| 23 | + %% Helm chart version unity |
| 24 | + HC --> CV[Chart Version<br/>X.Y.Z] |
| 25 | + HC --> CAV[Chart AppVersion<br/>X.Y.Z] |
| 26 | + |
| 27 | + %% Cryptographic linking in Helm values |
| 28 | + IT --> HV[Helm Values Update] |
| 29 | + ID --> HV |
| 30 | + CSH --> HV |
| 31 | + VE --> HV |
| 32 | + |
| 33 | + HV --> BV[Base values.yaml<br/>image.tag: X.Y.Z<br/>image.digest: sha256:...] |
| 34 | + HV --> SV[Staging values.yaml<br/>image.tag: X.Y.Z<br/>image.digest: sha256:...<br/>customChainspecSha256: abc123<br/>releaseTag: fennel-node-X.Y.Z] |
| 35 | + |
| 36 | + %% Template rendering with digest-aware image helper |
| 37 | + BV --> TH[{{fennel-node.image}} Helper] |
| 38 | + SV --> TH |
| 39 | + TH --> IR[Image Reference<br/>repo@sha256:digest OR repo:tag] |
| 40 | + |
| 41 | + %% Release artifact creation |
| 42 | + IT --> RA[Release Artifacts] |
| 43 | + ID --> RA |
| 44 | + WH --> RA |
| 45 | + CSH --> RA |
| 46 | + CV --> RA |
| 47 | + |
| 48 | + RA --> GR[GitHub Release<br/>• fennel-node-X.Y.Z.tgz<br/>• development.json + raw<br/>• staging-chainspec.json + raw<br/>• image-info.txt] |
| 49 | + RA --> HR[Helm Repository<br/>Chart Releaser] |
| 50 | + |
| 51 | + %% Deployment verification |
| 52 | + GR --> DV[Deployment Verification] |
| 53 | + HR --> DV |
| 54 | + DV --> VER[Runtime Verification<br/>• Image digest match<br/>• Chainspec SHA-256 match<br/>• Release tag consistency] |
| 55 | + |
| 56 | + %% Security guarantees |
| 57 | + VER --> SG[Security Guarantees<br/>✅ Cryptographic version unity<br/>✅ Immutable artifact references<br/>✅ Tamper detection<br/>✅ Reproducible deployments] |
| 58 | + |
| 59 | + %% Styling |
| 60 | + classDef input fill:#e1f5fe,stroke:#01579b,stroke-width:2px |
| 61 | + classDef process fill:#f3e5f5,stroke:#4a148c,stroke-width:2px |
| 62 | + classDef hash fill:#fff3e0,stroke:#e65100,stroke-width:2px |
| 63 | + classDef artifact fill:#e8f5e8,stroke:#1b5e20,stroke-width:2px |
| 64 | + classDef security fill:#ffebee,stroke:#b71c1c,stroke-width:2px |
| 65 | + classDef fail fill:#ffcdd2,stroke:#d32f2f,stroke-width:3px |
| 66 | + |
| 67 | + class T,GV input |
| 68 | + class CI,VE,RT,CS,DI,HC,HV,TH,DV process |
| 69 | + class WH,CSH,IT,ID,CV,CAV hash |
| 70 | + class BV,SV,IR,RA,GR,HR artifact |
| 71 | + class VER,SG security |
| 72 | + class FAIL fail |
| 73 | +``` |
| 74 | + |
| 75 | +## Cryptographic Version Unity Architecture |
| 76 | + |
| 77 | +This diagram illustrates how the fennel-solonet CI/CD pipeline enforces cryptographic version unity across all release artifacts. The system ensures that every component in a deployment can be traced back to a single, verified Git tag through an unbroken chain of cryptographic hashes and version references. |
| 78 | + |
| 79 | +### Key Security Features |
| 80 | + |
| 81 | +1. **Single Source of Truth**: The signed Git tag `fennel-node-X.Y.Z` is the authoritative version source |
| 82 | +2. **Cryptographic Verification**: GPG signature verification ensures tag authenticity |
| 83 | +3. **Hash Propagation**: SHA-256 hashes link runtime, chainspecs, and Docker images |
| 84 | +4. **Digest-Based References**: Helm charts use immutable Docker image digests |
| 85 | +5. **Comprehensive Verification**: Deployment verifies all hashes match expected values |
| 86 | + |
| 87 | +### Version Unity Enforcement |
| 88 | + |
| 89 | +- **Chart Version** = **App Version** = **Release Tag Version** = `X.Y.Z` |
| 90 | +- **Docker Image Tag** = `fennel-node-X.Y.Z` |
| 91 | +- **Docker Image Digest** = immutable `sha256:...` reference |
| 92 | +- **Chainspec SHA-256** = runtime verification hash |
| 93 | +- **Release Tag** = Git tag embedded in Helm values |
| 94 | + |
| 95 | +This architecture prevents version drift, ensures reproducible deployments, and provides cryptographic proof that all artifacts belong to the same verified release. |
0 commit comments