Skip to content

Commit 7e0c045

Browse files
committed
have claude generate a task dependency graph
1 parent e327eeb commit 7e0c045

File tree

2 files changed

+179
-0
lines changed

2 files changed

+179
-0
lines changed

applications/wg-easy/CLAUDE.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,12 @@ Key components:
104104
- **Shared Templates**: Provide reusable components across charts
105105
- **Replicated Integration**: Enables enterprise distribution
106106

107+
### Taskfile Development Guidelines
108+
109+
When developing or modifying tasks in the Taskfile:
110+
111+
⚠️ **Important**: Always update the [task dependency graph](task-dependency-graph.md) when adding, removing, or changing task dependencies. The graph provides critical visibility into task relationships and workflow dependencies for both development and CI/CD operations.
112+
107113
## `wg-easy` Chart
108114

109115
wg-easy uses the `bjw-s/common` [library chart](https://github.com/bjw-s-labs/helm-charts/tree/main) to generate Kubernetes resources. Library charts are commonly used to create DRY templates when authoring Helm charts.
Lines changed: 173 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,173 @@
1+
# WG-Easy Taskfile Dependency Graph
2+
3+
## Visual Dependency Flow
4+
5+
```mermaid
6+
graph TD
7+
%% Infrastructure Setup Chain
8+
CC[cluster-create] --> SK[setup-kubeconfig]
9+
SK --> CPE[cluster-ports-expose]
10+
CPE --> HI[helm-install]
11+
VK[verify-kubeconfig] --> SK
12+
13+
%% Chart Development Chain
14+
HRA[helm-repo-add] --> DU[dependencies-update]
15+
DU --> CLA[chart-lint-all]
16+
DU --> CTA[chart-template-all]
17+
CLA --> CV[chart-validate]
18+
CTA --> CV
19+
20+
%% Release Chain
21+
DU --> RP[release-prepare]
22+
RP --> RC[release-create]
23+
24+
%% Test Workflows
25+
CC --> FTC[full-test-cycle]
26+
SK --> FTC
27+
CPE --> FTC
28+
DU --> FTC
29+
HI --> FTC
30+
T[test] --> FTC
31+
CD[cluster-delete] --> FTC
32+
33+
%% Customer Workflow
34+
CC --> CFTC[customer-full-test-cycle]
35+
SK --> CFTC
36+
CPE --> CFTC
37+
DU --> CFTC
38+
CCR[customer-create] --> CFTC
39+
CHI[customer-helm-install] --> CFTC
40+
T --> CFTC
41+
42+
%% PR Validation Workflow
43+
CV --> PVC[pr-validation-cycle]
44+
CCR --> PVC
45+
CC --> PVC
46+
SK --> PVC
47+
CPE --> PVC
48+
CHI --> PVC
49+
T --> PVC
50+
51+
%% Cleanup
52+
CD --> CPR[cleanup-pr-resources]
53+
CUST_DEL[customer-delete] --> CPR
54+
CH_DEL[channel-delete] --> CPR
55+
56+
%% Utility Dependencies
57+
CC -.-> UWC[utils:wait-for-cluster]
58+
SK -.-> UGK[utils:get-kubeconfig]
59+
CPE -.-> UPO[utils:port-operations]
60+
61+
%% Container Workflows
62+
DS[dev:start] --> DSH[dev:shell]
63+
DS --> DR[dev:restart]
64+
DST[dev:stop] --> DR
65+
```
66+
67+
## Task Complexity Levels
68+
69+
### Simple Tasks (No Dependencies)
70+
- `default`, `test`, `cluster-list`
71+
- `customer-create`, `customer-ls`, `customer-delete`
72+
- `channel-create`, `channel-delete`
73+
- `clean`, `airgap-build`
74+
- All `dev:*` base tasks
75+
- All `utils:*` tasks
76+
77+
### Moderate Tasks (1-2 Dependencies)
78+
- `dependencies-update``helm-repo-add`
79+
- `chart-lint-all``dependencies-update`
80+
- `chart-template-all``dependencies-update`
81+
- `setup-kubeconfig``cluster-create`, `verify-kubeconfig`
82+
- `cluster-ports-expose``cluster-create`
83+
84+
### Complex Tasks (3+ Dependencies)
85+
- `helm-install``setup-kubeconfig`, `cluster-ports-expose`
86+
- `chart-validate``chart-lint-all`, `chart-template-all`
87+
- `release-create``release-prepare``dependencies-update`
88+
89+
### Workflow Orchestrators (High Complexity)
90+
- **full-test-cycle**: 8 task calls
91+
- **customer-full-test-cycle**: 7 task calls
92+
- **pr-validation-cycle**: 9 task calls
93+
- **cleanup-pr-resources**: 3 cleanup task calls
94+
95+
## Critical Path Analysis
96+
97+
### For Development (Chart Testing)
98+
```
99+
helm-repo-add → dependencies-update → chart-lint-all/chart-template-all → chart-validate
100+
```
101+
102+
### For Deployment Testing
103+
```
104+
cluster-create → setup-kubeconfig → cluster-ports-expose → helm-install → test
105+
```
106+
107+
### For Release Management
108+
```
109+
helm-repo-add → dependencies-update → release-prepare → release-create
110+
```
111+
112+
### For PR Validation (Complete Flow)
113+
```
114+
chart-validate → customer-create → cluster-create → setup-kubeconfig →
115+
cluster-ports-expose → customer-helm-install → test
116+
```
117+
118+
## Dependency Characteristics
119+
120+
- **Linear Dependencies**: Most tasks follow clear sequential patterns
121+
- **Parallel Opportunities**: Chart validation tasks can run in parallel
122+
- **Resource Dependencies**: Infrastructure tasks must run in order
123+
- **Cleanup Isolation**: Cleanup tasks are independent of build/deploy chains
124+
- **Utility Abstraction**: Common operations abstracted to utils namespace
125+
126+
## Task Reference
127+
128+
### Infrastructure Tasks
129+
| Task | Dependencies | Purpose |
130+
|------|-------------|---------|
131+
| `cluster-create` | None | Create test cluster using Replicated CMX |
132+
| `setup-kubeconfig` | `cluster-create`, `verify-kubeconfig` | Configure kubectl access |
133+
| `cluster-ports-expose` | `cluster-create` | Expose cluster ports for access |
134+
| `cluster-delete` | None | Clean up test clusters |
135+
136+
### Chart Development Tasks
137+
| Task | Dependencies | Purpose |
138+
|------|-------------|---------|
139+
| `helm-repo-add` | None | Add required Helm repositories |
140+
| `dependencies-update` | `helm-repo-add` | Update all chart dependencies |
141+
| `chart-lint-all` | `dependencies-update` | Lint all Helm charts |
142+
| `chart-template-all` | `dependencies-update` | Template charts for validation |
143+
| `chart-validate` | `chart-lint-all`, `chart-template-all` | Complete chart validation |
144+
| `chart-package-all` | `dependencies-update` | Package charts for distribution |
145+
146+
### Deployment Tasks
147+
| Task | Dependencies | Purpose |
148+
|------|-------------|---------|
149+
| `helm-install` | `setup-kubeconfig`, `cluster-ports-expose` | Deploy charts using helmfile |
150+
| `customer-helm-install` | Same as `helm-install` | Deploy using customer license |
151+
| `helm-uninstall` | `setup-kubeconfig` | Remove deployed charts |
152+
153+
### Release Tasks
154+
| Task | Dependencies | Purpose |
155+
|------|-------------|---------|
156+
| `release-prepare` | `dependencies-update` | Prepare release artifacts |
157+
| `release-create` | `release-prepare` | Create and promote Replicated release |
158+
159+
### Workflow Tasks
160+
| Task | Dependencies | Purpose |
161+
|------|-------------|---------|
162+
| `full-test-cycle` | 8 tasks | Complete testing workflow |
163+
| `customer-full-test-cycle` | 7 tasks | Customer-focused testing workflow |
164+
| `pr-validation-cycle` | 9 tasks | PR validation workflow |
165+
| `cleanup-pr-resources` | 3 cleanup tasks | Clean up PR test resources |
166+
167+
### Development Container Tasks
168+
| Task | Dependencies | Purpose |
169+
|------|-------------|---------|
170+
| `dev:start` | None | Start development container |
171+
| `dev:shell` | `dev:start` | Attach to container shell |
172+
| `dev:restart` | `dev:stop`, `dev:start` | Restart development container |
173+
| `dev:stop` | None | Stop development container |

0 commit comments

Comments
 (0)