Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
121 commits
Select commit Hold shift + click to select a range
25bf10b
feat: M3 - GitHub Action, Cluster, and E2E Golden Flow
intelliDean Mar 8, 2026
d4a5110
feat: implement reusable action and artifact parity
intelliDean Mar 8, 2026
1b667de
feat: implement reusable action and artifact parity
intelliDean Mar 8, 2026
0c07b62
fix: action pathing and CLI warnings
intelliDean Mar 8, 2026
5ff7144
fix: explicit project-dir for reliable Action pathing
intelliDean Mar 8, 2026
c361ee1
fix the action.yml
intelliDean Mar 9, 2026
f913d91
perf: optimize CI runtime by switching to debug builds and enabling c…
intelliDean Mar 9, 2026
15d293f
fix: zaino healthcheck and finalize performance optimizations
intelliDean Mar 9, 2026
a1f6641
fix: use absolute path for ZecKit binary in Action
intelliDean Mar 9, 2026
d12cae8
feat: implement container registry caching for CI performance
intelliDean Mar 9, 2026
52a6de7
fix: use docker/setup-buildx-action instead of actions
intelliDean Mar 9, 2026
a08aa51
fix: lowercase repository name in Docker tags for GHCR
intelliDean Mar 9, 2026
2eb66ba
fix: remove silent pull fallback for better CI diagnostics
intelliDean Mar 9, 2026
e32fd5a
fix: correct block generation sequence to prevent infinite wait loop
intelliDean Mar 10, 2026
e56cfbf
fix: add --profile flag to docker compose pull to actually fetch back…
intelliDean Mar 10, 2026
d17a4c1
fix: change runner from self-hosted to ubuntu-latest in smoke test
intelliDean Mar 10, 2026
9bd30a9
fix: pull ghcr images to avoid 10-minute timeout limit from source build
intelliDean Mar 10, 2026
0e5837c
fix: lowercase repository name for GHCR prefix
intelliDean Mar 10, 2026
9eb7316
fix: update smoke test script path to docker/healthchecks/check-zebra.sh
intelliDean Mar 10, 2026
4303779
fix: make background miner persist during tests and fix artifact name…
intelliDean Mar 10, 2026
80dba46
docs: add self-hosted runner instructions and revert smoke-test.yml r…
intelliDean Mar 11, 2026
1509631
fix: e2e-test.yml docker pull GHCR caching and exec container resolution
intelliDean Mar 11, 2026
4d3bcbb
fix: remove obsolete regtest feature flag from zingo build
intelliDean Mar 11, 2026
8fc8904
fix: add missing docker log collection to action.yml on failure
intelliDean Mar 12, 2026
a8269e2
fix(cli): make test_shielded_send return error on insufficient balanc…
intelliDean Mar 12, 2026
9b35331
fix(cli): make test_wallet_shield throw error instead of skipping on …
intelliDean Mar 12, 2026
d49d2ed
fix(action): safely catch test exit code to ensure outputs are popula…
intelliDean Mar 12, 2026
53c0069
docs: add Failure Drills guide and example-app
intelliDean Mar 12, 2026
d408d75
chore: relocate example-app to sample repo and update docs
intelliDean Mar 12, 2026
9bf9ea2
feat(cli): add 'zeckit init' command to auto-generate CI workflows an…
intelliDean Mar 12, 2026
c99ea09
docs: finalize README and walkthrough for Milestone 3 completion
intelliDean Mar 12, 2026
ff52fdf
fix(cli,faucet): stabilize devnet sync, add timeouts and retries
intelliDean Mar 13, 2026
9a5366c
Fix CI actions pathing
intelliDean Mar 13, 2026
7498d40
Fix artifact collision by including job ID
intelliDean Mar 13, 2026
abf76d5
docs: Add detailed explanation for the 'zeckit init' command
intelliDean Mar 13, 2026
6871f6f
docs: add local devnet startup guide and update readme
intelliDean Mar 13, 2026
4af7a1d
fix(cli): decoupling init output path from project_dir
intelliDean Mar 13, 2026
7fff092
Fix: made down command profile-aware and fixed unused variable warning
intelliDean Mar 13, 2026
2c8a03d
Update init template to use intelliDean fork
intelliDean Mar 13, 2026
c1c162e
fix(action): make docker pull optional to support forks
intelliDean Mar 22, 2026
647f527
feat: embed docker configs for standalone CLI and fix Zaino init crash
intelliDean Mar 23, 2026
8b5623d
fix(zaino): resolve faucet shielding failures and API timeouts in NU6.1
intelliDean Mar 23, 2026
a02bc5d
fix(ci): allow docker builds in action and fix brittle balance check …
intelliDean Mar 23, 2026
4aac91c
fix(cli): replace incompatible info! macro with println! to restore C…
intelliDean Mar 23, 2026
f7f43c7
fix(consensus): use regtest_parameters in zebra configs to fix CBID m…
intelliDean Mar 23, 2026
c967a5c
fix(consensus): use Nu6_1 key and testnet_parameters for regtest
intelliDean Mar 23, 2026
23cb7a2
fix(consensus): fallback to NU6 for both Zebra and Zingo to fix mismatch
intelliDean Mar 23, 2026
927fb48
fix(consensus): fallback to NU5 for consistency across Zebra and Zingo
intelliDean Mar 23, 2026
a3aff1a
fix(cli): support --build in CI and respect timeout in all health checks
intelliDean Mar 24, 2026
748f576
fix(action): pass ZECKIT_SRC_PATH to CLI for absolute build context r…
intelliDean Mar 24, 2026
7254e0d
chore: enable image builds for feat branch and optimize faucet docker…
intelliDean Mar 24, 2026
e3718b4
fix(action): update default image_prefix to user's GHCR
intelliDean Mar 24, 2026
58f3e8b
fix(test): save faucet-stats.json on failure + revert Dockerfile carg…
intelliDean Mar 24, 2026
d88de6c
ci: disable forced build in action.yml to speed up CI
intelliDean Mar 24, 2026
9584a07
docs: update README with CI optimization details and M3 status
intelliDean Mar 24, 2026
b567a14
feat(up): add --miner-address, --fund-address, --fund-amount for stan…
intelliDean Mar 25, 2026
06bf53a
feat(config): support latest network upgrades (NU6/NU6.1) on Regtest
intelliDean Mar 25, 2026
b9579b1
Revert "feat(config): support latest network upgrades (NU6/NU6.1) on …
intelliDean Mar 25, 2026
4767693
fix(config): drop NU6.1, use NU5+NU6 for zingolib compatibility
intelliDean Mar 25, 2026
2fbcec3
fix(config): revert to NU5 only — NU6 blocked on faucet zingolib upgrade
intelliDean Mar 25, 2026
65d2635
feat(nu6): enable NU6 and NU6.1 in faucet and zebra configs
intelliDean Mar 25, 2026
1e561b8
ci: add feat/nu6-upgrade to image build trigger
intelliDean Mar 25, 2026
63edbc1
feat: upgrade zeckit-faucet core components to zingolib v3.0.0
intelliDean Mar 26, 2026
6b876dc
feat: update configs and workflows for NU6 support
intelliDean Mar 26, 2026
a19056f
feat: update CLI up command for NU6 support and improved logging
intelliDean Mar 26, 2026
4388891
Merge pull request #2 from intelliDean/feat/nu6-upgrade
intelliDean Mar 26, 2026
38fe533
docs: update README and startup guide for NU6 support milestone
intelliDean Mar 26, 2026
7647cad
Merge pull request #3 from intelliDean/feat/nu6-upgrade
intelliDean Mar 26, 2026
9476a71
feat(nu6): final verified NU6/NU6.1 support and documentation
intelliDean Mar 26, 2026
8b0b74a
Merge branch 'feat/nu6-upgrade' into m3-implementation
intelliDean Mar 26, 2026
bcdb352
ci: fix race condition by allowing source builds in E2E tests
intelliDean Mar 26, 2026
7a6e20b
fix(config): synchronize NU6/NU6.1 activation heights across devnet
intelliDean Mar 26, 2026
d7d3c70
chore: stabilize devnet and fix CI portability issues
intelliDean Apr 2, 2026
7b38b7f
fix(docker): add missing libsqlite3-dev dependency to zingo build
intelliDean Apr 2, 2026
62fdd40
fix(ci): sync service names and fix docker compose profile error
intelliDean Apr 2, 2026
e8c366e
feat(ci): harden image prefix propagation for fork portability
intelliDean Apr 2, 2026
c6b741d
feat(cli): harden workflow generator for external projects
intelliDean Apr 2, 2026
bc1dfe6
docs: finalize README and add standardized USAGE guide
intelliDean Apr 2, 2026
889edef
docs: sync finalized documentation from main
intelliDean Apr 2, 2026
45ff7c7
chore: integrate build optimizations and release infrastructure (1.0.…
intelliDean Apr 2, 2026
9ffb606
chore: include Cargo.lock and fix zingolib tag for alpha.2
intelliDean Apr 3, 2026
196fddb
fix: remove --locked from release workflow for alpha.3
intelliDean Apr 3, 2026
fe6a897
chore: fix CI workflows and triggers for v1.0.0-alpha.4
intelliDean Apr 3, 2026
61d1239
docs: add Milestone 4 roadmap for v1.1.0
intelliDean Apr 3, 2026
059ef64
fix: make binary download fork-aware using github.action_repository
intelliDean Apr 3, 2026
b4fb7a9
fix: robust fork-aware repo detection using path-parsing
intelliDean Apr 3, 2026
43ca445
docs: clarify CLI usage from external directories in USAGE.md
intelliDean Apr 3, 2026
11b32f1
feat(cli): robust toolkit detection and project-dir support for init …
intelliDean Apr 3, 2026
a750f91
feat(workspace): add root Cargo workspace unifying cli and zeckit-faucet
intelliDean Apr 3, 2026
adfe8fc
refactor(workspace): consolidate release profiles at workspace root
intelliDean Apr 3, 2026
f7e9fa9
chore(docker): optimize root workspace Docker build context
intelliDean Apr 3, 2026
792eb71
docs: check off completed Root Rust Workspace item in MILESTONE 4 TODO
intelliDean Apr 3, 2026
81c088b
feat(ci): add macOS aarch64 binary compilation and retrieval support
intelliDean Apr 3, 2026
73529d2
ci(dependabot): add workflow for automated dependency bumping
intelliDean Apr 3, 2026
260b82c
test(validation): increase test coverage and deployment metrics
intelliDean Apr 3, 2026
4b47212
docs: finalize M4 documentation and UX metrics
intelliDean Apr 3, 2026
43742c4
Merge feat/macos-arm64-binary
intelliDean Apr 3, 2026
498324c
Merge branch 'feat/dependabot'
intelliDean Apr 3, 2026
d0dd713
Merge branch 'feat/testing-validation'
intelliDean Apr 3, 2026
88e7dda
Merge branch 'docs/ux'
intelliDean Apr 3, 2026
c29b6c1
ci: remove redundant legacy workflow arrays
intelliDean Apr 3, 2026
3bbfdbe
chore: remove redundant and outdated project artifacts
intelliDean Apr 3, 2026
8c586be
ci: fix macOS parity execution and workspace path alignments
intelliDean Apr 3, 2026
d36c2fd
ci: fix missing colima macro dependency resolving macOS Docker runtime
intelliDean Apr 3, 2026
f8727a9
ci: stabilize CI by disabling fail-fast and switching to Intel-based …
intelliDean Apr 3, 2026
ef7bd6a
ci: switch macOS runner to macos-12 for Intel/Docker compatibility
intelliDean Apr 4, 2026
92de628
ci: update macOS CI to support Apple Silicon (ARM64) with build & uni…
intelliDean Apr 4, 2026
24ecfc5
chore: merge stable Milestone 4 implementation into main
intelliDean Apr 4, 2026
07184e8
chore: bump version to 1.0.0 for Milestone 4 production release
intelliDean Apr 4, 2026
cc88ac8
ci: restructure release workflow to prevent race conditions
intelliDean Apr 5, 2026
22e828d
chore: bump version to 1.0.1 for CI release fix verification
intelliDean Apr 5, 2026
a67cc64
chore: refine CLI metadata and instructions for v1.0.1 crates.io release
intelliDean Apr 5, 2026
124da2f
chore: stability fixes for v1.0.2 (sync parity + graceful sync)
intelliDean Apr 5, 2026
48f32ee
chore: bump version to v1.0.2 in Cargo.toml
intelliDean Apr 5, 2026
9115059
chore: stability fixes for v1.0.3 (soft-fail sync parity)
intelliDean Apr 5, 2026
d22f381
ci: increase E2E startup timeout to 20 mins for Zaino stabilization
intelliDean Apr 6, 2026
29c05f9
chore: bump version to v1.0.4
intelliDean Apr 6, 2026
c23aefe
chore: stabilize CI by switching to pull-based E2E tests
intelliDean Apr 6, 2026
62ee567
feat: enable multi-arch Docker builds (AMD64 & ARM64)
intelliDean Apr 6, 2026
52deb7c
chore: resolve merge conflicts and sync with universal infrastructure
intelliDean Apr 7, 2026
12cce72
docs: prioritize crates.io installation in USAGE.md
intelliDean Apr 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
target/
.git/
.github/
.idea/
.vscode/
fixtures/
docs/
specs/
docker/
README.md
USAGE.md
CONTRIBUTING.md
**/*.log
**/*.rs.bk
17 changes: 17 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
version: 2
updates:
# Maintain Cargo dependencies natively (includes git-pinned crates like zingolib)
- package-ecosystem: "cargo"
directory: "/"
schedule:
interval: "weekly"
open-pull-requests-limit: 5
labels:
- "dependencies"
- "rust"

# Keep GitHub Actions up to date mapping automatically
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
70 changes: 70 additions & 0 deletions .github/workflows/build-images.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
name: Build and Push Docker Images

on:
push:
branches:
- main
- develop
pull_request:
branches:
- main
- develop
workflow_dispatch:


permissions:
contents: read
packages: write

jobs:
build-and-push:
runs-on: ubuntu-latest
strategy:
matrix:
include:
- service: zebrad
context: ./docker/zebra
- service: zebra-sync
context: ./docker/zebra
- service: lightwalletd
context: ./docker/lightwalletd
- service: zaino
context: ./docker/zaino
- service: zingo
context: ./docker/zingo
- service: zeckit-faucet
context: .
dockerfile: ./zeckit-faucet/Dockerfile

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set up QEMU
uses: docker/setup-qemu-action@v3

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Login to GHCR
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Lowercase repo
id: repo
shell: bash
run: echo "name=${GITHUB_REPOSITORY,,}" >> $GITHUB_OUTPUT

- name: Build and push
uses: docker/build-push-action@v6
with:
context: ${{ matrix.context }}
file: ${{ matrix.dockerfile || format('{0}/Dockerfile', matrix.context) }}
push: true
platforms: linux/amd64,linux/arm64
tags: ghcr.io/${{ steps.repo.outputs.name }}/${{ matrix.service }}:latest
cache-from: type=gha
cache-to: type=gha,mode=max
140 changes: 140 additions & 0 deletions .github/workflows/ci-action-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
# ============================================================
# ZecKit – CI Self-Test for the Published Action
# ============================================================
# Exercises the root action.yml and the reusable golden-e2e
# workflow against both backends on every push/PR to main.
#
# This is also the workflow that prospective callers can use as
# a copy-paste reference for their own repos.
# ============================================================

name: Action CI Self-Test

on:
push:
branches:
- main
- m3-implementation
- 'release/**'
pull_request:
branches:
- main
- m3-implementation
workflow_dispatch:
inputs:
backend:
description: 'Backend to test (zaino | lwd | both)'
required: false
default: 'both'
upload_artifacts:
description: 'Artifact upload policy (always | on-failure | never)'
required: false
default: 'on-failure'

permissions:
contents: read
packages: read

# ============================================================
# STRATEGY MATRIX
# ============================================================
jobs:

# ----------------------------------------------------------
# Determine which backends to run based on trigger
# ----------------------------------------------------------
set-matrix:
name: Set test matrix
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.matrix.outputs.matrix }}
steps:
- name: Build backend matrix
id: matrix
shell: bash
run: |
requested="${{ github.event.inputs.backend }}"

