@el-j/magic-helix-core 4.0.0-beta.2 → 4.0.0-beta.3

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.
Files changed (165) hide show
  1. package/dist/index-B88j4AyE.js +13 -0
  2. package/dist/index-B88j4AyE.js.map +1 -0
  3. package/dist/index-CY-pQbuu.cjs +2 -0
  4. package/dist/index-CY-pQbuu.cjs.map +1 -0
  5. package/dist/index.cjs +75 -1
  6. package/dist/index.cjs.map +1 -1
  7. package/dist/index.d.ts +0 -1
  8. package/dist/index.mjs +2234 -51
  9. package/dist/index.mjs.map +1 -1
  10. package/dist/pattern-combiner.d.ts +1 -1
  11. package/dist/plugin-loader.d.ts +2 -1
  12. package/package.json +4 -4
  13. package/dist/BasePlugin-6wv0hYJ9.js +0 -98
  14. package/dist/BasePlugin-6wv0hYJ9.js.map +0 -1
  15. package/dist/BasePlugin-odQJAKA-.cjs +0 -2
  16. package/dist/BasePlugin-odQJAKA-.cjs.map +0 -1
  17. package/dist/builtin-plugins/base/BasePlugin.d.ts +0 -69
  18. package/dist/builtin-plugins/cpp/index.d.ts +0 -46
  19. package/dist/builtin-plugins/csharp/index.d.ts +0 -20
  20. package/dist/builtin-plugins/go/index.d.ts +0 -23
  21. package/dist/builtin-plugins/index.d.ts +0 -16
  22. package/dist/builtin-plugins/java/index.d.ts +0 -22
  23. package/dist/builtin-plugins/nodejs/index.d.ts +0 -44
  24. package/dist/builtin-plugins/php/index.d.ts +0 -20
  25. package/dist/builtin-plugins/python/index.d.ts +0 -27
  26. package/dist/builtin-plugins/ruby/index.d.ts +0 -20
  27. package/dist/builtin-plugins/rust/index.d.ts +0 -53
  28. package/dist/builtin-plugins/swift/index.d.ts +0 -22
  29. package/dist/default_templates/angular/angular-core.md +0 -19
  30. package/dist/default_templates/architecture/codeowners.md +0 -123
  31. package/dist/default_templates/architecture/monorepo.md +0 -146
  32. package/dist/default_templates/architecture/nx.md +0 -122
  33. package/dist/default_templates/architecture/turborepo.md +0 -114
  34. package/dist/default_templates/ci/github-actions.md +0 -268
  35. package/dist/default_templates/ci/gitlab-ci.md +0 -330
  36. package/dist/default_templates/containers/docker-multistage.md +0 -120
  37. package/dist/default_templates/containers/kubernetes-deploy.md +0 -210
  38. package/dist/default_templates/devops/docker-compose.md +0 -111
  39. package/dist/default_templates/devops/docker-dockerfile.md +0 -94
  40. package/dist/default_templates/devops/github-actions.md +0 -160
  41. package/dist/default_templates/devops/gitlab-ci.md +0 -210
  42. package/dist/default_templates/dotnet/framework-aspnetcore.md +0 -205
  43. package/dist/default_templates/dotnet/framework-blazor.md +0 -271
  44. package/dist/default_templates/dotnet/lang-csharp.md +0 -162
  45. package/dist/default_templates/generic/lang-typescript.md +0 -57
  46. package/dist/default_templates/generic/state-redux.md +0 -21
  47. package/dist/default_templates/generic/state-rxjs.md +0 -6
  48. package/dist/default_templates/generic/style-mui.md +0 -23
  49. package/dist/default_templates/generic/style-tailwind.md +0 -76
  50. package/dist/default_templates/generic/test-cypress.md +0 -21
  51. package/dist/default_templates/generic/test-jest.md +0 -20
  52. package/dist/default_templates/generic/test-playwright.md +0 -21
  53. package/dist/default_templates/generic/test-vitest.md +0 -131
  54. package/dist/default_templates/go/lang-go.md +0 -571
  55. package/dist/default_templates/java/build-gradle.md +0 -102
  56. package/dist/default_templates/java/build-maven.md +0 -86
  57. package/dist/default_templates/java/framework-spring-boot.md +0 -179
  58. package/dist/default_templates/java/lang-java.md +0 -78
  59. package/dist/default_templates/java/lang-kotlin.md +0 -88
  60. package/dist/default_templates/meta/magic-helix-meta.md +0 -213
  61. package/dist/default_templates/meta/meta-debug.md +0 -459
  62. package/dist/default_templates/meta/meta-implement.md +0 -450
  63. package/dist/default_templates/meta/meta-roadmap.md +0 -265
  64. package/dist/default_templates/nestjs/nestjs-core.md +0 -7
  65. package/dist/default_templates/patterns/architecture/clean-architecture.md +0 -469
  66. package/dist/default_templates/patterns/architecture/dependency-injection.md +0 -517
  67. package/dist/default_templates/patterns/architecture/domain-driven-design.md +0 -621
  68. package/dist/default_templates/patterns/architecture/layered-architecture.md +0 -382
  69. package/dist/default_templates/patterns/architecture/repository-pattern.md +0 -408
  70. package/dist/default_templates/patterns/domain-expertise/nextjs-rules.md +0 -115
  71. package/dist/default_templates/patterns/domain-expertise/react-patterns.md +0 -181
  72. package/dist/default_templates/patterns/domain-expertise/server-components.md +0 -212
  73. package/dist/default_templates/patterns/domain-expertise/shadcn-ui.md +0 -52
  74. package/dist/default_templates/patterns/domain-expertise/tailwind-patterns.md +0 -52
  75. package/dist/default_templates/patterns/environment/container-awareness.md +0 -17
  76. package/dist/default_templates/patterns/environment/ide-features.md +0 -17
  77. package/dist/default_templates/patterns/environment/os-commands.md +0 -17
  78. package/dist/default_templates/patterns/organization/heading-hierarchy.md +0 -103
  79. package/dist/default_templates/patterns/organization/sequential-workflows.md +0 -102
  80. package/dist/default_templates/patterns/organization/xml-rule-groups.md +0 -64
  81. package/dist/default_templates/patterns/reasoning/agent-loop.md +0 -151
  82. package/dist/default_templates/patterns/reasoning/confirmation-gates.md +0 -141
  83. package/dist/default_templates/patterns/reasoning/dependency-analysis.md +0 -132
  84. package/dist/default_templates/patterns/reasoning/one-tool-per-iteration.md +0 -152
  85. package/dist/default_templates/patterns/reasoning/preview-before-action.md +0 -194
  86. package/dist/default_templates/patterns/reasoning/reflection-checkpoints.md +0 -166
  87. package/dist/default_templates/patterns/reasoning/result-verification.md +0 -157
  88. package/dist/default_templates/patterns/reasoning/subtask-breakdown.md +0 -131
  89. package/dist/default_templates/patterns/reasoning/thinking-tags.md +0 -100
  90. package/dist/default_templates/patterns/role-definition/capability-declarations.md +0 -72
  91. package/dist/default_templates/patterns/role-definition/expert-identity.md +0 -45
  92. package/dist/default_templates/patterns/role-definition/scope-boundaries.md +0 -61
  93. package/dist/default_templates/patterns/safety/code-safety-rules.md +0 -17
  94. package/dist/default_templates/patterns/safety/credential-handling.md +0 -17
  95. package/dist/default_templates/patterns/safety/destructive-warnings.md +0 -17
  96. package/dist/default_templates/patterns/safety/refusal-messages.md +0 -17
  97. package/dist/default_templates/patterns/tone/adaptive-tone.md +0 -17
  98. package/dist/default_templates/patterns/tone/concise-communication.md +0 -17
  99. package/dist/default_templates/patterns/tone/forbidden-phrases.md +0 -17
  100. package/dist/default_templates/patterns/tool-guidelines/function-schemas.md +0 -143
  101. package/dist/default_templates/patterns/tool-guidelines/parameter-examples.md +0 -137
  102. package/dist/default_templates/patterns/tool-guidelines/usage-policies.md +0 -105
  103. package/dist/default_templates/php/framework-laravel.md +0 -112
  104. package/dist/default_templates/php/lang-php.md +0 -94
  105. package/dist/default_templates/python/lang-python.md +0 -508
  106. package/dist/default_templates/react/react-core.md +0 -677
  107. package/dist/default_templates/react/react-zustand.md +0 -7
  108. package/dist/default_templates/ruby/framework-rails.md +0 -309
  109. package/dist/default_templates/ruby/framework-sinatra.md +0 -227
  110. package/dist/default_templates/ruby/lang-ruby.md +0 -216
  111. package/dist/default_templates/rust/lang-rust.md +0 -89
  112. package/dist/default_templates/swift/framework-vapor.md +0 -352
  113. package/dist/default_templates/swift/lang-swift.md +0 -291
  114. package/dist/default_templates/vue/style-primevue.md +0 -6
  115. package/dist/default_templates/vue/style-quasar.md +0 -22
  116. package/dist/default_templates/vue/vue-core.md +0 -108
  117. package/dist/default_templates/vue/vue-pinia.md +0 -5
  118. package/dist/index-0GK4RlUx.js +0 -1748
  119. package/dist/index-0GK4RlUx.js.map +0 -1
  120. package/dist/index-AkVwRl-r.js +0 -92
  121. package/dist/index-AkVwRl-r.js.map +0 -1
  122. package/dist/index-B6BeG1yT.cjs +0 -68
  123. package/dist/index-B6BeG1yT.cjs.map +0 -1
  124. package/dist/index-B8pyjKdF.js +0 -94
  125. package/dist/index-B8pyjKdF.js.map +0 -1
  126. package/dist/index-BQ6v041y.js +0 -13
  127. package/dist/index-BQ6v041y.js.map +0 -1
  128. package/dist/index-Baxb1vI_.js +0 -210
  129. package/dist/index-Baxb1vI_.js.map +0 -1
  130. package/dist/index-Bg8DD8ku.js +0 -216
  131. package/dist/index-Bg8DD8ku.js.map +0 -1
  132. package/dist/index-BqTqxCpG.cjs +0 -89
  133. package/dist/index-BqTqxCpG.cjs.map +0 -1
  134. package/dist/index-Bv4Q1Pr7.cjs +0 -33
  135. package/dist/index-Bv4Q1Pr7.cjs.map +0 -1
  136. package/dist/index-CN8J45Nc.cjs +0 -24
  137. package/dist/index-CN8J45Nc.cjs.map +0 -1
  138. package/dist/index-CPbv2Od1.js +0 -62
  139. package/dist/index-CPbv2Od1.js.map +0 -1
  140. package/dist/index-Cf-MC6Al.js +0 -63
  141. package/dist/index-Cf-MC6Al.js.map +0 -1
  142. package/dist/index-DDPXXXDy.cjs +0 -19
  143. package/dist/index-DDPXXXDy.cjs.map +0 -1
  144. package/dist/index-DO30AzDe.cjs +0 -19
  145. package/dist/index-DO30AzDe.cjs.map +0 -1
  146. package/dist/index-DkvW5yBY.js +0 -2249
  147. package/dist/index-DkvW5yBY.js.map +0 -1
  148. package/dist/index-Dn1ehjIj.cjs +0 -80
  149. package/dist/index-Dn1ehjIj.cjs.map +0 -1
  150. package/dist/index-DqHvgoXJ.cjs +0 -19
  151. package/dist/index-DqHvgoXJ.cjs.map +0 -1
  152. package/dist/index-K39pdw94.cjs +0 -31
  153. package/dist/index-K39pdw94.cjs.map +0 -1
  154. package/dist/index-OT2XAJkc.js +0 -117
  155. package/dist/index-OT2XAJkc.js.map +0 -1
  156. package/dist/index-TPAX4XKg.cjs +0 -30
  157. package/dist/index-TPAX4XKg.cjs.map +0 -1
  158. package/dist/index-WmVSB57y.js +0 -107
  159. package/dist/index-WmVSB57y.js.map +0 -1
  160. package/dist/index-mYXvc3Fs.js +0 -68
  161. package/dist/index-mYXvc3Fs.js.map +0 -1
  162. package/dist/index-nioXOg4m.cjs +0 -76
  163. package/dist/index-nioXOg4m.cjs.map +0 -1
  164. package/dist/index-okhY3fWD.cjs +0 -2
  165. package/dist/index-okhY3fWD.cjs.map +0 -1
