Skip to content

Commit

Permalink
Improve CI experience
Browse files Browse the repository at this point in the history
  • Loading branch information
testableapple committed Sep 28, 2023
1 parent 3861770 commit fdcd9e2
Show file tree
Hide file tree
Showing 18 changed files with 263 additions and 145 deletions.
20 changes: 13 additions & 7 deletions .github/actions/bootstrap/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,25 @@ runs:
shell: bash
- run: echo "$HOME/.mint/bin" >> $GITHUB_PATH
shell: bash
- name: Cache RubyGems
uses: actions/cache@v3
id: rubygem-cache
with:
path: vendor/bundle
key: ${{ env.IMAGE }}-gem-${{ hashFiles('**/Gemfile.lock') }}
restore-keys: ${{ env.IMAGE }}-gem-
- name: Cache Mint
uses: actions/cache@v3
id: mint-cache
with:
path: ~/.mint
key: ${{ env.IMAGE }}-mint-${{ hashFiles('**/Mintfile') }}
restore-keys: ${{ env.IMAGE }}-mint-
- name: Cache brew
uses: actions/cache@v3
id: brew-cache
with:
path: |
~/Library/Caches/Homebrew/mint*
~/Library/Caches/Homebrew/vale*
~/Library/Caches/Homebrew/xcparse*
~/Library/Caches/Homebrew/sonar-scanner*
key: ${{ env.IMAGE }}-brew-${{ hashFiles('**/Brewfile.lock.json') }}
restore-keys: ${{ env.IMAGE }}-brew-
- uses: ./.github/actions/ruby-cache
- uses: ./.github/actions/xcode-cache
- run: ./Scripts/bootstrap.sh
shell: bash
11 changes: 11 additions & 0 deletions .github/actions/python-cache/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
name: 'Python Cache'
description: 'Run bootstrap.sh'
runs:
using: "composite"
steps:
- uses: actions/setup-python@v4
with:
python-version: 3.11
cache: 'pip'
- run: pip install -r requirements.txt
shell: bash
9 changes: 9 additions & 0 deletions .github/actions/ruby-cache/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
name: 'Ruby Cache'
description: 'Run bootstrap.sh'
runs:
using: "composite"
steps:
- uses: ruby/setup-ruby@v1
with:
ruby-version: 3.1
bundler-cache: true
19 changes: 19 additions & 0 deletions .github/actions/xcode-cache/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
name: 'Xcode Cache'
description: 'Run bootstrap.sh'
runs:
using: "composite"
steps:
- run: echo "IMAGE=${ImageOS}-${ImageVersion}" >> $GITHUB_ENV
shell: bash
- run: echo "$HOME/.mint/bin" >> $GITHUB_PATH
shell: bash
- name: Cache SPM
uses: actions/cache@v3
id: spm-cache
with:
path: spm_cache
key: ${{ env.IMAGE }}-spm-${{ hashFiles('**/Package.resolved') }}
restore-keys: ${{ env.IMAGE }}-spm-
- uses: mikehardy/buildcache-action@v2
with:
cache_key: ${{ env.IMAGE }}-buildcache-
45 changes: 39 additions & 6 deletions .github/workflows/cron-checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,28 @@ env:
HOMEBREW_NO_INSTALL_CLEANUP: 1 # Disable cleanup for homebrew, we don't need it on CI

