@intentsolutionsio/jeremy-github-actions-gcp 2.1.0 → 2.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -25,14 +25,17 @@ This plugin ensures secure, production-ready CI/CD pipelines for Vertex AI Agent
|
|
|
25
25
|
## Components
|
|
26
26
|
|
|
27
27
|
### Agent
|
|
28
|
+
|
|
28
29
|
- **gh-actions-gcp-expert**: Expert in GitHub Actions for Vertex AI / GCP deployments
|
|
29
30
|
|
|
30
31
|
### Skills (Auto-Activating)
|
|
32
|
+
|
|
31
33
|
- **gh-actions-validator**: Validates and enforces GitHub Actions best practices
|
|
32
34
|
- **Tool Permissions**: Read, Write, Edit, Grep, Glob, Bash
|
|
33
35
|
- **Version**: 1.0.0 (2026 schema compliant)
|
|
34
36
|
|
|
35
37
|
### Hooks
|
|
38
|
+
|
|
36
39
|
- **PreToolUse**: Validates workflow files before writing/editing
|
|
37
40
|
- Triggers on: `.github/workflows/*.yml`, `.github/workflows/*.yaml`
|
|
38
41
|
- Runs: `scripts/validate-workflow.sh`
|
|
@@ -58,6 +61,7 @@ The skill auto-activates and enforces best practices.
|
|
|
58
61
|
### 1. Workload Identity Federation (WIF) Mandatory
|
|
59
62
|
|
|
60
63
|
❌ **NEVER ALLOWED - JSON Service Account Keys**:
|
|
64
|
+
|
|
61
65
|
```yaml
|
|
62
66
|
# ❌ FORBIDDEN
|
|
63
67
|
- uses: google-github-actions/auth@v2
|
|
@@ -66,6 +70,7 @@ The skill auto-activates and enforces best practices.
|
|
|
66
70
|
```
|
|
67
71
|
|
|
68
72
|
✅ **REQUIRED - WIF with OIDC**:
|
|
73
|
+
|
|
69
74
|
```yaml
|
|
70
75
|
# ✅ ENFORCED
|
|
71
76
|
permissions:
|
|
@@ -89,10 +94,12 @@ permissions:
|
|
|
89
94
|
### 3. IAM Least Privilege
|
|
90
95
|
|
|
91
96
|
❌ **Overly Permissive Roles Blocked**:
|
|
97
|
+
|
|
92
98
|
- `roles/owner` - ❌ Blocked
|
|
93
99
|
- `roles/editor` - ❌ Blocked
|
|
94
100
|
|
|
95
101
|
✅ **Least Privilege Roles Required**:
|
|
102
|
+
|
|
96
103
|
- `roles/run.admin` - Cloud Run deployments
|
|
97
104
|
- `roles/iam.serviceAccountUser` - Service account impersonation
|
|
98
105
|
- `roles/aiplatform.user` - Vertex AI operations
|
|
@@ -100,6 +107,7 @@ permissions:
|
|
|
100
107
|
### 4. Post-Deployment Validation
|
|
101
108
|
|
|
102
109
|
For Vertex AI deployments, validation is **REQUIRED**:
|
|
110
|
+
|
|
103
111
|
```yaml
|
|
104
112
|
- name: Post-Deployment Validation
|
|
105
113
|
run: |
|
|
@@ -108,6 +116,7 @@ For Vertex AI deployments, validation is **REQUIRED**:
|
|
|
108
116
|
```
|
|
109
117
|
|
|
110
118
|
**Validation Checklist**:
|
|
119
|
+
|
|
111
120
|
- ✅ Agent state is RUNNING
|
|
112
121
|
- ✅ Code Execution Sandbox enabled (7-14 day TTL)
|
|
113
122
|
- ✅ Memory Bank configured
|
|
@@ -120,6 +129,7 @@ For Vertex AI deployments, validation is **REQUIRED**:
|
|
|
120
129
|
### 5. Security Scanning
|
|
121
130
|
|
|
122
131
|
**Recommended** (warnings if missing):
|
|
132
|
+
|
|
123
133
|
```yaml
|
|
124
134
|
- name: Scan for secrets
|
|
125
135
|
uses: trufflesecurity/trufflehog@main
|
|
@@ -279,7 +289,7 @@ jobs:
|
|
|
279
289
|
|
|
280
290
|
The plugin includes a **PreToolUse** hook that validates workflow files **before** they're written:
|
|
281
291
|
|
|
282
|
-
```
|
|
292
|
+
```text
|
|
283
293
|
# Automatically runs on .github/workflows/*.yml files
|
|
284
294
|
|
|
285
295
|
scripts/validate-workflow.sh <workflow-file>
|
|
@@ -300,6 +310,7 @@ scripts/validate-workflow.sh <workflow-file>
|
|
|
300
310
|
**Problem**: Using insecure JSON service account keys in workflows
|
|
301
311
|
|
|
302
312
|
**Solution**: Plugin enforces WIF and blocks JSON keys
|
|
313
|
+
|
|
303
314
|
```
|
|
304
315
|
User: "Create deployment workflow for Vertex AI"
|
|
305
316
|
|
|
@@ -315,6 +326,7 @@ Plugin provides:
|
|
|
315
326
|
**Problem**: Need production-ready CI/CD for ADK agents
|
|
316
327
|
|
|
317
328
|
**Solution**: Comprehensive deployment pipeline with validation
|
|
329
|
+
|
|
318
330
|
```
|
|
319
331
|
User: "Deploy my ADK agent to Vertex AI Engine"
|
|
320
332
|
|
|
@@ -332,6 +344,7 @@ Plugin provides:
|
|
|
332
344
|
**Problem**: Workflows missing security scanning or using weak IAM
|
|
333
345
|
|
|
334
346
|
**Solution**: Hook validation + skill enforcement
|
|
347
|
+
|
|
335
348
|
```
|
|
336
349
|
User: "Update my deployment workflow"
|
|
337
350
|
|
|
@@ -346,24 +359,29 @@ Plugin validates:
|
|
|
346
359
|
## Integration with Other Plugins
|
|
347
360
|
|
|
348
361
|
### jeremy-adk-orchestrator
|
|
362
|
+
|
|
349
363
|
- Provides CI/CD for ADK agent deployments
|
|
350
364
|
- Automates A2A protocol validation
|
|
351
365
|
|
|
352
366
|
### jeremy-vertex-validator
|
|
367
|
+
|
|
353
368
|
- GitHub Actions calls validator for post-deployment checks
|
|
354
369
|
- Production readiness scoring
|
|
355
370
|
|
|
356
371
|
### jeremy-vertex-engine
|
|
372
|
+
|
|
357
373
|
- CI/CD triggers vertex-engine-inspector
|
|
358
374
|
- Continuous health monitoring
|
|
359
375
|
|
|
360
376
|
### jeremy-adk-terraform
|
|
377
|
+
|
|
361
378
|
- GitHub Actions deploys Terraform infrastructure
|
|
362
379
|
- Automated provisioning
|
|
363
380
|
|
|
364
381
|
## Best Practices Summary
|
|
365
382
|
|
|
366
383
|
### Security (ENFORCED)
|
|
384
|
+
|
|
367
385
|
✅ Workload Identity Federation (WIF) - no JSON keys
|
|
368
386
|
✅ OIDC permissions (`id-token: write`)
|
|
369
387
|
✅ IAM least privilege (no owner/editor)
|
|
@@ -373,6 +391,7 @@ Plugin validates:
|
|
|
373
391
|
✅ Vulnerability scanning (Trivy)
|
|
374
392
|
|
|
375
393
|
### Vertex AI Specific (ENFORCED)
|
|
394
|
+
|
|
376
395
|
✅ Code Execution Sandbox (7-14 day TTL)
|
|
377
396
|
✅ Memory Bank enabled
|
|
378
397
|
✅ A2A Protocol compliance
|
|
@@ -382,6 +401,7 @@ Plugin validates:
|
|
|
382
401
|
✅ Alerting policies
|
|
383
402
|
|
|
384
403
|
### CI/CD (RECOMMENDED)
|
|
404
|
+
|
|
385
405
|
✅ Conditional job execution
|
|
386
406
|
✅ Dependency caching
|
|
387
407
|
✅ Concurrent jobs
|
|
@@ -542,6 +542,7 @@ jobs:
|
|
|
542
542
|
## When to Use This Agent
|
|
543
543
|
|
|
544
544
|
Activate this agent when you need:
|
|
545
|
+
|
|
545
546
|
- GitHub Actions workflow creation for GCP deployments
|
|
546
547
|
- Workload Identity Federation (WIF) setup
|
|
547
548
|
- Vertex AI Agent Engine deployment automation
|
|
@@ -564,6 +565,7 @@ Activate this agent when you need:
|
|
|
564
565
|
## Best Practices
|
|
565
566
|
|
|
566
567
|
### Security
|
|
568
|
+
|
|
567
569
|
✅ **Always use WIF** instead of JSON service account keys
|
|
568
570
|
✅ **Least privilege IAM** - Grant minimal required permissions
|
|
569
571
|
✅ **Attribute-based access control** - Restrict by repository/branch
|
|
@@ -572,12 +574,14 @@ Activate this agent when you need:
|
|
|
572
574
|
✅ **VPC Service Controls** for enterprise isolation
|
|
573
575
|
|
|
574
576
|
### Performance
|
|
577
|
+
|
|
575
578
|
✅ **Auto-scaling** configuration (min/max instances)
|
|
576
579
|
✅ **Caching** for Docker builds and dependencies
|
|
577
580
|
✅ **Concurrent job execution** when possible
|
|
578
581
|
✅ **Matrix builds** for testing across environments
|
|
579
582
|
|
|
580
583
|
### Reliability
|
|
584
|
+
|
|
581
585
|
✅ **Post-deployment validation** to ensure successful deployment
|
|
582
586
|
✅ **Health check endpoints** for services
|
|
583
587
|
✅ **Retry logic** with exponential backoff
|
|
@@ -585,6 +589,7 @@ Activate this agent when you need:
|
|
|
585
589
|
✅ **Monitoring setup** as part of deployment
|
|
586
590
|
|
|
587
591
|
### Cost Optimization
|
|
592
|
+
|
|
588
593
|
✅ **Preemptible runners** for non-critical jobs
|
|
589
594
|
✅ **Conditional job execution** (only run on relevant path changes)
|
|
590
595
|
✅ **Artifact caching** to reduce build times
|
package/package.json
CHANGED
|
@@ -1,13 +1,23 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: gh-actions-validator
|
|
3
|
-
description:
|
|
4
|
-
|
|
3
|
+
description: 'Validate use when validating GitHub Actions workflows for Google Cloud
|
|
4
|
+
and Vertex AI deployments. Trigger with phrases like "validate github actions",
|
|
5
|
+
"setup workload identity federation", "github actions security", "deploy agent with
|
|
6
|
+
ci/cd", or "automate vertex ai deployment". Enforces Workload Identity Federation
|
|
7
|
+
(WIF), validates OIDC permissions, ensures least privilege IAM, and implements security
|
|
8
|
+
best practices.
|
|
9
|
+
|
|
10
|
+
'
|
|
5
11
|
allowed-tools: Read, Write, Edit, Grep, Glob, Bash(git:*), Bash(gcloud:*)
|
|
6
12
|
version: 1.0.0
|
|
7
13
|
author: Jeremy Longshore <jeremy@intentsolutions.io>
|
|
8
14
|
license: MIT
|
|
9
|
-
|
|
10
|
-
|
|
15
|
+
tags:
|
|
16
|
+
- devops
|
|
17
|
+
- deployment
|
|
18
|
+
- gcp
|
|
19
|
+
- security
|
|
20
|
+
compatibility: Designed for Claude Code, also compatible with Codex and OpenClaw
|
|
11
21
|
---
|
|
12
22
|
# Gh Actions Validator
|
|
13
23
|
|
|
@@ -18,6 +28,7 @@ Validate and harden GitHub Actions workflows that deploy to Google Cloud (especi
|
|
|
18
28
|
## Prerequisites
|
|
19
29
|
|
|
20
30
|
Before using this skill, ensure:
|
|
31
|
+
|
|
21
32
|
- GitHub repository with Actions enabled
|
|
22
33
|
- Google Cloud project with billing enabled
|
|
23
34
|
- gcloud CLI authenticated with admin permissions
|
|
@@ -59,4 +70,4 @@ See `${CLAUDE_SKILL_DIR}/references/examples.md` for detailed examples.
|
|
|
59
70
|
- GitHub OIDC: https://docs.github.com/en/actions/deployment/security-hardening-your-deployments
|
|
60
71
|
- Vertex AI Agent Engine: https://cloud.google.com/vertex-ai/docs/agent-engine
|
|
61
72
|
- google-github-actions/auth: https://github.com/google-github-actions/auth
|
|
62
|
-
- WIF setup guide in ${CLAUDE_SKILL_DIR}/docs/wif-setup.md
|
|
73
|
+
- WIF setup guide in ${CLAUDE_SKILL_DIR}/docs/wif-setup.md
|
|
@@ -1,22 +1,27 @@
|
|
|
1
1
|
# Error Handling Reference
|
|
2
2
|
|
|
3
3
|
**WIF Authentication Failed**
|
|
4
|
+
|
|
4
5
|
- Error: "Failed to generate Google Cloud access token"
|
|
5
6
|
- Solution: Verify WIF provider and service account email are correct
|
|
6
7
|
|
|
7
8
|
**OIDC Token Error**
|
|
9
|
+
|
|
8
10
|
- Error: "Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable"
|
|
9
11
|
- Solution: Add `id-token: write` permission to workflow
|
|
10
12
|
|
|
11
13
|
**IAM Permission Denied**
|
|
14
|
+
|
|
12
15
|
- Error: "does not have required permission"
|
|
13
16
|
- Solution: Grant service account minimum required roles (run.admin, aiplatform.user)
|
|
14
17
|
|
|
15
18
|
**Attribute Condition Failed**
|
|
19
|
+
|
|
16
20
|
- Error: "Token does not match attribute condition"
|
|
17
21
|
- Solution: Update attribute mapping to include repository restriction
|
|
18
22
|
|
|
19
23
|
**Deployment Validation Failed**
|
|
24
|
+
|
|
20
25
|
- Error: "Agent not in RUNNING state"
|
|
21
26
|
- Solution: Check agent configuration and deployment logs
|
|
22
27
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# Examples
|
|
2
2
|
|
|
3
3
|
**Example: Harden an existing deployment workflow**
|
|
4
|
+
|
|
4
5
|
- Input: `.github/workflows/deploy.yml` that uses `credentials_json` or a downloaded service account key.
|
|
5
6
|
- Output: a WIF-based workflow using `google-github-actions/auth@v2`, minimal IAM roles, and a guardrail job that fails PRs when JSON keys appear in workflows.
|
|
6
7
|
|