Skip to content

Commit 41cd9da

Browse files
authored
release: v01.11.00 - git-flow implementation and CI/CD validation (#75)
* feat: implement git-flow Phase 1 - preparation and documentation (refs #20) * test: git-flow implementation and CI/CD validation (#74) * test: create git-flow test branch and file (refs #20) * fix: use apt instead of brew for Ubuntu runners in release-channels workflow (refs #20) * test: verify CI/CD fix for Ubuntu runners (refs #20) * test: trigger CI/CD workflow (refs #20) * fix: add missing dependencies to logger test job (refs #20) * test: trigger CI/CD with fixed dependencies (refs #20) --------- Co-authored-by: fxstein <[email protected]> * chore: bump version to 01.11.00 for release (refs #20) * fix: correct goprox script paths in test suites (refs #20) * fix: improve error handling tests to properly test failure scenarios (refs #20) * fix: correct library validation to properly handle empty strings (refs #20) * fix: handle explicit empty library parameter correctly (refs #20) --------- Co-authored-by: fxstein <[email protected]>
1 parent 9ba0bc5 commit 41cd9da

File tree

9 files changed

+615
-17
lines changed

9 files changed

+615
-17
lines changed
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
name: Multi-Channel Release Management
2+
3+
on:
4+
push:
5+
branches: [main, develop, release/*]
6+
release:
7+
types: [published]
8+
9+
jobs:
10+
latest-build:
11+
if: github.ref == 'refs/heads/develop'
12+
runs-on: ubuntu-latest
13+
steps:
14+
- name: Checkout code
15+
uses: actions/checkout@v4
16+
17+
- name: Setup zsh
18+
uses: actions/setup-node@v4
19+
with:
20+
node-version: '18'
21+
22+
- name: Install dependencies
23+
run: |
24+
sudo apt-get update
25+
sudo apt-get install -y zsh exiftool jq python3-pip
26+
pip3 install yamllint
27+
28+
- name: Run tests
29+
run: |
30+
./scripts/testing/run-tests.zsh
31+
32+
- name: Update Homebrew Latest Channel
33+
env:
34+
HOMEBREW_TOKEN: ${{ secrets.HOMEBREW_TOKEN }}
35+
run: |
36+
# Update goprox@latest formula
37+
./scripts/release/update-homebrew-channel.zsh latest
38+
39+
beta-release:
40+
if: startsWith(github.ref, 'refs/heads/release/')
41+
runs-on: ubuntu-latest
42+
steps:
43+
- name: Checkout code
44+
uses: actions/checkout@v4
45+
46+
- name: Setup zsh
47+
uses: actions/setup-node@v4
48+
with:
49+
node-version: '18'
50+
51+
- name: Install dependencies
52+
run: |
53+
sudo apt-get update
54+
sudo apt-get install -y zsh exiftool jq python3-pip
55+
pip3 install yamllint
56+
57+
- name: Run tests
58+
run: |
59+
./scripts/testing/run-tests.zsh
60+
61+
- name: Update Homebrew Beta Channel
62+
env:
63+
HOMEBREW_TOKEN: ${{ secrets.HOMEBREW_TOKEN }}
64+
run: |
65+
# Update goprox@beta formula
66+
./scripts/release/update-homebrew-channel.zsh beta
67+
68+
official-release:
69+
if: github.event_name == 'release' && github.event.action == 'published'
70+
runs-on: ubuntu-latest
71+
steps:
72+
- name: Checkout code
73+
uses: actions/checkout@v4
74+
75+
- name: Setup zsh
76+
uses: actions/setup-node@v4
77+
with:
78+
node-version: '18'
79+
80+
- name: Install dependencies
81+
run: |
82+
sudo apt-get update
83+
sudo apt-get install -y zsh exiftool jq python3-pip
84+
pip3 install yamllint
85+
86+
- name: Run tests
87+
run: |
88+
./scripts/testing/run-tests.zsh
89+
90+
- name: Update Homebrew Official Channel
91+
env:
92+
HOMEBREW_TOKEN: ${{ secrets.HOMEBREW_TOKEN }}
93+
run: |
94+
# Update goprox formula (official)
95+
./scripts/release/update-homebrew-channel.zsh official
96+
97+
channel-validation:
98+
if: always()
99+
runs-on: ubuntu-latest
100+
needs: [latest-build, beta-release, official-release]
101+
steps:
102+
- name: Validate Channel Updates
103+
run: |
104+
echo "Channel update validation completed"
105+
echo "Latest build: ${{ needs.latest-build.result }}"
106+
echo "Beta release: ${{ needs.beta-release.result }}"
107+
echo "Official release: ${{ needs.official-release.result }}"

.github/workflows/test.yml

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,15 @@
22
name: "Comprehensive Testing"
33
on:
44
pull_request:
5+
branches: [main, develop]
56
paths-ignore:
67
- "docs/**"
78
- "*.md"
89
- "!scripts/core/logger.zsh"
910
- "!scripts/testing/test-suites.zsh"
1011
- "!scripts/testing/run-tests.zsh"
1112
push:
12-
branches:
13-
- main
14-
- develop
13+
branches: [main, develop, feature/*, release/*, hotfix/*]
1514
paths:
1615
- 'scripts/core/logger.zsh'
1716
- 'scripts/testing/test-suites.zsh'
@@ -158,7 +157,7 @@ jobs:
158157
- name: "Install dependencies"
159158
run: |
160159
sudo apt-get update
161-
sudo apt-get install -y zsh
160+
sudo apt-get install -y zsh exiftool jq
162161
163162
- name: "Make test scripts executable"
164163
run: |

CONTRIBUTING.md

Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,157 @@ Thank you for your interest in contributing to GoProX! This document outlines th
3939
- Update or add documentation for any new features, changes, or scripts.
4040
- Use zsh code blocks for shell script examples.
4141
42+
## 🌿 Git-Flow Workflow
43+
44+
GoProX uses a git-flow workflow to ensure code quality, collaboration, and structured releases. This workflow supports both development and multi-channel release management.
45+
46+
### Branch Structure
47+
48+
**Main Branches:**
49+
- `main` - Production-ready code, official releases
50+
- `develop` - Integration branch for features and development
51+
52+
**Supporting Branches:**
53+
- `feature/*` - New features and enhancements
54+
- `release/*` - Release preparation and testing
55+
- `hotfix/*` - Critical bug fixes for production
56+
57+
### Branch Naming Conventions
58+
59+
**Feature Branches:**
60+
```zsh
61+
feature/issue-XX-descriptive-name
62+
feature/67-enhanced-default-behavior
63+
feature/70-architecture-design-principles
64+
```
65+
66+
**Release Branches:**
67+
```zsh
68+
release/01.11.00
69+
release/01.12.00
70+
```
71+
72+
**Hotfix Branches:**
73+
```zsh
74+
hotfix/critical-bug-fix
75+
hotfix/security-patch
76+
```
77+
78+
### Development Workflow
79+
80+
**1. Starting a New Feature:**
81+
```zsh
82+
# Ensure you're on develop branch
83+
git checkout develop
84+
git pull origin develop
85+
86+
# Create feature branch
87+
git checkout -b feature/issue-XX-descriptive-name
88+
89+
# Make your changes, commit frequently
90+
git add .
91+
git commit -m "feat: add new feature (refs #XX)"
92+
93+
# Push feature branch
94+
git push -u origin feature/issue-XX-descriptive-name
95+
```
96+
97+
**2. Completing a Feature:**
98+
```zsh
99+
# Create pull request to develop branch
100+
# Ensure all CI checks pass
101+
# Get code review and approval
102+
# Merge to develop
103+
```
104+
105+
**3. Creating a Release:**
106+
```zsh
107+
# Create release branch from develop
108+
git checkout develop
109+
git pull origin develop
110+
git checkout -b release/01.11.00
111+
112+
# Update version, documentation, release notes
113+
# Test thoroughly
114+
# Create pull request to main
115+
```
116+
117+
**4. Hotfix Process:**
118+
```zsh
119+
# Create hotfix branch from main
120+
git checkout main
121+
git pull origin main
122+
git checkout -b hotfix/critical-fix
123+
124+
# Fix the issue
125+
git commit -m "fix: critical bug fix (refs #XX)"
126+
127+
# Create pull request to main AND develop
128+
```
129+
130+
### Multi-Channel Release Support
131+
132+
GoProX supports three release channels for Homebrew packages:
133+
134+
**1. Latest Build Channel (develop branch):**
135+
```zsh
136+
brew install fxstein/tap/goprox@latest
137+
```
138+
- Development builds, updated on every develop push
139+
- For developers and early adopters
140+
141+
**2. Beta Channel (release branches):**
142+
```zsh
143+
brew install fxstein/tap/goprox@beta
144+
```
145+
- Pre-release testing, updated on release branch changes
146+
- For beta testers and advanced users
147+
148+
**3. Official Channel (main branch):**
149+
```zsh
150+
brew install fxstein/tap/goprox
151+
```
152+
- Stable production releases, updated on official releases
153+
- For general users and production environments
154+
155+
### Pull Request Process
156+
157+
**Standard Feature PR:**
158+
1. Create feature branch from develop
159+
2. Implement feature with tests
160+
3. Create pull request to develop
161+
4. Require code review and CI checks
162+
5. Merge after approval
163+
164+
**Release PR:**
165+
1. Create release branch from develop
166+
2. Update version and documentation
167+
3. Create pull request to main
168+
4. Require code review and CI checks
169+
5. Merge to main and tag release
170+
6. Merge back to develop
171+
172+
**Hotfix PR:**
173+
1. Create hotfix branch from main
174+
2. Fix the critical issue
175+
3. Create pull request to main AND develop
176+
4. Require code review and CI checks
177+
5. Merge to both branches
178+
179+
### Code Review Requirements
180+
181+
- All pull requests require at least one review
182+
- CI checks must pass before merging
183+
- Code must follow project standards and design principles
184+
- Tests must be included for new features
185+
- Documentation must be updated
186+
187+
### Branch Protection
188+
189+
- `main` branch: Requires PR reviews, CI checks, up-to-date branches
190+
- `develop` branch: Requires PR reviews, CI checks, allows force pushes for admins
191+
- Feature branches: No restrictions, but CI checks run automatically
192+
42193
## 📝 Commit Message Guidelines
43194

44195
- Use imperative mood (e.g., "add feature", "fix bug").

0 commit comments

Comments
 (0)