jobs:
build-and-test-e2e-debug:
build-test-app-and-frameworks:
name: Build Test App and Frameworks
runs-on: macos-13
steps:
- uses: actions/[email protected]
- uses: ./.github/actions/ruby-cache
- uses: ./.github/actions/xcode-cache
- name: Build
run: bundle exec fastlane build_test_app_and_frameworks
timeout-minutes: 60
- uses: actions/upload-artifact@v3
if: success()
with:
name: cache-derived-data
path: |
derived_data/Build/**/*.app
derived_data/Build/**/*.xctestrun
derived_data/Build/**/*.framework
test-e2e-debug:
name: Test E2E UI (Debug)
needs: build-test-app-and-frameworks
strategy:
matrix:
include:
Expand All @@ -45,17 +65,27 @@ jobs:
XCODE_VERSION: ${{ matrix.xcode }}
steps:
- uses: actions/[email protected]
- uses: actions/download-artifact@v3
with:
name: cache-derived-data
path: derived_data/Build/
- uses: ./.github/actions/bootstrap
env:
INSTALL_ALLURE: true
INSTALL_XCPARSE: true
- name: Cache iOS Simulator Runtime
uses: actions/cache@v3
id: runtime-cache
with:
path: ~/Library/Caches/XcodeInstall/
key: runtime-ios-${{ matrix.ios }}
restore-keys: runtime-ios-${{ matrix.ios }}
- name: Setup iOS ${{ matrix.ios }} Runtime
if: ${{ matrix.setup_runtime }}
run: xcversion simulators --install='iOS ${{ matrix.ios }}'
run: bundle exec fastlane install_sim ios:"${{ matrix.ios }}"
- name: Launch Allure TestOps
run: bundle exec fastlane allure_launch cron:true
- name: Run UI Tests (Debug)
run: bundle exec fastlane test_e2e_mock cron:true device:"${{ matrix.device }} (${{ matrix.ios }})"
run: bundle exec fastlane test_e2e_mock device:"${{ matrix.device }} (${{ matrix.ios }})" cron:true test_without_building:true
timeout-minutes: 90
- name: Allure TestOps Upload
if: success() || failure()
Expand All @@ -75,7 +105,9 @@ jobs:
if: failure() && github.event_name == 'schedule'
- name: Parse xcresult
if: failure()
run: xcparse logs fastlane/test_output/StreamChatSwiftUITestsApp.xcresult fastlane/test_output/logs/
run: |
brew install chargepoint/xcparse/xcparse
xcparse logs fastlane/test_output/StreamChatUITestsApp.xcresult fastlane/test_output/logs/
- uses: actions/upload-artifact@v3
if: failure()
with:
Expand All @@ -100,7 +132,8 @@ jobs:
runs-on: ${{ matrix.os }}
steps:
- uses: actions/[email protected]
- uses: ./.github/actions/bootstrap
- uses: ./.github/actions/ruby-cache
- uses: ./.github/actions/xcode-cache
- name: Build Demo App
run: bundle exec fastlane build_demo
env:
Expand Down
71 changes: 50 additions & 21 deletions .github/workflows/smoke-checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,21 +36,40 @@ jobs:
- name: Run Podspec Linting
run: bundle exec fastlane pod_lint

