-
Notifications
You must be signed in to change notification settings - Fork 10
102 lines (88 loc) · 3.75 KB
/
release.yml
File metadata and controls
102 lines (88 loc) · 3.75 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
name: Release to Maven Central
on:
workflow_dispatch:
inputs:
version:
description: 'Release version (e.g., 0.8)'
required: true
next-version:
description: 'Next development version (e.g., 0.9-SNAPSHOT)'
required: true
jobs:
release:
name: Release
if: ${{ github.repository_owner == 'sirixdb' }}
runs-on: ubuntu-latest
env:
SONATYPE_NEXUS_USERNAME: ${{ secrets.SONATYPE_NEXUS_USERNAME }}
SONATYPE_NEXUS_PASSWORD: ${{ secrets.SONATYPE_NEXUS_PASSWORD }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up JDK 25
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '25'
cache: maven
server-id: central
server-username: SONATYPE_NEXUS_USERNAME
server-password: SONATYPE_NEXUS_PASSWORD
gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }}
gpg-passphrase: GPG_PASSPHRASE
- name: Set release version
run: mvn versions:set -DnewVersion=${{ inputs.version }} -DgenerateBackupPoms=false
- name: Build and deploy to Maven Central
env:
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
run: mvn --batch-mode clean deploy -Prelease -DskipTests
- name: Commit and tag release
run: |
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
git commit -am "Release ${{ inputs.version }}"
git tag -a "v${{ inputs.version }}" -m "Release ${{ inputs.version }}"
- name: Set next development version
run: |
mvn versions:set -DnewVersion=${{ inputs.next-version }} -DgenerateBackupPoms=false
git commit -am "Prepare next development version ${{ inputs.next-version }}"
- name: Push changes and tag
run: |
git push origin HEAD
git push origin "v${{ inputs.version }}"
- name: Create GitHub Release
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh release create "v${{ inputs.version }}" \
--title "Brackit ${{ inputs.version }}" \
--notes "$(cat <<'NOTES'
## Highlights
### Performance: 1 Billion JSON Records in 16 seconds
- **Parallel group-by**: 1B records at 3.0 GB/s (97% of disk I/O speed)
- **bjq native** 2-5x faster than jq on all scales
- 100M+ records with only 4GB heap (jq OOMs at 100M)
### New Architecture
- **FastJSONParser**: byte-level parser with field interning, CompactObject, Int32 cache
- **StreamingJSONParser**: SIMD structural index, zero-copy slices for >2GB files
- **MappedJsonScanner**: Foreign Memory API mmap for multi-GB files
- **ParallelGroupByExec**: 1BRC-inspired parallel chunk processing with open-addressing byte-key hash map
- **SpillableGroupBy**: disk-spill for large aggregations
- **MorselPipeline**: DuckDB-inspired morsel-driven parallelism
- **TupleSerializer**: binary serialization for external merge sort
### Native Binaries
All binaries built with Oracle GraalVM, PGO (Profile-Guided Optimization), G1 GC, and -O3:
- `bjq-linux-amd64`
- `bjq-linux-arm64`
- `bjq-macos-amd64`
- `bjq-macos-arm64`
- `bjq-windows-amd64.exe`
### Install
```bash
curl -L https://github.com/sirixdb/brackit/releases/latest/download/bjq-linux-amd64 -o bjq
chmod +x bjq
sudo mv bjq /usr/local/bin/
```
**Full Changelog**: https://github.com/sirixdb/brackit/compare/v0.7...v${{ inputs.version }}
NOTES
)"