Files
gh-awudevelop-claude-plugin…/commands/build.md
2025-11-29 17:59:27 +08:00

159 lines
4.0 KiB
Markdown

# DevOps Plugin - Trigger CI/CD Build
You are triggering a CI/CD build pipeline.
## Task: Trigger CI/CD Build
The user wants to trigger a CI/CD build. This command works with GitHub Actions, Jenkins, and managed CI/CD platforms.
### Step 1: Verify Configuration
1. Check if `.devops/config.json` exists
2. **Validate platform is supported**:
- Read config and get platform
- If platform is NOT "netlify", show error:
```
❌ Platform Not Supported: {platform}
This plugin currently supports Netlify only.
To switch to Netlify: /devops:init
Supported platforms: Netlify
```
Then STOP.
3. Read CI/CD configuration:
```bash
node ${CLAUDE_PLUGIN_ROOT}/cli/devops-cli.js config get --key cicd
```
4. For Netlify, CI/CD is always "netlify" (managed builds).
### Step 2: Parse Build Arguments
Parse command arguments:
- `/devops:build` - Trigger default build (main branch)
- `/devops:build --branch dev` - Build specific branch
- `/devops:build --workflow deploy` - Trigger specific workflow
- `/devops:build --env staging` - Build for specific environment
### Step 3: Trigger Build
Trigger build via CLI based on platform:
**GitHub Actions**:
```bash
node ${CLAUDE_PLUGIN_ROOT}/cli/devops-cli.js build trigger \
--platform github-actions \
--branch "{branch}" \
--workflow "{workflow}"
```
**Jenkins**:
```bash
node ${CLAUDE_PLUGIN_ROOT}/cli/devops-cli.js build trigger \
--platform jenkins \
--job "{job_name}" \
--params "{parameters}"
```
**Netlify/Vercel** (managed):
```bash
node ${CLAUDE_PLUGIN_ROOT}/cli/devops-cli.js build trigger \
--platform netlify \
--env "{environment}"
```
### Step 4: Display Build Information
Show build details:
```
✓ Build triggered successfully
Platform: {platform}
Branch: {branch}
Build ID: {build_id}
Status: {status}
🔗 Build URL: {build_url}
⏱️ Estimated time: {estimated_time}
💡 Monitor progress: /devops:build status --id {build_id}
```
### Step 5: Offer to Monitor Build
Ask: "Would you like to monitor the build progress?"
- If yes, run monitoring loop
- If no, done
If monitoring:
```bash
node ${CLAUDE_PLUGIN_ROOT}/cli/devops-cli.js build monitor --id {build_id}
```
Stream build status updates every 10 seconds:
```
🔄 Building... (30s elapsed)
📦 Running tests... (1m 15s elapsed)
✓ Build completed successfully! (2m 30s)
Artifacts:
- app.zip (15.2 MB)
- source-map.json (324 KB)
💡 Deploy now: /devops:deploy
```
### Step 6: Handle Build Failure
If build fails:
```
❌ Build failed
Error: {error_message}
Failed step: {failed_step}
📝 View full logs: /devops:logs --build {build_id}
🔗 Build URL: {build_url}
```
---
**Netlify Build System**:
Netlify provides fully managed builds:
- **Automatic builds** - Triggered on git push (if connected to repo)
- **Manual builds** - Can be triggered via this command
- **Deploy previews** - Automatic builds for pull requests
- **Build environment** - Ubuntu container with Node.js, Python, Ruby, Go, etc.
**How Netlify Builds Work**:
1. Detects project type (Next.js, React, Vue, static, etc.)
2. Installs dependencies (`npm install`, `yarn install`, etc.)
3. Runs build command (`npm run build`, `gatsby build`, etc.)
4. Optimizes assets (images, scripts, etc.)
5. Deploys to global CDN
6. Provides deploy preview URL
**Build Features**:
- ✓ Automatic dependency caching (faster builds)
- ✓ Build plugins (image optimization, form handling, etc.)
- ✓ Environment variables (injected at build time)
- ✓ Build hooks (trigger builds via webhook)
- ✓ Parallel builds (multiple environments)
**Note**: With Netlify, builds are typically triggered automatically when you deploy.
This command is useful for:
- Triggering manual builds without deploying
- Rebuilding with same code (e.g., if env vars changed)
- Building specific branch for preview
**IMPORTANT**:
- Netlify builds run in the cloud (not locally)
- Build logs available via `/devops:logs`
- Builds are free up to 300 minutes/month (Pro: 25,000 min/month)
- Successful builds are automatically deployed