Skip to content

Commit cab55dc

Browse files
authored
chore: release v0.3.2 (#412)
* chore: release v0.3.2 Critical fix for go install compatibility: - Remove all replace directives from source code - Update module version references to v0.3.2 - Update CHANGELOG with v0.3.2 release notes This ensures go install github.com/finos/morphir/cmd/morphir@v0.3.2 works correctly without replace directive errors. Development workflow now relies on go.work for local module resolution. * fix: use v0.3.1 module versions until v0.3.2 is released The CI was failing because go.mod files referenced v0.3.2 which doesn't exist yet. We need to use the current released version (v0.3.1) until v0.3.2 is actually released. The release script will update these versions to v0.3.2 as part of the release commit before creating tags. * docs: document module version coordination for release PRs Added critical documentation about why release PRs must use current released versions in go.mod files instead of the version being released. This ensures CI can pass before the new version exists, as CI needs to download module dependencies that won't be available until after release. * feat: add go.work automation to CI with external consumption test - Created setup-workspace.sh/ps1 scripts for dynamic module discovery - CI now automatically sets up go.work before all build/test jobs - Added external consumption test for release PRs (without go.work) - Updated morphir-developer skill with new workflow documentation This ensures: - Consistent behavior between local dev and CI - Cross-module changes work seamlessly in all PRs - Release PRs verify external consumption correctness - No hardcoded module lists - fully dynamic * docs: add comprehensive CI/Release workflow FAQ Add CI_RELEASE_FAQ.md to help developers understand: - How CI tests PR code (not old published versions) - How go.work ensures CI uses local modules - How multi-module PRs work - How release workflow handles versioning - Common troubleshooting scenarios Update README.md and DEVELOPING.md to link to the new FAQ. This addresses developer confidence questions about the chicken-and-egg situation with module versions and ensures all contributors understand our automated workspace setup. * fix: make workspace setup script idempotent Fix CI failure where go.work already exists by removing existing go.work and go.work.sum files before initialization. This makes the script idempotent - it can be run multiple times safely without errors. Updated both setup-workspace.sh and setup-workspace.ps1.
1 parent 5567a6a commit cab55dc

File tree

12 files changed

+1892
-13
lines changed

12 files changed

+1892
-13
lines changed

.claude/skills/morphir-developer.md

Lines changed: 513 additions & 0 deletions
Large diffs are not rendered by default.

.github/workflows/ci.yml

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@ jobs:
4545
- name: Install just
4646
uses: extractions/setup-just@v3
4747

48+
- name: Set up Go workspace
49+
run: bash ./scripts/setup-workspace.sh
50+
4851
- name: Install golangci-lint from source
4952
run: |
5053
# Build golangci-lint from source to support Go 1.25.5
@@ -73,6 +76,10 @@ jobs:
7376
- name: Install just
7477
uses: extractions/setup-just@v3
7578

79+
- name: Set up Go workspace
80+
shell: bash
81+
run: bash ./scripts/setup-workspace.sh
82+
7683
- name: Run tests
7784
run: just test
7885

@@ -108,6 +115,10 @@ jobs:
108115
- name: Install just
109116
uses: extractions/setup-just@v3
110117

118+
- name: Set up Go workspace
119+
shell: bash
120+
run: bash ./scripts/setup-workspace.sh
121+
111122
- name: Build binary (cross-platform)
112123
env:
113124
GOOS: ${{ matrix.os == 'ubuntu-latest' && 'linux' || matrix.os == 'macos-latest' && 'darwin' || 'windows' }}
@@ -135,5 +146,31 @@ jobs:
135146
- name: Install just
136147
uses: extractions/setup-just@v3
137148

149+
- name: Set up Go workspace
150+
run: bash ./scripts/setup-workspace.sh
151+
138152
- name: Verify modules build
139153
run: just verify
154+
155+
test-external-consumption:
156+
name: Test External Consumption (Release PRs)
157+
runs-on: ubuntu-latest
158+
if: github.event_name == 'pull_request' && (contains(github.event.pull_request.title, 'release') || contains(github.event.pull_request.labels.*.name, 'release'))
159+
steps:
160+
- name: Checkout code
161+
uses: actions/checkout@v6
162+
163+
- name: Set up Go
164+
uses: actions/setup-go@v6
165+
with:
166+
go-version: '1.25.5'
167+
cache: true
168+
169+
- name: Test cmd/morphir builds without go.work
170+
working-directory: cmd/morphir
171+
run: |
172+
echo "Testing external consumption (no go.work)..."
173+
echo "This verifies that module versions in go.mod are correct."
174+
go mod download
175+
go build .
176+
echo "✅ cmd/morphir builds successfully as external consumer would use it"

CHANGELOG.md

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,47 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [0.3.2] - 2026-01-05
11+
12+
### Fixed
13+
- **CRITICAL**: Remove replace directives from source code for go install compatibility
14+
- Removed all `replace` directives from cmd/morphir/go.mod
15+
- Removed all `replace` directives from pkg/tooling/go.mod
16+
- Removed all `replace` directives from tests/bdd/go.mod
17+
- `go install github.com/finos/morphir/cmd/morphir@v0.3.2` now works correctly
18+
- Documented workflow trigger limitations for re-pushed tags
19+
20+
### Added
21+
- **morphir-developer skill**: Comprehensive development workflow assistant
22+
- go.work management and verification
23+
- Branch/worktree setup with issue tracking
24+
- Pre-commit checks and best practices
25+
- Integration with beads and GitHub issues
26+
- TDD/BDD workflow guidance
27+
- **Release automation script**: `scripts/release.sh` for automated releases
28+
- Complete pre-flight checks
29+
- Automated tag creation and pushing
30+
- Workflow triggering and monitoring
31+
- Post-release verification
32+
- go install compatibility testing
33+
- **Workspace setup scripts**: Dynamic go.work configuration
34+
- `scripts/setup-workspace.sh` for Linux/macOS
35+
- `scripts/setup-workspace.ps1` for Windows
36+
- Automatically discovers all Go modules
37+
- Used by CI and local development
38+
- **CI enhancements**: go.work setup for all build/test jobs
39+
- All CI jobs now use go.work for local module resolution
40+
- External consumption test for release PRs
41+
- Verifies module versions are correct before release
42+
43+
### Changed
44+
- Development workflow: Use `go work` for local development instead of replace directives
45+
- Release process: Source code in tags no longer contains replace directives
46+
- Release process: Automated with `scripts/release.sh` for consistency
47+
- CI workflow: All jobs now set up go.work automatically
48+
- Ensures consistent behavior between local dev and CI
49+
- Release PRs get additional external consumption test
50+
1051
## [0.3.1] - 2026-01-05
1152

1253
### Fixed
@@ -114,7 +155,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
114155
### Fixed
115156
- Duplicate help command registration in CLI
116157

117-
[Unreleased]: https://github.com/finos/morphir/compare/v0.3.1...HEAD
158+
[Unreleased]: https://github.com/finos/morphir/compare/v0.3.2...HEAD
159+
[0.3.2]: https://github.com/finos/morphir/compare/v0.3.1...v0.3.2
118160
[0.3.1]: https://github.com/finos/morphir/compare/v0.3.0...v0.3.1
119161
[0.3.0]: https://github.com/finos/morphir/compare/v0.2.1...v0.3.0
120162
[0.1.0]: https://github.com/finos/morphir/releases/tag/v0.1.0

0 commit comments

Comments
 (0)