name: Release on: push: tags: - 'v*.*.*' permissions: contents: write packages: write env: GO_VERSION: "1.26.4" GORELEASER_VERSION: v2.15.4 GOMOBILE_VERSION: latest TASK_VERSION: 3.51.1 jobs: build-ios: name: Build iOS XCFramework runs-on: macos-latest steps: - uses: actions/checkout@v6.0.2 - uses: actions/setup-go@v6.4.0 with: go-version: ${{ env.GO_VERSION }} cache: true - uses: arduino/setup-task@v2.0.0 with: version: ${{ env.TASK_VERSION }} repo-token: ${{ secrets.GITHUB_TOKEN }} - name: Install gomobile run: | go install golang.org/x/mobile/cmd/gomobile@${{ env.GOMOBILE_VERSION }} gomobile init - name: Build XCFramework run: task build:ios - name: Zip XCFramework run: cd dist && zip -r Mobile.xcframework.zip Mobile.xcframework - uses: actions/upload-artifact@v7.0.1 with: name: ios-xcframework-zip path: dist/Mobile.xcframework.zip retention-days: 7 build-android: name: Build Android AAR runs-on: ubuntu-latest steps: - uses: actions/checkout@v6.0.2 - uses: actions/setup-go@v6.4.0 with: go-version: ${{ env.GO_VERSION }} cache: true - uses: arduino/setup-task@v2.0.0 with: version: ${{ env.TASK_VERSION }} repo-token: ${{ secrets.GITHUB_TOKEN }} - name: Set up Android NDK run: | NDK_DIR=$(ls -d $ANDROID_SDK_ROOT/ndk/*/ 2>/dev/null | sort -V | tail -n1) echo "ANDROID_NDK_HOME=${NDK_DIR%/}" >> $GITHUB_ENV - name: Install gomobile run: | go install golang.org/x/mobile/cmd/gomobile@${{ env.GOMOBILE_VERSION }} gomobile init - name: Build AAR run: task build:android - uses: actions/upload-artifact@v7.0.1 with: name: android-aar path: dist/mobile.aar retention-days: 7 goreleaser: name: GoReleaser runs-on: ubuntu-latest needs: [build-ios, build-android] steps: - uses: actions/checkout@v6.0.2 with: fetch-depth: 0 - uses: actions/setup-go@v6.4.0 with: go-version: ${{ env.GO_VERSION }} cache: true - uses: docker/setup-qemu-action@v4.0.0 - uses: docker/setup-buildx-action@v4.1.0 - name: Log in to GHCR uses: docker/login-action@v4.2.0 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Install syft (SBOM) uses: anchore/sbom-action/download-syft@v0.24.0 - uses: actions/download-artifact@v7.0.0 with: name: ios-xcframework-zip path: mobile-dist/ - uses: actions/download-artifact@v7.0.0 with: name: android-aar path: mobile-dist/ - uses: goreleaser/goreleaser-action@v7.2.2 with: distribution: goreleaser version: ${{ env.GORELEASER_VERSION }} args: release --clean env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}