@@ -1,111 +0,0 @@
1
- # Docker Compose Best Practices
2
-
3
- ## Overview
4
- This project uses Docker Compose for multi-container orchestration.
5
-
6
- ## Commands
7
- - Start services: `docker compose up`
8
- - Start in background: `docker compose up -d`
9
- - Stop services: `docker compose down`
10
- - View logs: `docker compose logs -f`
11
- - Rebuild: `docker compose up --build`
12
- - Run command: `docker compose exec <service> <command>`
13
-
14
- ## Service Definition
15
- - Define services clearly with descriptive names
16
- - Specify image or build context
17
- - Set restart policies: `restart: unless-stopped`
18
- - Use environment variables
19
- - Define health checks
20
-
21
- ## Networking
22
- - Services can communicate by service name
23
- - Define custom networks if needed
24
- - Use `depends_on` for startup order
25
- - Expose only necessary ports
26
-
27
- ## Volumes
28
- - Use named volumes for persistent data
29
- - Use bind mounts for development
30
- - Mount volumes in development for hot reload
31
- - Example:
32
- ```yaml
33
- volumes:
34
- - ./src:/app/src
35
- - node_modules:/app/node_modules
36
- ```
37
-
38
- ## Environment Variables
39
- - Use `.env` file for environment variables
40
- - Reference in compose file: `${VARIABLE_NAME}`
41
- - Use `env_file` directive for multiple files
42
- - Never commit sensitive `.env` files
43
-
44
- ## Development vs Production
45
- - Use `docker-compose.yml` for base configuration
46
- - Use `docker-compose.override.yml` for development
47
- - Use `docker-compose.prod.yml` for production
48
- - Override with: `docker compose -f docker-compose.yml -f docker-compose.prod.yml up`
49
-
50
- ## Common Services
51
- - **Database**: PostgreSQL, MySQL, MongoDB
52
- - **Cache**: Redis, Memcached
53
- - **Queue**: RabbitMQ, Redis
54
- - **Web Server**: Nginx, Apache
55
-
56
- ## Best Practices
57
- - Pin service versions
58
- - Use health checks for dependencies
59
- - Set resource limits in production
60
- - Use secrets for sensitive data (v3.1+)
61
- - Don't run containers as root
62
- - Use separate networks for isolation
63
-
64
- ## Example Structure
65
- ```yaml
66
- version: '3.8'
67
-
68
- services:
69
- app:
70
- build: .
71
- ports:
72
- - "3000:3000"
73
- environment:
74
- - NODE_ENV=development
75
- volumes:
76
- - .:/app
77
- - /app/node_modules
78
- depends_on:
79
- - db
80
- - redis
81
-
82
- db:
83
- image: postgres:15-alpine
84
- environment:
85
- POSTGRES_DB: myapp
86
- POSTGRES_USER: user
87
- POSTGRES_PASSWORD: password
88
- volumes:
89
- - postgres_data:/var/lib/postgresql/data
90
-
91
- redis:
92
- image: redis:7-alpine
93
- ports:
94
- - "6379:6379"
95
-
96
- volumes:
97
- postgres_data:
98
- ```
99
-
100
- ## Troubleshooting
101
- - Check logs: `docker compose logs <service>`
102
- - Inspect containers: `docker compose ps`
103
- - Access shell: `docker compose exec <service> sh`
104
- - View networks: `docker network ls`
105
- - Clean up: `docker compose down -v` (removes volumes)
106
-
107
- ## Performance
108
- - Use volumes for better I/O performance
109
- - Limit services to necessary ones during development
110
- - Use profiles to group optional services
111
- - Consider using `docker compose watch` for development
@@ -1,94 +0,0 @@
1
- # Dockerfile Best Practices
2
-
3
- ## Overview
4
- This project uses Docker for containerization. Follow Docker best practices for efficient and secure images.
5
-
6
- ## Multi-Stage Builds
7
- - Use multi-stage builds to reduce final image size
8
- - Separate build and runtime stages
9
- - Copy only necessary artifacts to final stage
10
- - Example:
11
- ```dockerfile
12
- FROM node:20 AS builder
13
- WORKDIR /app
14
- COPY package*.json ./
15
- RUN npm ci
16
- COPY . .
17
- RUN npm run build
18
-
19
- FROM node:20-slim
20
- WORKDIR /app
21
- COPY --from=builder /app/dist ./dist
22
- COPY package*.json ./
23
- RUN npm ci --only=production
24
- CMD ["node", "dist/index.js"]
25
- ```
26
-
27
- ## Base Image Selection
28
- - Use official images when available
29
- - Choose slim or alpine variants for smaller sizes
30
- - Pin specific versions, avoid `latest` tag
31
- - Use distroless images for production when possible
32
-
33
- ## Layer Optimization
34
- - Order instructions from least to most frequently changing
35
- - Combine RUN commands to reduce layers
36
- - Use `.dockerignore` to exclude unnecessary files
37
- - Clean up in the same RUN command (apt-get clean, rm cache)
38
-
39
- ## Security Best Practices
40
- - Run as non-root user: `USER node` or custom user
41
- - Scan images for vulnerabilities regularly
42
- - Don't store secrets in images
43
- - Use `COPY` instead of `ADD` unless you need tar extraction
44
- - Keep base images updated
45
-
46
- ## Dockerfile Instructions
47
- - `FROM`: Base image
48
- - `WORKDIR`: Set working directory
49
- - `COPY`: Copy files (preferred over ADD)
50
- - `RUN`: Execute commands
51
- - `CMD`: Default command (can be overridden)
52
- - `ENTRYPOINT`: Main executable (harder to override)
53
- - `ENV`: Set environment variables
54
- - `EXPOSE`: Document ports (doesn't actually publish)
55
- - `VOLUME`: Define mount points
56
-
57
- ## Environment Variables
58
- - Use `ENV` for build-time variables
59
- - Use `ARG` for build arguments
60
- - Don't hardcode sensitive data
61
- - Use `.env` files with docker-compose
62
-
63
- ## Health Checks
64
- - Define `HEALTHCHECK` instruction
65
- - Example: `HEALTHCHECK CMD curl -f http://localhost/ || exit 1`
66
- - Helps orchestrators know when container is ready
67
-
68
- ## Image Tagging
69
- - Tag images with semantic versions
70
- - Use descriptive tags: `app:1.2.3`, `app:latest`, `app:dev`
71
- - Don't rely solely on `latest` tag
72
-
73
- ## Build Context
74
- - Keep build context small
75
- - Use `.dockerignore` file
76
- - Exclude: `node_modules`, `.git`, `dist`, test files
77
- - Only include what's needed for the build
78
-
79
- ## Performance Tips
80
- - Use layer caching effectively
81
- - Leverage BuildKit features
82
- - Use `--mount=type=cache` for package managers
83
- - Minimize the number of layers in final image
84
-
85
- ## Common Patterns
86
- - Copy package files first, then install dependencies
87
- - This caches dependencies when source code changes
88
- - Use `COPY package*.json ./` before `RUN npm install`
89
-
90
- ## Documentation
91
- - Add labels for metadata: `LABEL maintainer="team@example.com"`
92
- - Include README with Docker commands
93
- - Document exposed ports and volumes
94
- - Provide example docker-compose.yml
@@ -1,160 +0,0 @@
1
- # GitHub Actions CI/CD Guidelines
2
-
3
- ## Overview
4
- This project uses GitHub Actions for CI/CD workflows. Follow best practices for efficient and maintainable workflows.
5
-
6
- ## Workflow Structure
7
- ```yaml
8
- name: CI
9
-
10
- on:
11
- push:
12
- branches: [ main, develop ]
13
- pull_request:
14
- branches: [ main ]
15
-
16
- jobs:
17
- test:
18
- runs-on: ubuntu-latest
19
- steps:
20
- - uses: actions/checkout@v4
21
- - uses: actions/setup-node@v4
22
- with:
23
- node-version: '20'
24
- - run: npm ci
25
- - run: npm test
26
- ```
27
-
28
- ## Triggers
29
- - `push`: On push to branches
30
- - `pull_request`: On PRs
31
- - `workflow_dispatch`: Manual trigger
32
- - `schedule`: Cron-based scheduling
33
- - `release`: On release creation
34
-
35
- ## Common Actions
36
- - `actions/checkout@v4`: Checkout code
37
- - `actions/setup-node@v4`: Setup Node.js
38
- - `actions/cache@v4`: Cache dependencies
39
- - `actions/upload-artifact@v4`: Upload artifacts
40
- - `actions/download-artifact@v4`: Download artifacts
41
-
42
- ## Best Practices
43
-
44
- ### Use Matrix Strategy
45
- ```yaml
46
- strategy:
47
- matrix:
48
- node-version: [18, 20, 22]
49
- os: [ubuntu-latest, windows-latest, macos-latest]
50
- ```
51
-
52
- ### Cache Dependencies
53
- ```yaml
54
- - uses: actions/cache@v4
55
- with:
56
- path: ~/.npm
57
- key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
58
- restore-keys: |
59
- ${{ runner.os }}-node-
60
- ```
61
-
62
- ### Use Secrets
63
- - Store sensitive data in GitHub Secrets
64
- - Access via: `${{ secrets.SECRET_NAME }}`
65
- - Never hardcode credentials
66
-
67
- ### Conditional Steps
68
- ```yaml
69
- - name: Deploy
70
- if: github.ref == 'refs/heads/main'
71
- run: npm run deploy
72
- ```
73
-
74
- ### Reusable Workflows
75
- - Create reusable workflows in `.github/workflows/`
76
- - Call with `uses: ./.github/workflows/reusable.yml`
77
-
78
- ## Job Dependencies
79
- ```yaml
80
- jobs:
81
- build:
82
- runs-on: ubuntu-latest
83
- steps: [...]
84
-
85
- deploy:
86
- needs: build
87
- runs-on: ubuntu-latest
88
- steps: [...]
89
- ```
90
-
91
- ## Environment Variables
92
- ```yaml
93
- env:
94
- NODE_ENV: production
95
- API_URL: https://api.example.com
96
- ```
97
-
98
- ## Artifacts
99
- - Upload build outputs for later jobs
100
- - Download in subsequent jobs or manually
101
- - Artifacts expire after 90 days by default
102
-
103
- ## Concurrency Control
104
- ```yaml
105
- concurrency:
106
- group: ${{ github.workflow }}-${{ github.ref }}
107
- cancel-in-progress: true
108
- ```
109
-
110
- ## Performance Tips
111
- - Use caching for dependencies
112
- - Run independent jobs in parallel
113
- - Use `if` conditions to skip unnecessary steps
114
- - Use `continue-on-error` for non-critical steps
115
-
116
- ## Security
117
- - Use pinned versions of actions: `actions/checkout@v4`
118
- - Review third-party actions before use
119
- - Use GITHUB_TOKEN for authentication
120
- - Enable branch protection rules
121
- - Use environments for deployment approvals
122
-
123
- ## Debugging
124
- - Enable debug logging: Set secret `ACTIONS_STEP_DEBUG` to `true`
125
- - Use `actions/upload-artifact` to save debug files
126
- - Check workflow logs in Actions tab
127
-
128
- ## Common Patterns
129
-
130
- ### Build and Test
131
- ```yaml
132
- - name: Install dependencies
133
- run: npm ci
134
- - name: Build
135
- run: npm run build
136
- - name: Test
137
- run: npm test
138
- ```
139
-
140
- ### Deploy on Main
141
- ```yaml
142
- - name: Deploy
143
- if: github.ref == 'refs/heads/main' && github.event_name == 'push'
144
- run: npm run deploy
145
- ```
146
-
147
- ### Docker Build and Push
148
- ```yaml
149
- - name: Build and push
150
- uses: docker/build-push-action@v5
151
- with:
152
- push: true
153
- tags: user/app:latest
154
- ```
155
-
156
- ## Monitoring
157
- - Check workflow status in Actions tab
158
- - Set up status checks for required workflows
159
- - Use workflow badges in README
160
- - Enable notifications for failures
@@ -1,210 +0,0 @@
1
- # GitLab CI/CD Guidelines
2
-
3
- ## Overview
4
- This project uses GitLab CI/CD for continuous integration and deployment. Follow best practices for efficient pipelines.
5
-
6
- ## Pipeline Structure
7
- ```yaml
8
- stages:
9
- - build
10
- - test
11
- - deploy
12
-
13
- variables:
14
- NODE_VERSION: "20"
15
-
16
- build:
17
- stage: build
18
- image: node:${NODE_VERSION}
19
- script:
20
- - npm ci
21
- - npm run build
22
- artifacts:
23
- paths:
24
- - dist/
25
- expire_in: 1 hour
26
-
27
- test:
28
- stage: test
29
- image: node:${NODE_VERSION}
30
- script:
31
- - npm ci
32
- - npm test
33
- coverage: '/Coverage: \d+\.\d+%/'
34
-
35
- deploy:
36
- stage: deploy
37
- script:
38
- - npm run deploy
39
- only:
40
- - main
41
- environment:
42
- name: production
43
- ```
44
-
45
- ## Stages
46
- - Define pipeline stages: `build`, `test`, `deploy`
47
- - Jobs in same stage run in parallel
48
- - Stages run sequentially
49
- - Use dependencies for job order within stage
50
-
51
- ## Jobs
52
- - Each job runs in isolated environment
53
- - Define image for Docker-based runners
54
- - Use `script` for commands
55
- - Use `before_script` and `after_script` for setup/cleanup
56
-
57
- ## Variables
58
- - Define global variables in `variables:` section
59
- - Use in scripts: `$VARIABLE_NAME`
60
- - Set in GitLab CI/CD settings for secrets
61
- - Use `file` type for certificates
62
-
63
- ## Artifacts
64
- - Share files between jobs
65
- - Define in `artifacts:` section
66
- - Set expiration: `expire_in: 1 week`
67
- - Download from pipeline UI
68
-
69
- ## Cache
70
- ```yaml
71
- cache:
72
- key: ${CI_COMMIT_REF_SLUG}
73
- paths:
74
- - node_modules/
75
- - .npm/
76
- ```
77
-
78
- ## Rules and Conditions
79
- ```yaml
80
- deploy:
81
- script: deploy.sh
82
- rules:
83
- - if: $CI_COMMIT_BRANCH == "main"
84
- - when: manual # Require manual trigger
85
- ```
86
-
87
- ## Docker Integration
88
- ```yaml
89
- build-docker:
90
- image: docker:latest
91
- services:
92
- - docker:dind
93
- script:
94
- - docker build -t myapp .
95
- - docker push myapp
96
- ```
97
-
98
- ## Services
99
- - Run side containers (database, cache)
100
- - Example: `services: - postgres:15`
101
- - Access via hostname: `postgres`
102
-
103
- ## Environments
104
- - Define deployment environments
105
- - Track deployments in GitLab
106
- - Enable auto-rollback
107
- - Use protected environments
108
-
109
- ## Include and Extends
110
- ```yaml
111
- include:
112
- - local: '/.gitlab-ci-template.yml'
113
-
114
- .node_job:
115
- image: node:20
116
- before_script:
117
- - npm ci
118
-
119
- test:
120
- extends: .node_job
121
- script:
122
- - npm test
123
- ```
124
-
125
- ## Parallel Jobs
126
- ```yaml
127
- test:
128
- parallel: 3
129
- script:
130
- - npm test -- --shard=$CI_NODE_INDEX/$CI_NODE_TOTAL
131
- ```
132
-
133
- ## Triggers
134
- - `push`: On every push
135
- - `merge_request_event`: On MR creation/update
136
- - `schedule`: Scheduled pipelines
137
- - `api`: Triggered via API
138
- - `manual`: Requires manual action
139
-
140
- ## Best Practices
141
- - Use `.gitlab-ci.yml` in repository root
142
- - Pin image versions
143
- - Use cache for dependencies
144
- - Separate build and deploy stages
145
- - Use artifacts for build outputs
146
- - Set appropriate timeout values
147
- - Use rules instead of only/except
148
- - Validate YAML before committing
149
-
150
- ## Performance
151
- - Use cache effectively
152
- - Run jobs in parallel when possible
153
- - Use shallow clone: `GIT_DEPTH: 1`
154
- - Optimize Docker images
155
- - Use artifacts sparingly
156
-
157
- ## Security
158
- - Never commit secrets to `.gitlab-ci.yml`
159
- - Use masked variables for secrets
160
- - Use protected variables for sensitive data
161
- - Scan for vulnerabilities in dependencies
162
- - Use SAST and DAST tools
163
-
164
- ## Debugging
165
- - Check pipeline logs in CI/CD > Pipelines
166
- - Use `CI_DEBUG_TRACE: "true"` for verbose logs
167
- - Test locally with GitLab Runner
168
- - Use `when: always` to run on failure
169
-
170
- ## Common Patterns
171
-
172
- ### Node.js Project
173
- ```yaml
174
- test:
175
- image: node:20
176
- script:
177
- - npm ci
178
- - npm test
179
- artifacts:
180
- reports:
181
- coverage_report:
182
- coverage_format: cobertura
183
- path: coverage/cobertura-coverage.xml
184
- ```
185
-
186
- ### Manual Deployment
187
- ```yaml
188
- deploy:
189
- stage: deploy
190
- script:
191
- - deploy.sh
192
- when: manual
193
- only:
194
- - main
195
- ```
196
-
197
- ### Multi-Project Pipeline
198
- ```yaml
199
- trigger_downstream:
200
- trigger:
201
- project: group/downstream-project
202
- branch: main
203
- ```
204
-
205
- ## Monitoring
206
- - View pipeline status in GitLab UI
207
- - Enable email notifications
208
- - Use badges in README
209
- - Monitor pipeline duration
210
- - Track deployment frequency