Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 25 additions & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ name: Release

on:
push:
branches:
- main
tags:
- 'v*.*.*'

Expand All @@ -10,10 +12,28 @@ env:

permissions:
contents: write
pull-requests: write

jobs:
release-please:
name: Release Please
runs-on: ubuntu-latest
if: github.event_name == 'push' && !startsWith(github.ref, 'refs/tags/')
outputs:
release_created: ${{ steps.release.outputs.release_created }}
tag_name: ${{ steps.release.outputs.tag_name }}
steps:
- uses: googleapis/release-please-action@v4
id: release
with:
token: ${{ secrets.GITHUB_TOKEN }}
config-file: release-please-config.json
manifest-file: .release-please-manifest.json

build-cli:
name: Build CLI (${{ matrix.target }})
needs: release-please
if: always() && (needs.release-please.outputs.release_created == 'true' || startsWith(github.ref, 'refs/tags/'))
strategy:
matrix:
include:
Expand Down Expand Up @@ -86,6 +106,8 @@ jobs:

build-wasm:
name: Build WASM
needs: release-please
if: always() && (needs.release-please.outputs.release_created == 'true' || startsWith(github.ref, 'refs/tags/'))
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
Expand Down Expand Up @@ -147,7 +169,8 @@ jobs:

create-release:
name: Create Release
needs: [build-cli, build-wasm]
needs: [release-please, build-cli, build-wasm]
if: always() && (needs.release-please.outputs.release_created == 'true' || startsWith(github.ref, 'refs/tags/'))
runs-on: ubuntu-latest
steps:
- name: Download CLI artifacts
Expand All @@ -169,6 +192,7 @@ jobs:
- name: Create Release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ needs.release-please.outputs.tag_name || github.ref_name }}
files: artifacts/*
generate_release_notes: true
fail_on_unmatched_files: true
Expand Down
3 changes: 3 additions & 0 deletions .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
".": "0.1.0"
}
17 changes: 17 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

### Features

- Initial release of flagd-evaluator
- WebAssembly module for JSON Logic evaluation
- Support for fractional operator
- CLI tool for testing and development

[Unreleased]: https://github.com/open-feature-forking/flagd-evaluator/compare/v0.1.0...HEAD
58 changes: 57 additions & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ Thank you for your interest in contributing to flagd-evaluator! This document pr
- [Building the Project](#building-the-project)
- [Testing](#testing)
- [Code Style Guidelines](#code-style-guidelines)
- [Commit Message Guidelines](#commit-message-guidelines)
- [Pull Request Process](#pull-request-process)
- [Reporting Issues](#reporting-issues)

Expand Down Expand Up @@ -182,6 +183,61 @@ unsafe {
- Avoid unwrap() in production code - use proper error handling
- Add comments for complex logic

## Commit Message Guidelines

We follow [Conventional Commits](https://www.conventionalcommits.org/) for commit messages. This enables automated changelog generation and semantic versioning via [Release Please](https://github.com/googleapis/release-please).

### Commit Message Format

```
<type>(<scope>): <description>

[optional body]

[optional footer]
```

### Types

**Types that trigger releases:**
- `feat:` - New feature (minor version bump)
- `fix:` - Bug fix (patch version bump)
- `feat!:` or `BREAKING CHANGE:` - Breaking change (major version bump)
- `perf:` - Performance improvement (patch version bump)

**Types that don't trigger releases (changelog only):**
- `docs:` - Documentation changes
- `chore:` - Maintenance tasks
- `test:` - Test updates
- `ci:` - CI/CD changes
- `refactor:` - Code refactoring
- `style:` - Code style/formatting
- `build:` - Build system changes

### Examples

```bash
# Patch release (0.1.0 -> 0.1.1)
git commit -m "fix(operators): correct fractional operator bucket distribution"

# Minor release (0.1.0 -> 0.2.0)
git commit -m "feat(operators): add sem_ver operator for semantic versioning"

# Major release (0.1.0 -> 1.0.0)
git commit -m "feat(api)!: redesign evaluation API with breaking changes

BREAKING CHANGE: evaluate() now returns Result<Value> instead of Value"

# With scope and body
git commit -m "feat(wasm): add memory optimization for large rules

Implements chunked memory allocation for evaluating rules that
exceed the default memory limit."

# Documentation (no release)
git commit -m "docs: update API examples in README"
```

## Pull Request Process

### Before Submitting
Expand All @@ -208,7 +264,7 @@ unsafe {
cargo build --target wasm32-unknown-unknown --release
```

5. **Commit with meaningful messages**
5. **Commit with meaningful messages** (see [Commit Message Guidelines](#commit-message-guidelines))
```
feat: add support for custom operator X

Expand Down
66 changes: 66 additions & 0 deletions release-please-config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
{
"packages": {
".": {
"release-type": "rust",
"package-name": "flagd-evaluator",
"changelog-path": "CHANGELOG.md",
"extra-files": [
"Cargo.toml"
],
"bump-minor-pre-major": true,
"bump-patch-for-minor-pre-major": false,
"draft": false,
"prerelease": false,
"include-component-in-tag": false,
"include-v-in-tag": true,
"changelog-type": "default",
"changelog-sections": [
{
"type": "feat",
"section": "Features",
"hidden": false
},
{
"type": "fix",
"section": "Bug Fixes",
"hidden": false
},
{
"type": "perf",
"section": "Performance Improvements",
"hidden": false
},
{
"type": "docs",
"section": "Documentation",
"hidden": false
},
{
"type": "chore",
"section": "Miscellaneous",
"hidden": false
},
{
"type": "refactor",
"section": "Code Refactoring",
"hidden": false
},
{
"type": "test",
"section": "Tests",
"hidden": false
},
{
"type": "ci",
"section": "Continuous Integration",
"hidden": false
},
{
"type": "build",
"section": "Build System",
"hidden": false
}
]
}
}
}