Skip to content

Commit

Permalink
Migrate Release pipeline to GitHub Actions/Xcode Cloud (#8424)
Browse files Browse the repository at this point in the history
  • Loading branch information
dianaafanador3 authored Feb 7, 2024
1 parent 7e108c2 commit 6b1b7a8
Show file tree
Hide file tree
Showing 13 changed files with 1,581 additions and 376 deletions.
416 changes: 416 additions & 0 deletions .github/workflows/master-push.yml

Large diffs are not rendered by default.

178 changes: 178 additions & 0 deletions .github/workflows/publish-release.yml
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 }}
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ x.y.z Release notes (yyyy-MM-dd)
* Xcode: 14.2-15.2.0.

### Internal
* Migrated Release pipelines to Github Actions.
* Upgraded realm-core from ? to ?

10.46.0 Release notes (2024-01-23)
Expand Down
Loading

0 comments on commit 6b1b7a8

Please sign in to comment.