if [[ "$requested" == "zaino" ]]; then
echo 'matrix={"backend":["zaino"]}' >> "$GITHUB_OUTPUT"
elif [[ "$requested" == "lwd" ]]; then
echo 'matrix={"backend":["lwd"]}' >> "$GITHUB_OUTPUT"
else
# Default: both backends
echo 'matrix={"backend":["zaino","lwd"]}' >> "$GITHUB_OUTPUT"
fi

# ----------------------------------------------------------
# Run the golden E2E flow via the COMPOSITE ACTION directly
# ----------------------------------------------------------
composite-action-test:
name: "Composite Action – ${{ matrix.backend }}"
needs: set-matrix
runs-on: ubuntu-latest
timeout-minutes: 30

strategy:
fail-fast: false
matrix: ${{ fromJson(needs.set-matrix.outputs.matrix) }}

steps:
- name: Checkout ZecKit
uses: actions/checkout@v4

- name: Run ZecKit E2E composite action (self-test)
id: e2e
uses: ./
with:
backend: ${{ matrix.backend }}
startup_timeout_minutes: '10'
block_wait_seconds: '75'
send_amount: '0.05'
send_memo: 'CI self-test – ${{ matrix.backend }}'
upload_artifacts: ${{ github.event.inputs.upload_artifacts || 'on-failure' }}
ghcr_token: ${{ secrets.GITHUB_TOKEN }}