build-and-test-ui-debug:
build-test-app-and-frameworks:
name: Build Test App and Frameworks
runs-on: macos-13
if: ${{ github.event_name != 'push' }}
steps:
- uses: actions/[email protected]
- uses: ./.github/actions/ruby-cache
- uses: ./.github/actions/xcode-cache
- name: Build
run: bundle exec fastlane build_test_app_and_frameworks
timeout-minutes: 60
- uses: actions/upload-artifact@v3
if: success()
with:
name: cache-derived-data
path: |
derived_data/Build/**/*.app
derived_data/Build/**/*.xctestrun
derived_data/Build/**/*.framework
test-ui-debug:
name: Test SwiftUI (Debug)
runs-on: macos-13
needs: build-test-app-and-frameworks
steps:
- uses: actions/[email protected]
- uses: actions/setup-python@v4
- uses: actions/download-artifact@v3
with:
python-version: 3.11
cache: 'pip'
name: cache-derived-data
path: derived_data/Build/
- uses: ./.github/actions/bootstrap
env:
INSTALL_SONAR: true
INSTALL_XCPARSE: true
- uses: ./.github/actions/python-cache
- name: Run UI Tests (Debug)
run: bundle exec fastlane test_ui device:"${{ env.IOS_SIMULATOR_DEVICE }}"
run: bundle exec fastlane test_ui device:"${{ env.IOS_SIMULATOR_DEVICE }}" skip_build:true
timeout-minutes: 40
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Expand Down Expand Up @@ -78,19 +97,23 @@ jobs:
if: ${{ github.event_name == 'push' && failure() }}
- name: Parse xcresult
if: failure()
run: xcparse screenshots fastlane/test_output/StreamChatSwiftUI.xcresult fastlane/test_output/snapshots --test
run: |
brew install chargepoint/xcparse/xcparse
xcparse screenshots fastlane/test_output/StreamChatSwiftUI.xcresult fastlane/test_output/snapshots --test
- uses: actions/upload-artifact@v3
if: failure()
with:
name: Test Data
path: |
fastlane/test_output/snapshots
build-and-test-e2e-debug:
test-e2e-debug:
name: Test E2E UI (Debug)
runs-on: macos-13
if: ${{ github.event_name != 'push' }}
needs: allure_testops_launch
needs:
- allure_testops_launch
- build-test-app-and-frameworks
env:
LAUNCH_ID: ${{ needs.allure_testops_launch.outputs.launch_id }}
strategy:
Expand All @@ -99,15 +122,15 @@ jobs:
fail-fast: false
steps:
- uses: actions/[email protected]
if: env.LAUNCH_ID != ''
- uses: actions/download-artifact@v3
with:
name: cache-derived-data
path: derived_data/Build/
- uses: ./.github/actions/bootstrap
if: env.LAUNCH_ID != ''
env:
INSTALL_ALLURE: true
INSTALL_XCPARSE: true
- name: Run UI Tests (Debug)
if: env.LAUNCH_ID != ''
run: bundle exec fastlane test_e2e_mock device:"${{ env.IOS_SIMULATOR_DEVICE }}" batch:'${{ matrix.batch }}'
run: bundle exec fastlane test_e2e_mock device:"${{ env.IOS_SIMULATOR_DEVICE }}" batch:'${{ matrix.batch }}' test_without_building:true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_PR_NUM: ${{ github.event.number }}
Expand All @@ -127,7 +150,9 @@ jobs:
ALLURE_TOKEN: ${{ secrets.ALLURE_TOKEN }}
- name: Parse xcresult
if: failure()
run: xcparse logs fastlane/test_output/StreamChatSwiftUITestsApp.xcresult fastlane/test_output/logs/
run: |
brew install chargepoint/xcparse/xcparse
xcparse logs fastlane/test_output/StreamChatUITestsApp.xcresult fastlane/test_output/logs/
- uses: actions/upload-artifact@v3
if: failure()
with:
Expand All @@ -145,9 +170,7 @@ jobs:
launch_id: ${{ steps.get_launch_id.outputs.launch_id }}
steps:
- uses: actions/[email protected]
- uses: ./.github/actions/bootstrap
env:
XCODE_ACTIONS: false
- uses: ./.github/actions/ruby-cache
- name: Launch Allure TestOps
run: bundle exec fastlane allure_launch
env:
Expand All @@ -161,9 +184,15 @@ jobs:
build-apps:
name: Build Demo App
runs-on: macos-13
needs: build-test-app-and-frameworks
if: ${{ github.event_name != 'push' }}
steps:
- uses: actions/[email protected]
- uses: ./.github/actions/bootstrap
- uses: actions/download-artifact@v3
with:
name: cache-derived-data
path: derived_data/Build/
- uses: ./.github/actions/ruby-cache
- uses: ./.github/actions/xcode-cache
- name: Build Demo App
run: bundle exec fastlane build_demo
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -83,3 +83,5 @@ reports/
.scannerwork/
push_payload.json
sinatra_log.txt
derived_data/
spm_cache/
1 change: 1 addition & 0 deletions .slather.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
coverage_service: sonarqube_xml
xcodeproj: StreamChatSwiftUI.xcodeproj
scheme: StreamChatSwiftUI
build_directory: derived_data/
source_directory: Sources/
output_directory: reports
ignore:
Expand Down
2 changes: 2 additions & 0 deletions Brewfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
brew 'mint'
brew 'sonar-scanner'
Loading

0 comments on commit fdcd9e2

Please sign in to comment.