Some checks are pending
CI / build (push) Waiting to run
Autonomous portfolio prep batch. All gates green: 207 tests pass on iosSimulatorArm64Test, assembleRelease green, apiCheck green, app builds. Docs: - CHANGELOG.md (Keep-a-Changelog, retroactive v0.1-v0.5) - CONTRIBUTING.md (build + style + PR workflow + perf rules) - chart-realtime/README.md rewrite for v0.5.0 API surface - docs/PERFORMANCE.md (LoD perf table, alloc budget, memory budget, stability report, threading model) CI (.github/): - workflows/ci.yml — macos-latest, JDK 21, konan cache, full gate - workflows/release.yml — tag-triggered, GitHub release with XCFramework + AAR; Maven Central as commented TODO (needs OSSRH + GPG secrets) - dependabot.yml — weekly gradle + actions updates - pull_request_template.md + 2 issue templates (bug, feature) Android demo polish: - DemoScreen + ControlPanel (Material3 surface) - Sample rate slider (10..200Hz), 1-6 signal count, per-signal waveform picker (sine/square/triangle/noise), window seconds, LoD picker, Y label mode, Y formatter, interaction toggle, theme switch, status chips - Single producer coroutine (cleaner crosshair readout, easier rate accounting) - SignalGenerator + WaveformType + DemoConfig + PushCounter iOS demo scaffold (samples/ios/ChartRealtimeDemo/): - SPM Package.swift with local binaryTarget pointing to chart-realtime/build/XCFrameworks/debug/ChartRealtime.xcframework - DemoApp.swift + DemoView.swift (smoke test confirming Kotlin types accessible from Swift) - README documents the ComposeUIViewController shim needed in chart-realtime/src/iosMain/ for full SwiftUI hosting (deferred to v1.0.0 T1) - xcodebuild against iOS Simulator builds green Debt: - gradle.properties: removed kotlin.internal.klibs.non-packed=false (Compose-MP 1.11.0 final no longer needs the bypass; apiCheck + native compile + 207 tests still green) - 8 remaining deprecation warnings tied to com.android.library + KMP plugin combo; clearing them requires migration to com.android.kotlin.multiplatform.library 9.2.0 which forces ABI baseline regen + Maven publish restructure + XCFramework hierarchy expansion. Deferred as dedicated ticket. Skipped (need user): - CODE_OF_CONDUCT.md (content classifier blocks Contributor Covenant verbatim) - Maven Central T1 (Sonatype + GPG) - Benchmark vs competitors T4 (methodology + Maven coords) - Logo/banner/GIF T7 (design assets) - Tag + GitHub release T10 (rename pending) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
73 lines
2.7 KiB
YAML
73 lines
2.7 KiB
YAML
name: Release
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
- 'v*'
|
|
|
|
jobs:
|
|
release:
|
|
runs-on: macos-latest
|
|
timeout-minutes: 45
|
|
permissions:
|
|
contents: write
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0 # tags + history for changelog
|
|
|
|
- uses: actions/setup-java@v4
|
|
with:
|
|
distribution: 'temurin'
|
|
java-version: '21'
|
|
|
|
- uses: gradle/actions/setup-gradle@v4
|
|
|
|
- name: Cache Kotlin/Native (konan)
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ~/.konan
|
|
key: konan-${{ runner.os }}-${{ hashFiles('gradle/libs.versions.toml', 'chart-realtime/build.gradle.kts') }}
|
|
restore-keys: konan-${{ runner.os }}-
|
|
|
|
- name: Full test gate
|
|
run: ./gradlew :chart-realtime:iosSimulatorArm64Test :chart-realtime:apiCheck :app:assembleDebug --stacktrace
|
|
|
|
- name: Build release artifacts
|
|
run: ./gradlew :chart-realtime:assembleRelease :chart-realtime:assembleChartRealtimeReleaseXCFramework --stacktrace
|
|
|
|
- name: Zip XCFramework
|
|
run: |
|
|
cd chart-realtime/build/XCFrameworks/release
|
|
zip -r ChartRealtime.xcframework.zip ChartRealtime.xcframework
|
|
ls -lh ChartRealtime.xcframework.zip
|
|
|
|
- name: Extract release notes from CHANGELOG
|
|
id: changelog
|
|
run: |
|
|
TAG_VERSION="${GITHUB_REF_NAME#v}"
|
|
awk -v ver="$TAG_VERSION" '
|
|
$0 ~ "^## \\["ver"\\]" {flag=1; next}
|
|
flag && /^## \[/ {exit}
|
|
flag {print}
|
|
' CHANGELOG.md > release-notes.md
|
|
echo "release-notes-path=release-notes.md" >> $GITHUB_OUTPUT
|
|
|
|
- name: Create GitHub release
|
|
uses: softprops/action-gh-release@v2
|
|
with:
|
|
body_path: release-notes.md
|
|
files: |
|
|
chart-realtime/build/XCFrameworks/release/ChartRealtime.xcframework.zip
|
|
chart-realtime/build/outputs/aar/chart-realtime-release.aar
|
|
draft: false
|
|
prerelease: ${{ contains(github.ref, '-SNAPSHOT') || contains(github.ref, '-rc') || contains(github.ref, '-beta') || contains(github.ref, '-alpha') }}
|
|
|
|
# TODO: Maven Central publish (requires OSSRH_USERNAME, OSSRH_PASSWORD, GPG_SECRET_KEY, GPG_PASSPHRASE)
|
|
# - name: Publish to Maven Central
|
|
# env:
|
|
# ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.OSSRH_USERNAME }}
|
|
# ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.OSSRH_PASSWORD }}
|
|
# ORG_GRADLE_PROJECT_signingInMemoryKey: ${{ secrets.GPG_SECRET_KEY }}
|
|
# ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: ${{ secrets.GPG_PASSPHRASE }}
|
|
# run: ./gradlew publishAndReleaseToMavenCentral --no-configuration-cache
|