- name: Print action outputs
if: always()
shell: bash
run: |
echo "unified_address : ${{ steps.e2e.outputs.unified_address }}"
echo "transparent_address : ${{ steps.e2e.outputs.transparent_address }}"
echo "shield_txid : ${{ steps.e2e.outputs.shield_txid }}"
echo "send_txid : ${{ steps.e2e.outputs.send_txid }}"
echo "final_orchard_balance : ${{ steps.e2e.outputs.final_orchard_balance }} ZEC"
echo "block_height : ${{ steps.e2e.outputs.block_height }}"
echo "test_result : ${{ steps.e2e.outputs.test_result }}"

- name: Assert test_result is 'pass'
shell: bash
run: |
result="${{ steps.e2e.outputs.test_result }}"
if [[ "$result" != "pass" ]]; then
echo "::error::Golden E2E returned test_result='$result' (expected 'pass')."
exit 1
fi
echo "✓ test_result=pass"


# ----------------------------------------------------------
# Gate: all matrix jobs must pass
# ----------------------------------------------------------
ci-gate:
name: CI Gate
needs:
- composite-action-test
runs-on: ubuntu-latest
if: always()
steps:
- name: Check all jobs
shell: bash
run: |
composite="${{ needs.composite-action-test.result }}"

echo "composite-action-test : $composite"

if [[ "$composite" != "success" ]]; then
echo "::error::One or more composite-action jobs failed."
exit 1
fi
echo "✓ All CI jobs passed."
Loading