diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 373ac8fc..88dbc206 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -4,10 +4,38 @@ on: branches: - '**' jobs: - root: + generate-build-matrix: runs-on: macos-14-xlarge + outputs: + xcodeversions: ${{ steps.generate.outputs.xcodeversions }} + steps: + - id: generate + run: | + version_list=() + for XCODE_INSTALL in $(ls /Applications | grep Xcode); do + version_list+=("$(/usr/libexec/PlistBuddy -c "print CFBundleShortVersionString" /Applications/$XCODE_INSTALL/Contents/Info.plist)") + done + unique_version_list=( $(printf "%s\n" ${version_list[@]} | sort -n -u) ) + jsonString="$(jq -c --null-input '$ARGS.positional' --args -- "${unique_version_list[@]}")" + echo "xcodeversions=$jsonString" >> $GITHUB_OUTPUT + build: + runs-on: macos-14-xlarge + needs: [ generate-build-matrix ] + strategy: + matrix: + xcodeversion: ${{ fromJSON(needs.generate-build-matrix.outputs.xcodeversions) }} + exclude: + - version: 15.3 # https://youtrack.jetbrains.com/issue/KT-67465/cinterop-errors-when-compiling-with-Xcode-15.3-if-targetting-iosArm64-and-or-tvosArm64 steps: - uses: actions/checkout@v3.5.3 + - uses: maxim-lobanov/setup-xcode@v1.6.0 + with: + xcode-version: ${{ matrix.xcodeversion }} - uses: ./.github/actions/runGradleTask with: task: build + barrier-build: + runs-on: ubuntu-22.04 + needs: [ build ] + steps: + - run: exit 0 diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 29213c6d..529173b2 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -17,6 +17,15 @@ jobs: ref: main fetch-depth: 0 - run: exit $(git merge-base --is-ancestor $GITHUB_REF_NAME HEAD) + jvm-maven-github: + runs-on: macos-14-xlarge + needs: [ ensure-tag-is-on-main ] + steps: + - uses: actions/checkout@v3.5.3 + - uses: ./.github/actions/runGradleTask + with: + preTaskString: -Pversion=$GITHUB_REF_NAME + task: library:publishKotlinMultiplatformPublicationToGithubPackagesRepository create-github-release: runs-on: ubuntu-22.04 needs: [ ensure-tag-is-on-main ] @@ -27,20 +36,35 @@ jobs: with: name: upload_url path: upload_url - jvm-maven-github: + generate-build-matrix: runs-on: macos-14-xlarge needs: [ ensure-tag-is-on-main ] + outputs: + xcodeversions: ${{ steps.generate.outputs.xcodeversions }} steps: - - uses: actions/checkout@v3.5.3 - - uses: ./.github/actions/runGradleTask - with: - preTaskString: -Pversion=$GITHUB_REF_NAME - task: library:publishKotlinMultiplatformPublicationToGithubPackagesRepository + - id: generate + run: | + version_list=() + for XCODE_INSTALL in $(ls /Applications | grep Xcode); do + version_list+=("$(/usr/libexec/PlistBuddy -c "print CFBundleShortVersionString" /Applications/$XCODE_INSTALL/Contents/Info.plist)") + done + unique_version_list=( $(printf "%s\n" ${version_list[@]} | sort -n -u) ) + jsonString="$(jq -c --null-input '$ARGS.positional' --args -- "${unique_version_list[@]}")" + echo "xcodeversions=$jsonString" >> $GITHUB_OUTPUT attach-xcframework-to-github-release: runs-on: macos-14-xlarge - needs: [ create-github-release ] + needs: [ create-github-release, generate-build-matrix ] + strategy: + fail-fast: false + matrix: + xcodeversion: ${{ fromJSON(needs.generate-build-matrix.outputs.xcodeversions) }} + exclude: + - version: 15.3 # https://youtrack.jetbrains.com/issue/KT-67465/cinterop-errors-when-compiling-with-Xcode-15.3-if-targetting-iosArm64-and-or-tvosArm64 steps: - uses: actions/checkout@v3.5.3 + - uses: maxim-lobanov/setup-xcode@v1.6.0 + with: + xcode-version: ${{ matrix.xcodeversion }} - uses: ./.github/actions/runGradleTask with: task: :library:assembleLibraryReleaseXCFramework @@ -48,7 +72,7 @@ jobs: - uses: actions/download-artifact@v4.1.4 with: name: upload_url - - run: echo UPLOAD_URL=$(cat upload_url | sed "s/{?name,label}/?name=Library-${GITHUB_REF_NAME}.xcframework.zip/") >> $GITHUB_ENV + - run: echo UPLOAD_URL=$(cat upload_url | sed "s/{?name,label}/?name=Library-${GITHUB_REF_NAME}-xcodebuild-${{ matrix.xcodeversion }}.xcframework.zip/") >> $GITHUB_ENV - run: | curl -s \ -X POST \