gem-ci 0.2.1 โ 0.4.0
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.
- checksums.yaml +4 -4
- data/.env.example +35 -0
- data/.secrets.example +33 -0
- data/.slack/app-manifest.json +23 -0
- data/CHANGELOG.md +114 -0
- data/README.md +104 -75
- data/docs/_config.yml +60 -0
- data/docs/diagrams/ci-workflow-overview.md +28 -17
- data/docs/diagrams/gitflow-diagram.md +233 -0
- data/docs/guides/gitflow.md +266 -0
- data/docs/guides/local-testing.md +323 -0
- data/docs/index.md +112 -0
- data/docs/setup/github-pages.md +147 -0
- data/docs/{SECRETS_SETUP_GUIDE.md โ setup/secrets.md} +7 -7
- data/docs/workflows/overview.md +259 -0
- data/lib/gem_ci/version.rb +1 -1
- data/public/gem-ci-transparent-bg.png +0 -0
- data/public/gem-ci.jpeg +0 -0
- data/public/gem-ci.svg +3621 -0
- data/scripts/README.md +258 -0
- data/scripts/test-local +315 -0
- data/scripts/test-workflows +303 -0
- metadata +19 -4
- data/docs/MANUAL_WORKFLOW_TESTING.md +0 -190
@@ -0,0 +1,259 @@
|
|
1
|
+
---
|
2
|
+
title: Workflow Overview
|
3
|
+
description: Complete guide to all gem-ci workflows and their functionality
|
4
|
+
---
|
5
|
+
|
6
|
+
# ๐ Workflow Overview
|
7
|
+
|
8
|
+
*Complete documentation of all 9 gem-ci workflows and their functionality*
|
9
|
+
|
10
|
+
## ๐ฏ Workflow Architecture
|
11
|
+
|
12
|
+
gem-ci includes **9 comprehensive workflows** that provide complete automation for Ruby gem development:
|
13
|
+
|
14
|
+
## ๐ Core Workflows
|
15
|
+
|
16
|
+
### **01 - Intake** (`01-intake.yml`)
|
17
|
+
|
18
|
+
**Purpose**: First contact and organization for issues and PRs
|
19
|
+
|
20
|
+
**Triggers**:
|
21
|
+
- Issues: `opened`, `edited`, `reopened`
|
22
|
+
- Pull Requests: `opened`, `edited`, `reopened`, `synchronize`
|
23
|
+
- Push to: `.github/config/labels.yml`
|
24
|
+
|
25
|
+
**Key Features**:
|
26
|
+
- ๐ท๏ธ **Label Synchronization**: Syncs repository labels from config
|
27
|
+
- ๐ค **Auto-labeling**: Automatically labels PRs based on file changes
|
28
|
+
- ๐ **Welcome Messages**: Greets first-time contributors
|
29
|
+
- ๐ **PR Size Detection**: Labels PRs by size (XS, S, M, L, XL)
|
30
|
+
|
31
|
+
**Dependencies**: GitHub App authentication
|
32
|
+
|
33
|
+
---
|
34
|
+
|
35
|
+
### **02 - CI** (`02-ci.yml`)
|
36
|
+
|
37
|
+
**Purpose**: Continuous Integration with tests, linting, and builds
|
38
|
+
|
39
|
+
**Triggers**:
|
40
|
+
- Push/PR to: `main`, `master`
|
41
|
+
|
42
|
+
**Key Features**:
|
43
|
+
- ๐งช **Ruby 3.3 Testing**: Optimized single-version testing
|
44
|
+
- ๐๏ธ **Gem Building**: Automated gem packaging
|
45
|
+
- ๐ **Parallel Jobs**: Lint, security, docs in parallel
|
46
|
+
- ๐ **Performance Tracking**: Workflow duration monitoring
|
47
|
+
- ๐ **PR Status Updates**: Contributes to consolidated PR dashboard
|
48
|
+
|
49
|
+
**Cost Optimization**: Ubuntu-only runners, Ruby 3.3 only
|
50
|
+
|
51
|
+
---
|
52
|
+
|
53
|
+
### **03 - Security** (`03-security.yml`)
|
54
|
+
|
55
|
+
**Purpose**: Comprehensive security scanning and vulnerability detection
|
56
|
+
|
57
|
+
**Triggers**:
|
58
|
+
- Push/PR to: `main`, `master`
|
59
|
+
- Schedule: Weekly Wednesday 2 AM UTC
|
60
|
+
|
61
|
+
**Key Features**:
|
62
|
+
- ๐ **CodeQL Analysis**: Static code analysis
|
63
|
+
- ๐ก๏ธ **Dependency Scanning**: Vulnerability detection in dependencies
|
64
|
+
- ๐ **Secret Scanning**: Git history secret detection
|
65
|
+
- ๐ฆ **Bundle Audit**: Ruby gem vulnerability scanning
|
66
|
+
- ๐ **PR Status Updates**: Contributes to consolidated PR dashboard
|
67
|
+
|
68
|
+
**Cost Optimization**: Reduced from daily to weekly
|
69
|
+
|
70
|
+
---
|
71
|
+
|
72
|
+
### **04 - Quality** (`04-quality.yml`)
|
73
|
+
|
74
|
+
**Purpose**: Code quality enforcement and documentation
|
75
|
+
|
76
|
+
**Triggers**:
|
77
|
+
- Push/PR to: `main`, `master`
|
78
|
+
|
79
|
+
**Key Features**:
|
80
|
+
- ๐ **Focused Linting**: Custom YAML/JSON/Markdown validation
|
81
|
+
- ๐ **RuboCop Analysis**: Ruby code style enforcement
|
82
|
+
- ๐ **Documentation Generation**: YARD API documentation
|
83
|
+
- ๐ **Complexity Analysis**: Code complexity reporting
|
84
|
+
- ๐ **PR Status Updates**: Contributes to consolidated PR dashboard
|
85
|
+
|
86
|
+
**Performance Improvement**: Replaced super-linter with focused custom linting (~70% faster)
|
87
|
+
|
88
|
+
---
|
89
|
+
|
90
|
+
### **05 - Community** (`05-community.yml`)
|
91
|
+
|
92
|
+
**Purpose**: Community management and engagement
|
93
|
+
|
94
|
+
**Triggers**:
|
95
|
+
- Issues: `opened`, `edited`, `closed`, `reopened`
|
96
|
+
- Pull Requests: `opened`, `closed`
|
97
|
+
- Schedule: Weekly Tuesday 1 AM UTC
|
98
|
+
|
99
|
+
**Key Features**:
|
100
|
+
- ๐งน **Stale Management**: Automated stale issue/PR cleanup
|
101
|
+
- ๐ฅ **Contributor Recognition**: Achievement badges for contributors
|
102
|
+
- ๐ **Community Health**: Health metrics and reporting
|
103
|
+
- ๐ท๏ธ **Smart Labeling**: Context-aware issue labeling
|
104
|
+
|
105
|
+
**Cost Optimization**: Reduced from daily to weekly
|
106
|
+
|
107
|
+
---
|
108
|
+
|
109
|
+
### **06 - Release** (`06-release.yml`)
|
110
|
+
|
111
|
+
**Purpose**: Automated releases and publishing
|
112
|
+
|
113
|
+
**Triggers**:
|
114
|
+
- Push to: `main`, `master`
|
115
|
+
- Manual dispatch with release type selection
|
116
|
+
|
117
|
+
**Key Features**:
|
118
|
+
- ๐ฏ **Release Please**: Automated semantic versioning
|
119
|
+
- ๐ **Gem Building**: Automated gem packaging
|
120
|
+
- ๐ **Security Scanning**: Pre-release security validation
|
121
|
+
- ๐ฆ **RubyGems Publishing**: Automated gem publishing
|
122
|
+
- ๐ **GitHub Releases**: Automated release notes
|
123
|
+
- ๐ข **Notifications**: Slack release announcements
|
124
|
+
|
125
|
+
**Dependencies**: RubyGems API key, release environment
|
126
|
+
|
127
|
+
---
|
128
|
+
|
129
|
+
### **07 - Ecosystem** (`07-ecosystem.yml`)
|
130
|
+
|
131
|
+
**Purpose**: Ecosystem health and compatibility monitoring
|
132
|
+
|
133
|
+
**Triggers**:
|
134
|
+
- Push to: `main`, `master`
|
135
|
+
- Release events
|
136
|
+
- Schedule: Bi-weekly Sunday 3 AM UTC
|
137
|
+
|
138
|
+
**Key Features**:
|
139
|
+
- ๐ฆ **Dependency Health**: Outdated dependency reporting
|
140
|
+
- ๐งช **Compatibility Matrix**: Ruby version compatibility testing
|
141
|
+
- โก **Performance Benchmarks**: Release performance validation
|
142
|
+
- ๐ **Documentation Links**: Link health checking
|
143
|
+
- ๐ **Health Issues**: Automated health issue creation/updates
|
144
|
+
|
145
|
+
**Cost Optimization**: Reduced from weekly to bi-weekly, Ruby 3.3 only
|
146
|
+
|
147
|
+
---
|
148
|
+
|
149
|
+
### **08 - Monitoring** (`08-monitoring.yml`)
|
150
|
+
|
151
|
+
**Purpose**: Performance monitoring and health tracking
|
152
|
+
|
153
|
+
**Triggers**:
|
154
|
+
- Push/PR to: `main`, `master`
|
155
|
+
- Schedule: Weekly Monday 4 AM UTC
|
156
|
+
|
157
|
+
**Key Features**:
|
158
|
+
- ๐ **Workflow Metrics**: Performance and success tracking
|
159
|
+
- ๐ **Action Analysis**: Basic workflow health monitoring
|
160
|
+
- ๐ฅ **Repository Health**: Overall repository health checks
|
161
|
+
- ๐ **Performance Summary**: Automated performance reporting
|
162
|
+
|
163
|
+
**Cost Optimization**: Reduced from daily to weekly
|
164
|
+
|
165
|
+
---
|
166
|
+
|
167
|
+
### **09 - Bot Commands** (`09-bot-commands.yml`)
|
168
|
+
|
169
|
+
**Purpose**: Interactive bot commands for workflow management
|
170
|
+
|
171
|
+
**Triggers**:
|
172
|
+
- Issue comments containing `/gem-ci`
|
173
|
+
|
174
|
+
**Key Features**:
|
175
|
+
- ๐ **Release Management**: `/gem-ci revise release minor to patch`
|
176
|
+
- โ **Release Cancellation**: `/gem-ci cancel release`
|
177
|
+
- ๐ **Help System**: `/gem-ci help`
|
178
|
+
- ๐ค **Interactive Responses**: Emoji reactions and helpful messages
|
179
|
+
- โ ๏ธ **Error Handling**: Invalid command guidance
|
180
|
+
|
181
|
+
**Dependencies**: GitHub App authentication
|
182
|
+
|
183
|
+
## ๐ Workflow Dependencies
|
184
|
+
|
185
|
+
```mermaid
|
186
|
+
graph TD
|
187
|
+
A[GitHub App Token] --> B[01-Intake]
|
188
|
+
A --> C[03-Security]
|
189
|
+
A --> D[04-Quality]
|
190
|
+
A --> E[05-Community]
|
191
|
+
A --> F[06-Release]
|
192
|
+
A --> G[09-Bot Commands]
|
193
|
+
|
194
|
+
H[Slack Integration] --> I[Notifications]
|
195
|
+
J[RubyGems Token] --> F
|
196
|
+
|
197
|
+
K[02-CI Results] --> L[PR Dashboard]
|
198
|
+
M[03-Security Results] --> L
|
199
|
+
N[04-Quality Results] --> L
|
200
|
+
```
|
201
|
+
|
202
|
+
## ๐ Shared Actions
|
203
|
+
|
204
|
+
### **update-pr-status** (`.github/actions/update-pr-status`)
|
205
|
+
|
206
|
+
**Purpose**: Consolidated PR status comment management
|
207
|
+
|
208
|
+
**Used By**: CI, Security, Quality workflows
|
209
|
+
|
210
|
+
**Features**:
|
211
|
+
- ๐ Single PR status dashboard
|
212
|
+
- ๐ Smart comment updates (no spam)
|
213
|
+
- ๐ Direct links to workflow runs
|
214
|
+
- ๐ Status emoji indicators
|
215
|
+
|
216
|
+
---
|
217
|
+
|
218
|
+
### **Notification System** (`.github/workflows/shared/notification.yml`)
|
219
|
+
|
220
|
+
**Purpose**: Standardized Slack notifications
|
221
|
+
|
222
|
+
**Used By**: CI, Release, Quality workflows
|
223
|
+
|
224
|
+
**Features**:
|
225
|
+
- ๐ค Bot token authentication
|
226
|
+
- ๐จ Status-based color coding
|
227
|
+
- ๐ข Channel-specific notifications
|
228
|
+
- ๐ Structured message format
|
229
|
+
|
230
|
+
## ๐ฏ Key Optimizations Applied
|
231
|
+
|
232
|
+
### **Cost Reductions** (~75-80% total savings)
|
233
|
+
- **Ruby Versions**: 3.3 only (50% reduction)
|
234
|
+
- **Platforms**: Ubuntu only (66% reduction)
|
235
|
+
- **Schedules**: Reduced frequency (85% reduction)
|
236
|
+
- **Linting**: Custom focused approach (70% faster)
|
237
|
+
|
238
|
+
### **Performance Improvements**
|
239
|
+
- **PR Comments**: Single consolidated dashboard
|
240
|
+
- **Parallel Execution**: Optimized job dependencies
|
241
|
+
- **Smart Caching**: Efficient dependency caching
|
242
|
+
- **Focused Linting**: Targeted validation instead of super-linter
|
243
|
+
|
244
|
+
### **User Experience Enhancements**
|
245
|
+
- **Interactive Commands**: Bot-driven workflow management
|
246
|
+
- **Clear Status**: Visual PR status dashboard
|
247
|
+
- **Smart Notifications**: Context-aware Slack messages
|
248
|
+
- **Documentation**: Comprehensive guides and examples
|
249
|
+
|
250
|
+
## ๐ Related Documentation
|
251
|
+
|
252
|
+
- [Local Testing Guide](../guides/local-testing) - Test workflows before deployment
|
253
|
+
- [Bot Commands Guide](../guides/bot-commands) - Interactive workflow management
|
254
|
+
- [Customization Guide](../guides/customization) - Adapt workflows for your needs
|
255
|
+
- [Architecture Diagrams](../diagrams/ci-workflow-overview) - Visual workflow overview
|
256
|
+
|
257
|
+
---
|
258
|
+
|
259
|
+
**Questions?** Check our [validation guide](../guides/validation) or [open an issue](https://github.com/patrick204nqh/gem-ci/issues) for help.
|
data/lib/gem_ci/version.rb
CHANGED
Binary file
|
data/public/gem-ci.jpeg
ADDED
Binary file
|