-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Migrate Release pipeline to GitHub Actions/Xcode Cloud (#8424)
- Loading branch information
1 parent
7e108c2
commit 6b1b7a8
Showing
13 changed files
with
1,581 additions
and
376 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,178 @@ | ||
name: Publish release | ||
on: workflow_dispatch | ||
env: | ||
XCODE_VERSION: "['14.2', '14.3.1', '15.1', '15.2']" | ||
TEST_XCODE_VERSION: '15.1' | ||
jobs: | ||
prepare: | ||
runs-on: ubuntu-latest | ||
name: Prepare outputs | ||
outputs: | ||
XCODE_VERSIONS_MATRIX: ${{ env.XCODE_VERSION }} | ||
VERSION: ${{ steps.get-version.outputs.VERSION }} | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
- name: Compute outputs | ||
run: | | ||
echo "XCODE_VERSIONS_MATRIX=${{ env.XCODE_VERSION }}" >> $GITHUB_OUTPUT | ||
- name: Read SDK version | ||
id: get-version | ||
run: | | ||
version="$(sed -n 's/^VERSION=\(.*\)$/\1/p' "${GITHUB_WORKSPACE}/dependencies.list")" | ||
echo "VERSION=$version" >> $GITHUB_OUTPUT | ||
tag-release: | ||
runs-on: ubuntu-latest | ||
name: Tag Release | ||
needs: prepare | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
- uses: rickstaa/action-create-tag@v1 | ||
id: "tag_create" | ||
with: | ||
tag: "v${{ needs.prepare.outputs.VERSION }}" | ||
tag_exists_error: false | ||
message: "" | ||
publish-docs: | ||
runs-on: macos-latest | ||
name: Publish docs to S3 Bucket | ||
needs: tag-release | ||
env: | ||
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | ||
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
- name: Gem install | ||
run: | | ||
gem install octokit | ||
gem install pathname | ||
gem install fileutils | ||
- name: Export GITHUB_TOKEN to workspace | ||
run: echo "GITHUB_ACCESS_TOKEN=${{ secrets.GITHUB_TOKEN }}" >> $GITHUB_ENV | ||
- name: Publish docs | ||
run: | | ||
sh -x build.sh publish-docs ${{ github.sha }} | ||
create-release: | ||
runs-on: macos-latest | ||
name: Create github release | ||
needs: [tag-release, prepare] | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
- name: Gem install | ||
run: | | ||
gem install octokit | ||
gem install pathname | ||
gem install fileutils | ||
- name: Export GITHUB_TOKEN to workspace | ||
run: echo "GITHUB_ACCESS_TOKEN=${{ secrets.GITHUB_TOKEN }}" >> $GITHUB_ENV | ||
- name: Create Github release | ||
run: ./build.sh publish-github ${{ github.sha }} | ||
publish-cocoapods: | ||
runs-on: macos-latest | ||
name: Publish Cocoapods specs | ||
needs: [tag-release, prepare] | ||
env: | ||
COCOAPODS_TRUNK_TOKEN: ${{ secrets.COCOAPODS_TRUNK_TOKEN }} | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
- name: Install ruby | ||
uses: ruby/setup-ruby@ec02537da5712d66d4d50a0f33b7eb52773b5ed1 | ||
with: | ||
ruby-version: '3.1.2' | ||
bundler-cache: true | ||
- name: Publish | ||
run: ./build.sh publish-cocoapods v${{ needs.prepare.outputs.VERSION }} | ||
update-checker: | ||
runs-on: macos-latest | ||
name: Update to latest version update checker file | ||
needs: tag-release | ||
env: | ||
AWS_ACCESS_KEY_ID: ${{ secrets.UPDATE_CHECKER_ACCESS_KEY }} | ||
AWS_SECRET_ACCESS_KEY: ${{ secrets.UPDATE_CHECKER_SECRET_KEY }} | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
- name: Install ruby | ||
uses: ruby/setup-ruby@ec02537da5712d66d4d50a0f33b7eb52773b5ed1 | ||
with: | ||
ruby-version: '3.1.2' | ||
bundler-cache: true | ||
- name: Create Github release | ||
run: ./build.sh publish-update-checker | ||
test-installation: | ||
runs-on: macos-13 | ||
name: Run installation test for ${{ matrix.platform }}, ${{ matrix.installation }} and ${{ matrix.linkage }} | ||
needs: [create-release, prepare] | ||
strategy: | ||
matrix: | ||
platform: [ios, osx, watchos, tvos, catalyst, visionos] | ||
installation: [cocoapods, spm, carthage, xcframework] | ||
linkage: [static, dynamic] | ||
exclude: | ||
- installation: carthage | ||
linkage: static | ||
- platform: catalyst | ||
installation: carthage | ||
- platform: osx | ||
installation: xcframework | ||
linkage: static | ||
- platform: watchos | ||
installation: xcframework | ||
linkage: static | ||
- platform: tvos | ||
installation: xcframework | ||
linkage: static | ||
- platform: catalyst | ||
installation: xcframework | ||
linkage: static | ||
- platform: visionos | ||
installation: xcframework | ||
linkage: static | ||
- platform: catalyst | ||
installation: carthage | ||
linkage: static | ||
- platform: visionos | ||
installation: carthage | ||
- platform: visionos | ||
installation: cocoapods | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
- name: Install FileUtils | ||
run: gem install fileutils | ||
- uses: maxim-lobanov/setup-xcode@v1 | ||
with: | ||
xcode-version: ${{ env.TEST_XCODE_VERSION }} | ||
- name: Set REALM_TEST_RELEASE | ||
run: echo "REALM_TEST_RELEASE=${{ needs.prepare.outputs.VERSION }}" >> $GITHUB_ENV | ||
- name: Run installation test | ||
run: | | ||
cd examples/installation | ||
./build.rb ${{ matrix.platform }} ${{ matrix.installation }} ${{ matrix.linkage }} | ||
post-slack-release: | ||
runs-on: macos-latest | ||
name: Publish to release Slack channel | ||
needs: [test-installation, prepare] | ||
env: | ||
WEBHOOK_URL: ${{ secrets.SLACK_RELEASES_WEBHOOK }} | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
- name: Gem install | ||
run: | | ||
gem install octokit | ||
gem install pathname | ||
gem install fileutils | ||
- name: Prepare Changelog | ||
run: ./build.sh prepare-publish-changelog | ||
- name: 'Post to #realm-releases' | ||
uses: realm/ci-actions/release-to-slack@v3 | ||
with: | ||
changelog: ExtractedChangelog/CHANGELOG.md | ||
sdk: Swift | ||
webhook-url: ${{ env.WEBHOOK_URL }} | ||
version: ${{ needs.prepare.outputs.VERSION }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.