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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d60a8e5881c096feb9244447da37d659b2780518c521dec4363a1cb0b094bb16
4
- data.tar.gz: a4185a27c3d715cd66ca8c0f9bb0a6ec40e3bf5039496adf9ab9340e6bb09fbb
3
+ metadata.gz: d1de4bfa589da0bd420e8c7a1a1f0b16cd4246a155a7c56d00d9f95fc2b3b0bf
4
+ data.tar.gz: c5aeb1437ee5621aa4b7d7995620e8e2824639f88b2999fa3906227707ea3a73
5
5
  SHA512:
6
- metadata.gz: 29196b3877391b1de2c18111886ab2936a197941a7b9e59cf303884b6f355b9b24b6b66d436bcd66e699f838533dd8ff0c75c194c242897202eff9009ed3fb76
7
- data.tar.gz: ebff56acc918dbf3dc4908fa71497f3ea982098f09e339515687bcb2d607ed3956f3670305408ed82f2db69627728a5c3a734d042d93c4e4d47776b4cb5bae5f
6
+ metadata.gz: '042285d28439cb27b9ac042368703214d0234a1fb4ee058f51bc55847b69e882959ef9714ad19ad189066013520a711195373a8af6c2af2c4bde2133124c5fc7'
7
+ data.tar.gz: 46b2ab6d9317c1dfaaed75f1a1777f6e6dc91e0f852dea2d9b51ad4d8d21530a730ec240a19a93e17dc4132892d623025f1b40d4213c77dba422de034093ea8f
data/.env.example ADDED
@@ -0,0 +1,35 @@
1
+ # Example environment variables file for local testing with act
2
+ # Copy this file to .env.local or .env.test and modify as needed
3
+ # Format: KEY=VALUE (dotenv format)
4
+
5
+ # Ruby version for testing (override workflow default)
6
+ RUBY_VERSION=3.3
7
+
8
+ # Node.js version for documentation builds
9
+ NODE_VERSION=20
10
+
11
+ # Cache version (for debugging cache issues)
12
+ CACHE_VERSION=v2
13
+
14
+ # Workflow behavior controls
15
+ DEFAULT_TIMEOUT=300
16
+ API_RETRY_COUNT=3
17
+
18
+ # Testing flags (prevent actual publishing/deployment)
19
+ DRY_RUN=true
20
+ SKIP_PUBLISH=true
21
+ SKIP_DEPLOY=true
22
+
23
+ # Development/debug settings
24
+ DEBUG=true
25
+ VERBOSE=true
26
+ LOG_LEVEL=debug
27
+
28
+ # Override workflow settings for local testing
29
+ GITHUB_REPOSITORY=your-username/your-repo
30
+ GITHUB_REF=refs/heads/main
31
+ GITHUB_SHA=abc1234567890
32
+
33
+ # Custom environment variables for your workflows
34
+ # Add any environment variables your workflows use
35
+ # CUSTOM_ENV_VAR=local_value
data/.secrets.example ADDED
@@ -0,0 +1,33 @@
1
+ # Example secrets file for local testing with act
2
+ # Copy this file to .secrets and fill in your actual values
3
+ # Format: KEY=VALUE (dotenv format)
4
+
5
+ # GitHub Personal Access Token (required)
6
+ # Get from: GitHub → Settings → Developer settings → Personal access tokens
7
+ # Permissions needed: repo, workflow, write:packages
8
+ GITHUB_TOKEN=github_pat_11ABCDEFG_your_token_here
9
+
10
+ # GitHub App credentials (required for some workflows)
11
+ # Get from: GitHub → Settings → Developer settings → GitHub Apps
12
+ APP_ID=123456
13
+ PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----
14
+ your_private_key_content_here
15
+ -----END RSA PRIVATE KEY-----"
16
+
17
+ # Slack Bot Token (optional - for rich notifications using official Slack action)
18
+ # Get from: api.slack.com → Your App → OAuth & Permissions
19
+ # Scopes needed: chat:write
20
+ SLACK_BOT_TOKEN=xoxb-random_string_here
21
+
22
+ # Slack Channel ID (optional - for notifications)
23
+ # Get from: Slack → Right-click channel → View channel details
24
+ SLACK_CHANNEL_ID=C1234567890
25
+
26
+ # RubyGems API Key (optional - for publishing)
27
+ # Get from: rubygems.org → Account → API Keys
28
+ # Permissions needed: Push rubygems
29
+ RUBYGEMS_API_KEY=rubygems_your_api_key_here
30
+
31
+ # Additional secrets as needed
32
+ # Add any other secrets your workflows require
33
+ # MY_CUSTOM_SECRET=value
@@ -0,0 +1,23 @@
1
+ {
2
+ "display_information": {
3
+ "name": "gem-ci",
4
+ "description": "Automated CI/CD notifications for GemCI",
5
+ "background_color": "#2c3e50"
6
+ },
7
+ "features": {
8
+ "bot_user": {
9
+ "display_name": "gem-ci",
10
+ "always_online": true
11
+ }
12
+ },
13
+ "oauth_config": {
14
+ "scopes": {
15
+ "bot": ["chat:write", "chat:write.public"]
16
+ }
17
+ },
18
+ "settings": {
19
+ "org_deploy_enabled": false,
20
+ "socket_mode_enabled": false,
21
+ "token_rotation_enabled": false
22
+ }
23
+ }
data/CHANGELOG.md CHANGED
@@ -1,5 +1,119 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.4.0](https://github.com/patrick204nqh/gem-ci/compare/gem-ci-v0.3.0...gem-ci/v0.4.0) (2025-07-27)
4
+
5
+
6
+ ### 🚀 Features
7
+
8
+ * Add composite actions for performance monitoring, command retry, test execution, and environment setup ([a4ffac6](https://github.com/patrick204nqh/gem-ci/commit/a4ffac66b796e7a22ee857d20fc4aed6d4c6717a))
9
+ * Add Dependabot configuration for automated dependency updates ([14e2b9b](https://github.com/patrick204nqh/gem-ci/commit/14e2b9b0b09bc4fc308ecb9eb594cdcc41650aaf))
10
+ * Add GitFlow guide and workflow diagram for gem-ci projects ([bccdf0b](https://github.com/patrick204nqh/gem-ci/commit/bccdf0b056fe181ae0586f370a0a5da25dc65d77))
11
+ * Add GitHub App token generation for PR status updates ([3662c2e](https://github.com/patrick204nqh/gem-ci/commit/3662c2e1366142051eb40a96a61944a2cb1bc72a))
12
+ * Add local testing scripts for gem-ci workflows ([37ac022](https://github.com/patrick204nqh/gem-ci/commit/37ac0224a74d6410bc31f796333271a8330c6a47))
13
+ * Add markdownlint configuration with relaxed rules for better developer experience ([e8e905a](https://github.com/patrick204nqh/gem-ci/commit/e8e905a088200bb094630558ec02e5fc283b9620))
14
+ * Add release management configuration and update gem structure ([bd8ae0c](https://github.com/patrick204nqh/gem-ci/commit/bd8ae0c5774f7be38211b8aa14423d87ae72edbf))
15
+ * **ci:** Add PR status update action for CI, Security, and Quality workflows ([b9a42d9](https://github.com/patrick204nqh/gem-ci/commit/b9a42d97c4a8bd750bb87b29415929784e058261))
16
+ * Enhance PR status comment with structured table for workflow results ([3f3520d](https://github.com/patrick204nqh/gem-ci/commit/3f3520df4f1263059fe8ac76379e0bccee2a8326))
17
+ * Implement GitHub reaction actions for PRs, releases, and comments ([4fb4d24](https://github.com/patrick204nqh/gem-ci/commit/4fb4d24b4ca354128674f6b0ca3997cf977f0388))
18
+ * Refactor bot command workflow to enhance command handling and response structure ([5262bc3](https://github.com/patrick204nqh/gem-ci/commit/5262bc38441df89ad1f51fb99f95a337e7e20ec2))
19
+ * Update Ruby version in branch protection and push restrictions; add GitHub App token generation to ecosystem workflow ([611cd3e](https://github.com/patrick204nqh/gem-ci/commit/611cd3e37d64b5e290d73e9feebe28e306a4d6d6))
20
+
21
+
22
+ ### 🐛 Bug Fixes
23
+
24
+ * Add missing checkout step in stale management job ([679a603](https://github.com/patrick204nqh/gem-ci/commit/679a60377930993c42745f6cc0c0b7f24781961c))
25
+ * Correct description formatting for sponsored label in labels.yml ([a013d1c](https://github.com/patrick204nqh/gem-ci/commit/a013d1c1a4a6462eb53b13bc783095858ac9ad6f))
26
+ * Improve command execution readability in CI jobs ([c54b578](https://github.com/patrick204nqh/gem-ci/commit/c54b578385c3eabe2c1ee54c9c4ad731daa4ff09))
27
+ * Improve description formatting in gemspec for better readability ([447313f](https://github.com/patrick204nqh/gem-ci/commit/447313f12a96970181f5472a2b575ff2a6349b81))
28
+ * Simplify command execution in CI jobs for better readability ([aa9a8d2](https://github.com/patrick204nqh/gem-ci/commit/aa9a8d2135852ff7639fa1cbc46667ea3d90949e))
29
+ * Update gemspec metadata to include homepage URI and correct documentation URI ([02dfb2b](https://github.com/patrick204nqh/gem-ci/commit/02dfb2ba4c5c60a56123a4e00bbd56beef5e1b1e))
30
+ * Update label configuration file paths in workflows ([94937a3](https://github.com/patrick204nqh/gem-ci/commit/94937a345cd3b779474fa59bc2571a3b9f83d751))
31
+ * Update sponsored label description and adjust workflow triggers for label synchronization ([533ef4a](https://github.com/patrick204nqh/gem-ci/commit/533ef4aba474b5262596e1c34ad57c200987f1bd))
32
+ * Update super-linter to version 6 and add filter to exclude coverage files ([229a28c](https://github.com/patrick204nqh/gem-ci/commit/229a28c46f20581c64253bd1bbd20dfd7e6a6dbd))
33
+
34
+
35
+ ### 📚 Documentation
36
+
37
+ * Add README for validation workflows and their purposes ([14e2b9b](https://github.com/patrick204nqh/gem-ci/commit/14e2b9b0b09bc4fc308ecb9eb594cdcc41650aaf))
38
+ * Create GitHub App setup guide for branded automation ([14e2b9b](https://github.com/patrick204nqh/gem-ci/commit/14e2b9b0b09bc4fc308ecb9eb594cdcc41650aaf))
39
+ * Create repository secrets setup guide for automation workflows ([14e2b9b](https://github.com/patrick204nqh/gem-ci/commit/14e2b9b0b09bc4fc308ecb9eb594cdcc41650aaf))
40
+ * Revise main README to enhance clarity and detail on automation features ([14e2b9b](https://github.com/patrick204nqh/gem-ci/commit/14e2b9b0b09bc4fc308ecb9eb594cdcc41650aaf))
41
+
42
+
43
+ ### 🔧 Dependencies
44
+
45
+ * **deps:** Bump json from 2.13.0 to 2.13.1 ([ae45255](https://github.com/patrick204nqh/gem-ci/commit/ae4525555a35d1a017b532568fed312fdde1841f))
46
+ * **deps:** Bump rubocop from 1.78.0 to 1.79.0 in the development group ([01e4bc0](https://github.com/patrick204nqh/gem-ci/commit/01e4bc0da2e43ce48998756f1b18b743aa2d49cc))
47
+
48
+
49
+ ### ♻️ Refactoring
50
+
51
+ * **ci-cd:** Remove legacy Ruby workflow and add validation workflows for GitHub App, labels synchronization, repository rulesets, and Slack integration. Update Gemfile with new dependencies for testing and coverage reporting. Enhance spec helper for coverage metrics and clean up existing tests. ([6365ae2](https://github.com/patrick204nqh/gem-ci/commit/6365ae2ef85b92673bd75399ac2adf0d65e82aff))
52
+ * Rename community management workflow for clarity ([14e2b9b](https://github.com/patrick204nqh/gem-ci/commit/14e2b9b0b09bc4fc308ecb9eb594cdcc41650aaf))
53
+ * Rename ecosystem integration workflow for clarity ([14e2b9b](https://github.com/patrick204nqh/gem-ci/commit/14e2b9b0b09bc4fc308ecb9eb594cdcc41650aaf))
54
+ * Rename monitoring workflow for clarity ([14e2b9b](https://github.com/patrick204nqh/gem-ci/commit/14e2b9b0b09bc4fc308ecb9eb594cdcc41650aaf))
55
+ * Rename quality workflow for clarity ([14e2b9b](https://github.com/patrick204nqh/gem-ci/commit/14e2b9b0b09bc4fc308ecb9eb594cdcc41650aaf))
56
+ * Rename release management workflow for clarity ([14e2b9b](https://github.com/patrick204nqh/gem-ci/commit/14e2b9b0b09bc4fc308ecb9eb594cdcc41650aaf))
57
+ * Rename security workflow for clarity ([14e2b9b](https://github.com/patrick204nqh/gem-ci/commit/14e2b9b0b09bc4fc308ecb9eb594cdcc41650aaf))
58
+ * Replace GitHub App token action with local implementation for consistency across workflows ([715ba16](https://github.com/patrick204nqh/gem-ci/commit/715ba1642dece92a85534b671c85bba362976766))
59
+ * Replace performance-monitor action with inline command execution in CI jobs ([d8d9ff6](https://github.com/patrick204nqh/gem-ci/commit/d8d9ff6d8b609eb99d57e4a5cf337a08612382f3))
60
+ * Simplify CI workflows and enhance monitoring with basic health checks and summaries ([ad0c84a](https://github.com/patrick204nqh/gem-ci/commit/ad0c84ae798c8474b53b2be13d476fc90f3fbb7c))
61
+ * Standardize labeler.yml structure for file change types ([b34df93](https://github.com/patrick204nqh/gem-ci/commit/b34df9383345ac7c76ff4c3586fc5bec83933956))
62
+ * Standardize workflow names and update branch references to main and master ([017b4cf](https://github.com/patrick204nqh/gem-ci/commit/017b4cf1b284d62bdb676728df0cc97912dd9a43))
63
+ * Update CI/CD workflows to use default branch variable and adjust README for Ruby versions ([c0abddc](https://github.com/patrick204nqh/gem-ci/commit/c0abddcb159ef12a7c2e401864e46a3cb828771f))
64
+ * Update GitHub Actions workflows for improved error handling and metrics output ([0d07488](https://github.com/patrick204nqh/gem-ci/commit/0d07488e7f1d14f4fcc6b944e0abc18205fb2ea9))
65
+ * Update labeler configuration and enhance CI workflows with repository checkout steps ([d13d065](https://github.com/patrick204nqh/gem-ci/commit/d13d065eb48d106e0791811421966a9c07cabae5))
66
+ * Update security and ecosystem workflows for improved pull request handling and reduce matrix size ([caacb33](https://github.com/patrick204nqh/gem-ci/commit/caacb3354718edd7a76b0b247b265beea06e7eaa))
67
+ * Update workflow names and improve branch protection rules; enhance label configurations ([79c58d2](https://github.com/patrick204nqh/gem-ci/commit/79c58d258fc83aa690843c166a68fac1e0a97e5c))
68
+
69
+
70
+ ### 🤖 CI/CD
71
+
72
+ * **deps:** Bump github/codeql-action from 2 to 3 in the security-actions group ([3a87434](https://github.com/patrick204nqh/gem-ci/commit/3a87434d016875f20d0d65342cad8c4261baa08a))
73
+ * **deps:** Bump github/codeql-action in the security-actions group ([2cecda3](https://github.com/patrick204nqh/gem-ci/commit/2cecda34c7afa72919ab1f337dc94287e6b492c7))
74
+ * **deps:** Bump github/super-linter from 4 to 7 in the quality-actions group ([394950e](https://github.com/patrick204nqh/gem-ci/commit/394950e4690a1e5b2560f8e24df3dc977ec55fec))
75
+ * **deps:** Bump github/super-linter in the quality-actions group ([48573f1](https://github.com/patrick204nqh/gem-ci/commit/48573f1a80df84e1222ce72e33d0527b61a3bb72))
76
+ * **deps:** Bump the github-actions group across 1 directory with 3 updates ([71f9254](https://github.com/patrick204nqh/gem-ci/commit/71f9254aa0670b7b0fa1f9fc5240bc7ecaff2cb1))
77
+ * **deps:** Bump the github-actions group across 1 directory with 3 updates ([0c55db5](https://github.com/patrick204nqh/gem-ci/commit/0c55db53910128174b982ac9e4f9663605be6cae))
78
+ * **saving-cost:** Add auto-labeling and repository labels configuration; update workflows for Slack notifications and command handling ([7cbd8de](https://github.com/patrick204nqh/gem-ci/commit/7cbd8de140a0182d06a095dbca009383587c8144))
79
+ * **workflows:** Refactor GitHub Actions and Documentation ([bf9bca1](https://github.com/patrick204nqh/gem-ci/commit/bf9bca1d0dfe6e3ac7c508231a0e8afea4a9d633))
80
+
81
+ ## [0.3.0](https://github.com/patrick204nqh/gem-ci/compare/gem-ci/v0.2.1...gem-ci/v0.3.0) (2025-07-27)
82
+
83
+
84
+ ### 🚀 Features
85
+
86
+ * Add GitFlow guide and workflow diagram for gem-ci projects ([bccdf0b](https://github.com/patrick204nqh/gem-ci/commit/bccdf0b056fe181ae0586f370a0a5da25dc65d77))
87
+ * Add GitHub App token generation for PR status updates ([3662c2e](https://github.com/patrick204nqh/gem-ci/commit/3662c2e1366142051eb40a96a61944a2cb1bc72a))
88
+ * Add local testing scripts for gem-ci workflows ([37ac022](https://github.com/patrick204nqh/gem-ci/commit/37ac0224a74d6410bc31f796333271a8330c6a47))
89
+ * **ci:** Add PR status update action for CI, Security, and Quality workflows ([b9a42d9](https://github.com/patrick204nqh/gem-ci/commit/b9a42d97c4a8bd750bb87b29415929784e058261))
90
+ * Enhance PR status comment with structured table for workflow results ([3f3520d](https://github.com/patrick204nqh/gem-ci/commit/3f3520df4f1263059fe8ac76379e0bccee2a8326))
91
+ * Implement GitHub reaction actions for PRs, releases, and comments ([4fb4d24](https://github.com/patrick204nqh/gem-ci/commit/4fb4d24b4ca354128674f6b0ca3997cf977f0388))
92
+ * Refactor bot command workflow to enhance command handling and response structure ([5262bc3](https://github.com/patrick204nqh/gem-ci/commit/5262bc38441df89ad1f51fb99f95a337e7e20ec2))
93
+ * Update Ruby version in branch protection and push restrictions; add GitHub App token generation to ecosystem workflow ([611cd3e](https://github.com/patrick204nqh/gem-ci/commit/611cd3e37d64b5e290d73e9feebe28e306a4d6d6))
94
+
95
+
96
+ ### 🐛 Bug Fixes
97
+
98
+ * Update label configuration file paths in workflows ([94937a3](https://github.com/patrick204nqh/gem-ci/commit/94937a345cd3b779474fa59bc2571a3b9f83d751))
99
+
100
+
101
+ ### 🔧 Dependencies
102
+
103
+ * **deps:** Bump json from 2.13.0 to 2.13.1 ([ae45255](https://github.com/patrick204nqh/gem-ci/commit/ae4525555a35d1a017b532568fed312fdde1841f))
104
+ * **deps:** Bump rubocop from 1.78.0 to 1.79.0 in the development group ([01e4bc0](https://github.com/patrick204nqh/gem-ci/commit/01e4bc0da2e43ce48998756f1b18b743aa2d49cc))
105
+
106
+
107
+ ### 🤖 CI/CD
108
+
109
+ * **deps:** Bump github/codeql-action from 2 to 3 in the security-actions group ([3a87434](https://github.com/patrick204nqh/gem-ci/commit/3a87434d016875f20d0d65342cad8c4261baa08a))
110
+ * **deps:** Bump github/codeql-action in the security-actions group ([2cecda3](https://github.com/patrick204nqh/gem-ci/commit/2cecda34c7afa72919ab1f337dc94287e6b492c7))
111
+ * **deps:** Bump github/super-linter from 4 to 7 in the quality-actions group ([394950e](https://github.com/patrick204nqh/gem-ci/commit/394950e4690a1e5b2560f8e24df3dc977ec55fec))
112
+ * **deps:** Bump github/super-linter in the quality-actions group ([48573f1](https://github.com/patrick204nqh/gem-ci/commit/48573f1a80df84e1222ce72e33d0527b61a3bb72))
113
+ * **deps:** Bump the github-actions group across 1 directory with 3 updates ([71f9254](https://github.com/patrick204nqh/gem-ci/commit/71f9254aa0670b7b0fa1f9fc5240bc7ecaff2cb1))
114
+ * **deps:** Bump the github-actions group across 1 directory with 3 updates ([0c55db5](https://github.com/patrick204nqh/gem-ci/commit/0c55db53910128174b982ac9e4f9663605be6cae))
115
+ * **saving-cost:** Add auto-labeling and repository labels configuration; update workflows for Slack notifications and command handling ([7cbd8de](https://github.com/patrick204nqh/gem-ci/commit/7cbd8de140a0182d06a095dbca009383587c8144))
116
+
3
117
  ## [0.2.1](https://github.com/patrick204nqh/gem-ci/compare/gem-ci/v0.2.0...gem-ci/v0.2.1) (2025-07-26)
4
118
 
5
119
 
data/README.md CHANGED
@@ -1,32 +1,53 @@
1
- # 🤖 Ruby Gem Automation Template
1
+ <div align="center">
2
2
 
3
- > **The ultimate automation template for Ruby gem projects** - Battle-tested workflows for seamless development, security, and releases.
3
+ # 🏆 gem-ci
4
+
5
+ ![gem-ci Logo](public/gem-ci-transparent-bg.png)
6
+
7
+ **The Ultimate Ruby Gem Automation Showcase**
8
+
9
+ *Battle-tested GitHub Actions workflows with comprehensive CI/CD, security, and community management*
10
+
11
+ [![Ruby](https://img.shields.io/badge/Ruby-3.3+-CC342D?style=for-the-badge&logo=ruby&logoColor=white)](https://www.ruby-lang.org/)
12
+ [![GitHub Actions](https://img.shields.io/badge/GitHub_Actions-2088FF?style=for-the-badge&logo=github-actions&logoColor=white)](https://github.com/features/actions)
13
+ [![License](https://img.shields.io/badge/License-MIT-yellow.svg?style=for-the-badge)](LICENSE.txt)
14
+ [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=for-the-badge)](CONTRIBUTING.md)
15
+
16
+ [![CI Status](https://github.com/patrick204nqh/gem-ci/workflows/02%20-%20CI/badge.svg)](https://github.com/patrick204nqh/gem-ci/actions/workflows/02-ci.yml)
17
+ [![Security](https://github.com/patrick204nqh/gem-ci/workflows/03%20-%20Security/badge.svg)](https://github.com/patrick204nqh/gem-ci/actions/workflows/03-security.yml)
18
+ [![Quality Gate](https://github.com/patrick204nqh/gem-ci/workflows/04%20-%20Quality/badge.svg)](https://github.com/patrick204nqh/gem-ci/actions/workflows/04-quality.yml)
19
+
20
+ </div>
4
21
 
5
22
  ## ✨ What This Provides
6
23
 
7
- This repository serves as the **perfect template** for Ruby gem automation. It includes 8 comprehensive workflows that handle every aspect of your gem's lifecycle:
24
+ This repository serves as the **ultimate showcase** for Ruby gem automation. It includes **9 comprehensive workflows** that handle every aspect of your gem's lifecycle:
8
25
 
9
- - 🔄 **Automated CI/CD** across Ruby versions and platforms
26
+ - 🔄 **Automated CI/CD** with consolidated PR status dashboard
10
27
  - 🔒 **Security scanning** and vulnerability detection
11
- - 📊 **Code quality** enforcement and coverage reporting
28
+ - 📊 **Code quality** enforcement with focused linting
12
29
  - 🚀 **Automated releases** with semantic versioning
13
30
  - 👥 **Community management** and contributor engagement
14
- - 📈 **Performance monitoring** and health checks
31
+ - 📈 **Performance monitoring** and ecosystem health
32
+ - 🤖 **Bot commands** for interactive workflow management
33
+ - 🌐 **Ecosystem integration** and compatibility checks
34
+ - 📊 **Advanced monitoring** with cost-optimized scheduling
15
35
 
16
36
  ## 🚀 Quick Start
17
37
 
18
38
  1. **Use this template** to create your new repository
19
- 2. **Set up secrets** following the [Secrets Setup Guide](docs/SECRETS_SETUP_GUIDE.md)
39
+ 2. **Set up secrets** following the [Secrets Setup Guide](docs/setup/secrets.md)
20
40
  3. **Configure labels** by running the label sync workflow
21
41
  4. **Import rulesets** from `.github/config/rulesets/`
22
- 5. **Start developing** - automation handles the rest!
42
+ 5. **Test locally** using our [Local Testing Guide](docs/guides/local-testing.md)
43
+ 6. **Start developing** - automation handles the rest!
23
44
 
24
45
  ## 📋 Complete Automation Tasks
25
46
 
26
47
  | **Category** | **Task** | **Workflow** | **Action Used** | **Configuration** |
27
48
  | ------------------- | ----------------------- | ---------------------------------------- | ----------------------------------------- | --------------------------- |
28
- | **🔄 CI/CD** | Multi-Ruby testing | `02-ci.yml` | `ruby/setup-ruby@v1` | Ruby 3.2, 3.3, 3.4 |
29
- | | Cross-platform testing | `02-ci.yml` | `actions/checkout@v4` | Ubuntu, macOS |
49
+ | **🔄 CI/CD** | Ruby testing | `02-ci.yml` | `ruby/setup-ruby@v1` | Ruby 3.3 (optimized) |
50
+ | | Ubuntu testing | `02-ci.yml` | `actions/checkout@v4` | Ubuntu-latest (cost optimized) |
30
51
  | | Dependency caching | `02-ci.yml` | `actions/cache@v3` | Bundler cache |
31
52
  | | Test execution | `02-ci.yml` | Custom scripts | RSpec, Minitest |
32
53
  | | Coverage reporting | `04-quality.yml` | `simplecov` gem | 90% threshold |
@@ -39,8 +60,8 @@ This repository serves as the **perfect template** for Ruby gem automation. It i
39
60
  | | Documentation | `04-quality.yml` | `yard` gem | API documentation |
40
61
  | | Markdown linting | `04-quality.yml` | `DavidAnson/markdownlint-cli2-action@v16` | Markdown standards |
41
62
  | | Super linting | `04-quality.yml` | `super-linter/super-linter@v5` | Multi-language linting |
42
- | **🏷️ Labels** | Label sync | `01-intake.yml` | `crazy-max/ghaction-github-labeler@v5` | `.github/labels.yml` |
43
- | | Auto-labeling | `01-intake.yml` | `actions/labeler@v5` | `.github/labeler.yml` |
63
+ | **🏷️ Labels** | Label sync | `01-intake.yml` | `crazy-max/ghaction-github-labeler@v5` | `.github/config/labels.yml` |
64
+ | | Auto-labeling | `01-intake.yml` | `actions/labeler@v5` | `.github/config/labeler.yml` |
44
65
  | | Size labeling | `01-intake.yml` | Custom script | PR size detection |
45
66
  | **👥 Community** | Welcome messages | `01-intake.yml` | `actions/first-interaction@v1` | First-time contributors |
46
67
  | | Stale management | `05-community.yml` | `actions/stale@v9` | 60-day stale policy |
@@ -57,8 +78,15 @@ This repository serves as the **perfect template** for Ruby gem automation. It i
57
78
  | **🛡️ Protection** | Branch protection | Rulesets | GitHub native | `.github/config/rulesets/` |
58
79
  | | Tag protection | Rulesets | GitHub native | Release tag protection |
59
80
  | | Push restrictions | Rulesets | GitHub native | Development branch rules |
60
- | **📢 Notifications** | Slack integration | Multiple | `slackapi/slack-github-action@v1.27.0` | `SLACK_BOT_TOKEN` |
61
- | | Email notifications | GitHub native | Repository settings | Configurable recipients |
81
+ | **📢 Notifications** | Slack integration | Multiple | Custom shared action | `SLACK_BOT_TOKEN` + `SLACK_CHANNEL_ID` |
82
+ | | PR Status Dashboard | Multiple | `update-pr-status` action | Consolidated PR comments |
83
+ | **🤖 Bot Commands** | Release management | `09-bot-commands.yml` | `actions/github-script@v7` | Slash commands |
84
+ | | Help system | `09-bot-commands.yml` | `actions/github-script@v7` | Interactive help |
85
+ | **🌐 Ecosystem** | Dependency health | `07-ecosystem.yml` | Custom scripts | Bi-weekly checks |
86
+ | | Compatibility matrix | `07-ecosystem.yml` | `ruby/setup-ruby@v1` | Ruby version testing |
87
+ | | Performance benchmarks | `07-ecosystem.yml` | Custom benchmark scripts | Release validation |
88
+ | **📊 Monitoring** | Workflow metrics | `08-monitoring.yml` | `actions/github-script@v7` | Weekly performance tracking |
89
+ | | Repository health | `08-monitoring.yml` | Custom health checks | Automated health reports |
62
90
  | **🧪 Validation** | GitHub App setup | `tests/validate-github-app.yml` | `actions/create-github-app-token@v1` | Token validation |
63
91
  | | Slack integration | `tests/validate-slack-integration.yml` | `slackapi/slack-github-action@v1.27.0` | Message testing |
64
92
  | | Label sync | `tests/validate-labels-sync.yml` | `crazy-max/ghaction-github-labeler@v5` | Configuration validation |
@@ -78,93 +106,94 @@ This repository serves as the **perfect template** for Ruby gem automation. It i
78
106
  ### **Configuration Files**
79
107
  | File | Purpose | Required |
80
108
  |------|---------|----------|
81
- | `.github/labels.yml` | Label definitions and colors | ✅ Yes |
82
- | `.github/labeler.yml` | Auto-labeling rules | ✅ Yes |
109
+ | `.github/config/labels.yml` | Label definitions and colors | ✅ Yes |
110
+ | `.github/config/labeler.yml` | Auto-labeling rules for PRs | ✅ Yes |
83
111
  | `.github/dependabot.yml` | Dependency update configuration | ✅ Yes |
84
112
  | `.github/CODEOWNERS` | Code ownership and review assignments | ✅ Yes |
85
113
  | `.github/config/codeql.yml` | CodeQL analysis configuration | ✅ Yes |
114
+ | `.github/config/release-please-config.json` | Release configuration | ✅ Yes |
115
+ | `.github/config/release-please-manifest.json` | Release manifest | ✅ Yes |
86
116
  | `.github/config/rulesets/*.json` | Repository protection rules | ❌ Optional |
87
117
 
118
+ ### **Bot Commands**
119
+ <details>
120
+ <summary>Available interactive commands (comment on issues/PRs)</summary>
121
+
122
+ | Command | Description | Example |
123
+ |---------|-------------|---------|
124
+ | `/gem-ci help` | Show available commands | `/gem-ci help` |
125
+ | `/gem-ci revise release [from] to [to]` | Change release type | `/gem-ci revise release minor to patch` |
126
+ | `/gem-ci cancel release` | Cancel current release PR | `/gem-ci cancel release` |
127
+
128
+ **Usage**: Comment these commands on any issue or PR to trigger bot actions.
129
+ </details>
130
+
88
131
  ## 🔄 Ruby Gem Repository Lifecycle
89
132
 
90
133
  This template provides a complete automation solution that follows the natural lifecycle of a Ruby gem repository:
91
134
 
92
135
  ### 🚀 **Phase 1: Repository Setup** (One-time)
93
- - **🏷️ Label Management**: Sync professional labels with `01-intake.yml`
136
+ - **🏷️ Label Management**: Sync professional labels and organize repository structure
94
137
  - **🔐 Secret Configuration**: Setup GitHub App authentication and integrations
95
138
  - **🛡️ Branch Protection**: Configure repository rulesets and security policies
96
- - **⚙️ Initial Configuration**: Dependabot, CodeQL, and workflow settings
139
+ - **⚙️ Initial Configuration**: Setup dependency management, security scanning, and automation workflows
97
140
 
98
141
  ### 💻 **Phase 2: Development Cycle** (Daily)
99
- - **🧪 Continuous Testing**: Multi-Ruby version testing with `02-ci.yml`
100
- - **🔒 Security Scanning**: Vulnerability detection with `03-security.yml`
101
- - **📊 Code Quality**: RuboCop linting and documentation with `04-quality.yml`
102
- - **🏷️ Auto-labeling**: Smart PR/issue labeling with `01-intake.yml`
103
- - **👋 Contributor Welcome**: First-time contributor guidance with `01-intake.yml`
142
+ - **🧪 Continuous Testing**: Run comprehensive test suites and validate gem functionality
143
+ - **🔒 Security Scanning**: Detect vulnerabilities in code and dependencies
144
+ - **📊 Code Quality**: Enforce coding standards, style guides, and generate documentation
145
+ - **🏷️ Auto-labeling**: Automatically categorize and organize issues and pull requests
146
+ - **👋 Contributor Welcome**: Guide first-time contributors and provide context
104
147
 
105
148
  ### 📦 **Phase 3: Dependency Management** (Automated)
106
- - **🤖 Dependabot Updates**: Weekly dependency update PRs
107
- - **🧪 Update Testing**: Automated testing of dependency changes
108
- - **✅ Safe Auto-merge**: Automatic merging of low-risk updates
149
+ - **🤖 Dependency Updates**: Monitor and update gem dependencies automatically
150
+ - **🧪 Update Testing**: Validate compatibility and functionality after updates
151
+ - **✅ Safe Auto-merge**: Automatically merge low-risk dependency updates
152
+ - **📊 Security Auditing**: Scan dependencies for known vulnerabilities
109
153
 
110
154
  ### 🚀 **Phase 4: Release Process** (On-demand)
111
- - **🏗️ Gem Building**: Automated gem packaging with `06-release.yml`
112
- - **💎 RubyGems Publishing**: Direct publishing to RubyGems registry
113
- - **📝 Changelog Generation**: Automatic changelog and release notes
114
- - **📢 Release Notifications**: Slack and GitHub release announcements
155
+ - **🏗️ Gem Building**: Package gem files with proper versioning and metadata
156
+ - **💎 RubyGems Publishing**: Publish to RubyGems registry with proper validation
157
+ - **📝 Changelog Generation**: Generate release notes and update documentation
158
+ - **📢 Release Notifications**: Announce releases to team and community channels
115
159
 
116
160
  ### 🔄 **Phase 5: Ongoing Maintenance** (Background)
117
- - **🧹 Stale Management**: Automated stale issue cleanup with `05-community.yml`
118
- - **🌐 Ecosystem Monitoring**: Compatibility checks with `07-ecosystem.yml`
119
- - **📈 Health Monitoring**: Performance tracking with `08-monitoring.yml`
120
- - **👥 Community Engagement**: Contributor recognition and community health
161
+ - **🧹 Stale Management**: Clean up inactive issues and pull requests
162
+ - **🌐 Ecosystem Monitoring**: Check compatibility with Ruby versions and dependencies
163
+ - **📈 Health Monitoring**: Track repository activity, performance, and community engagement
164
+ - **👥 Community Engagement**: Recognize contributors and maintain project health
165
+ - **🤖 Interactive Commands**: Provide bot-driven release management and workflow control
121
166
 
122
167
  ## 📚 Documentation
123
168
 
124
- - **[🔄 Lifecycle Diagram](docs/diagrams/ci-workflow-overview.md)** - Visual repository lifecycle and workflow mapping
125
- - **[🔐 Secrets Setup Guide](docs/SECRETS_SETUP_GUIDE.md)** - Complete secrets configuration
126
- - **[🧪 Manual Testing Guide](docs/MANUAL_WORKFLOW_TESTING.md)** - How to test and trigger workflows manually
127
- - **[🏷️ Labels Color Guide](docs/LABELS_COLOR_GUIDE.md)** - Label design and accessibility
128
- - **[✅ Validation Workflows](.github/workflows/tests/README.md)** - Testing your setup
169
+ Complete documentation is available on our **[Documentation Site](https://patrick204nqh.github.io/gem-ci/)** including:
170
+
171
+ - **🚀 Getting Started**: Setup guides, secrets configuration, and local testing
172
+ - **📊 Workflows**: Complete workflow documentation and architecture overview
173
+ - **🎯 Advanced Features**: Customization, integrations, and bot commands
174
+ - **✅ Validation**: Testing and troubleshooting guides
175
+
176
+ ### **🧪 Quick Local Testing**
177
+
178
+ ```bash
179
+ # Setup (one time)
180
+ cp .secrets.example .secrets && nano .secrets
181
+
182
+ # Test workflows locally
183
+ ./scripts/test-local # Test push workflows
184
+ ./scripts/test-local ci # Test CI workflow
185
+ ./scripts/test-workflows # Run validation tests
186
+ ```
187
+
188
+ **[📖 View Testing Scripts Documentation](scripts/README.md)**
129
189
 
130
190
  ## 🎯 Key Features
131
191
 
132
- ### **🔄 Multi-Ruby Testing**
133
- - Tests across Ruby 3.2, 3.3 and 3.4
134
- - Cross-platform support (Ubuntu, macOS)
135
- - Parallel test execution for speed
136
-
137
- ### **🔒 Comprehensive Security**
138
- - CodeQL static analysis
139
- - Dependency vulnerability scanning
140
- - Secret detection in git history
141
- - Container security scanning
142
- - Automated security updates
143
-
144
- ### **📊 Quality Enforcement**
145
- - RuboCop code style enforcement
146
- - Test coverage reporting (90% threshold)
147
- - Documentation coverage checking
148
- - Markdown and YAML linting
149
-
150
- ### **🚀 Automated Releases**
151
- - Semantic version bumping
152
- - Automated changelog generation
153
- - RubyGems publishing
154
- - GitHub release creation
155
- - Slack release notifications
156
-
157
- ### **👥 Community Management**
158
- - Welcome messages for new contributors
159
- - Stale issue/PR management
160
- - Contributor achievement recognition
161
- - Community health monitoring
162
-
163
- ### **🏷️ Smart Labeling**
164
- - 33 professionally designed labels
165
- - Automatic labeling based on file changes
166
- - PR size detection and labeling
167
- - Accessible color scheme (WCAG AA compliant)
192
+ **🔄 Optimized CI/CD** • **🔒 Comprehensive Security** • **📊 Quality Enforcement** • **🚀 Automated Releases** • **👥 Community Management** • **🏷️ Smart Labeling**
193
+
194
+ Includes **9 optimized workflows** with 75-80% cost reduction, custom linting, consolidated PR dashboard, automated releases, and comprehensive security scanning.
195
+
196
+ **[📖 View Complete Feature List](docs/workflows/overview.md)**
168
197
 
169
198
  ## 🤝 Contributing
170
199
 
data/docs/_config.yml ADDED
@@ -0,0 +1,60 @@
1
+ title: gem-ci Documentation
2
+ description: The Ultimate Ruby Gem Automation Showcase
3
+ url: "https://patrick204nqh.github.io"
4
+ baseurl: "/gem-ci"
5
+
6
+ theme: minima
7
+
8
+ markdown: kramdown
9
+ highlighter: rouge
10
+ permalink: pretty
11
+
12
+ plugins:
13
+ - jekyll-feed
14
+ - jekyll-sitemap
15
+ - jekyll-seo-tag
16
+
17
+ header_pages:
18
+ - setup/secrets.md
19
+ - guides/local-testing.md
20
+ - workflows/overview.md
21
+ - guides/customization.md
22
+
23
+ collections:
24
+ guides:
25
+ output: true
26
+ permalink: /:collection/:name/
27
+ setup:
28
+ output: true
29
+ permalink: /:collection/:name/
30
+ workflows:
31
+ output: true
32
+ permalink: /:collection/:name/
33
+
34
+ defaults:
35
+ - scope:
36
+ path: ""
37
+ type: "pages"
38
+ values:
39
+ layout: "default"
40
+ - scope:
41
+ path: ""
42
+ type: "guides"
43
+ values:
44
+ layout: "default"
45
+ - scope:
46
+ path: ""
47
+ type: "setup"
48
+ values:
49
+ layout: "default"
50
+ - scope:
51
+ path: ""
52
+ type: "workflows"
53
+ values:
54
+ layout: "default"
55
+
56
+ exclude:
57
+ - Gemfile
58
+ - Gemfile.lock
59
+ - node_modules/
60
+ - vendor/
@@ -89,18 +89,20 @@ graph LR
89
89
  T12[🧹 Manage Stale Issues]
90
90
  T13[🌐 Check Ecosystem Health]
91
91
  T14[📈 Monitor Performance]
92
+ T15[🤖 Interactive Commands]
92
93
  end
93
94
 
94
95
  subgraph "🤖 Our CI/CD Workflows"
95
96
  W1[01-intake.yml<br/>🏷️ Intake & Labels]
96
- W2[02-ci.yml<br/>🧪 Continuous Integration]
97
- W3[03-security.yml<br/>🔒 Security Scanning]
98
- W4[04-quality.yml<br/>📊 Code Quality]
99
- W5[05-community.yml<br/>👥 Community Management]
97
+ W2[02-ci.yml<br/>🧪 CI - Ruby 3.3 + Ubuntu]
98
+ W3[03-security.yml<br/>🔒 Security - Weekly]
99
+ W4[04-quality.yml<br/>📊 Quality - Custom Linting]
100
+ W5[05-community.yml<br/>👥 Community - Weekly]
100
101
  W6[06-release.yml<br/>🚀 Release & Publishing]
101
- W7[07-ecosystem.yml<br/>🌐 Ecosystem Integration]
102
- W8[08-monitoring.yml<br/>📈 Health Monitoring]
103
- W9[Dependabot<br/>📦 Dependency Updates]
102
+ W7[07-ecosystem.yml<br/>🌐 Ecosystem - Bi-weekly]
103
+ W8[08-monitoring.yml<br/>📈 Monitoring - Weekly]
104
+ W9[09-bot-commands.yml<br/>🤖 Bot Commands]
105
+ W10[Dependabot<br/>📦 Dependency Updates]
104
106
  end
105
107
 
106
108
  %% Task to Workflow Mappings
@@ -111,8 +113,8 @@ graph LR
111
113
  T3 --> W4
112
114
  T4 --> W1
113
115
  T5 --> W1
114
- T6 --> W9
115
- T7 --> W9
116
+ T6 --> W10
117
+ T7 --> W10
116
118
  T8 --> W6
117
119
  T9 --> W6
118
120
  T10 --> W6
@@ -120,13 +122,14 @@ graph LR
120
122
  T12 --> W5
121
123
  T13 --> W7
122
124
  T14 --> W8
125
+ T15 --> W9
123
126
 
124
127
  %% Styling
125
128
  classDef task fill:#e8f5e8
126
129
  classDef workflow fill:#f3e5f5
127
130
 
128
- class T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 task
129
- class W1,W2,W3,W4,W5,W6,W7,W8,W9 workflow
131
+ class T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 task
132
+ class W1,W2,W3,W4,W5,W6,W7,W8,W9,W10 workflow
130
133
  ```
131
134
 
132
135
  ## 📈 Repository Lifecycle Timeline
@@ -150,9 +153,10 @@ graph LR
150
153
  | **🏷️ Auto-label** | `01-intake.yml` | PR/Issue created | Every PR/Issue |
151
154
  | **📦 Update Dependencies** | Dependabot + CI workflows | Schedule | Weekly + testing |
152
155
  | **🚀 Build & Publish** | `06-release.yml` | Tag created | Per release |
153
- | **🧹 Manage Community** | `05-community.yml` | Schedule | Daily |
154
- | **🌐 Check Ecosystem** | `07-ecosystem.yml` | Schedule | Weekly |
155
- | **📈 Monitor Health** | `08-monitoring.yml` | Schedule | Daily |
156
+ | **🧹 Manage Community** | `05-community.yml` | Schedule | **Weekly** - 85% reduction |
157
+ | **🌐 Check Ecosystem** | `07-ecosystem.yml` | Schedule | **Bi-weekly** - 50% reduction |
158
+ | **📈 Monitor Health** | `08-monitoring.yml` | Schedule | **Weekly** - 85% reduction |
159
+ | **🤖 Interactive Commands** | `09-bot-commands.yml` | Issue comments | On-demand |
156
160
 
157
161
  ## 🔄 Complete Development Flow
158
162
 
@@ -161,10 +165,17 @@ Repository Lifecycle:
161
165
  Setup → Development ⟷ Dependencies → Release → Maintenance
162
166
  ↓ ↓ ↓ ↓ ↓
163
167
  Our Workflows:
164
- Manual → 01,02,03,04 → Dependabot+CI → 06 → 05,07,08
168
+ Manual → 01,02,03,04 → Dependabot+CI → 06 → 05,07,08,09
169
+ Ruby 3.3+Ubuntu Security Weekly/Bi-weekly
165
170
  ```
166
171
 
167
172
  This separation makes it much clearer:
168
173
  1. **First diagram**: Shows the natural lifecycle and tasks
169
- 2. **Second diagram**: Shows how our specific workflows handle those tasks
170
- 3. **Tables**: Provide detailed mapping and timing information
174
+ 2. **Second diagram**: Shows how our optimized workflows handle those tasks
175
+ 3. **Tables**: Provide detailed mapping and timing information
176
+
177
+ **Key Optimizations Applied:**
178
+ - **75-80% cost reduction** through Ruby 3.3 only, Ubuntu only, reduced schedules
179
+ - **70% performance improvement** with custom linting vs super-linter
180
+ - **Zero comment spam** with consolidated PR dashboard
181
+ - **Enhanced security** with weekly scanning and release validation