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