Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[CI] Lock sonar scanner and mint versions and get rid of brew #3578

Merged
merged 2 commits into from
Jan 31, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 0 additions & 11 deletions .github/actions/bootstrap/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,17 +14,6 @@ runs:
path: ~/.mint
key: ${{ env.IMAGE }}-mint-${{ hashFiles('**/Mintfile') }}
restore-keys: ${{ env.IMAGE }}-mint-
- name: Cache brew
uses: actions/cache@v4
id: brew-cache
with:
path: |
~/Library/Caches/Homebrew/mint*
~/Library/Caches/Homebrew/xcparse*
~/Library/Caches/Homebrew/sonar-scanner*
~/Library/Caches/Homebrew/google-cloud-sdk*
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
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/cron-checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,6 @@ jobs:
INSTALL_ALLURE: true
INSTALL_YEETD: true
SKIP_MINT_BOOTSTRAP: true
SKIP_BREW_BOOTSTRAP: true
- uses: ./.github/actions/setup-ios-runtime
if: ${{ matrix.setup_runtime }}
timeout-minutes: 60
Expand Down Expand Up @@ -157,6 +156,7 @@ jobs:
- uses: ./.github/actions/bootstrap
env:
INSTALL_YEETD: true
INSTALL_SONAR: true
- uses: ./.github/actions/setup-ios-runtime
if: ${{ matrix.setup_runtime }}
timeout-minutes: 60
Expand Down
66 changes: 66 additions & 0 deletions .github/workflows/smoke-checks-llc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
name: Smoke Checks LLC

on:
push:
branches:
- develop
- main

pull_request:

workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

env:
HOMEBREW_NO_INSTALL_CLEANUP: 1 # Disable cleanup for homebrew, we don't need it on CI
IOS_SIMULATOR_DEVICE: "iPhone 16 Pro (18.1)"
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_PR_NUM: ${{ github.event.pull_request.number }}

jobs:
test-llc-debug:
name: Test LLC (Debug)
runs-on: macos-15
steps:
- uses: actions/[email protected]
with:
fetch-depth: 100
- uses: ./.github/actions/bootstrap
env:
INSTALL_YEETD: true
INSTALL_SONAR: true
- uses: ./.github/actions/python-cache
- name: Run LLC Tests (Debug)
run: bundle exec fastlane test device:"${{ env.IOS_SIMULATOR_DEVICE }}"
timeout-minutes: 60
- name: Run Sonar analysis
run: bundle exec fastlane sonar_upload
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
PR_NUMBER: ${{ github.event.number }}
- uses: 8398a7/action-slack@v3
with:
status: ${{ job.status }}
text: "You shall not pass!"
job_name: "Test LLC (Debug)"
fields: message,commit,author,action,workflow,job,took
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
MATRIX_CONTEXT: ${{ toJson(matrix) }}
if: ${{ github.event_name == 'push' && failure() }}
- name: Parse xcresult
if: failure()
run: |
brew install chargepoint/xcparse/xcparse
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This one is still OK to install with homebrew, right? Asking because there was a comment above about homebrew.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, this is used only when tests fail, which should be a rare case. But can't install it another way.

xcparse logs fastlane/test_output/StreamChat.xcresult fastlane/test_output/logs/
- uses: actions/upload-artifact@v4
if: failure()
with:
name: Test Data LLC
path: |
fastlane/test_output/logs/*/Diagnostics/**/*.txt
fastlane/test_output/logs/*/Diagnostics/simctl_diagnostics/DiagnosticReports/*
51 changes: 0 additions & 51 deletions .github/workflows/smoke-checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -83,55 +83,6 @@ jobs:
run: bundle exec fastlane test_ui device:"iPhone 13" build_for_testing:true
timeout-minutes: 25

test-llc-debug:
name: Test LLC (Debug)
runs-on: macos-15
if: ${{ github.event.inputs.snapshots != 'true' }}
needs: build-test-app-and-frameworks
steps:
- uses: actions/[email protected]
with:
fetch-depth: 100
- uses: actions/download-artifact@v4
with:
name: cache-derived-data
path: derived_data/Build/
- uses: ./.github/actions/bootstrap
env:
INSTALL_YEETD: true
- uses: ./.github/actions/python-cache
- name: Run LLC Tests (Debug)
run: bundle exec fastlane test device:"${{ env.IOS_SIMULATOR_DEVICE }}" skip_build:true
timeout-minutes: 60
- name: Run Sonar analysis
run: bundle exec fastlane sonar_upload
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
PR_NUMBER: ${{ github.event.number }}
- uses: 8398a7/action-slack@v3
with:
status: ${{ job.status }}
text: "You shall not pass!"
job_name: "Test LLC (Debug)"
fields: message,commit,author,action,workflow,job,took
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
MATRIX_CONTEXT: ${{ toJson(matrix) }}
if: ${{ github.event_name == 'push' && failure() }}
- name: Parse xcresult
if: failure()
run: |
brew install chargepoint/xcparse/xcparse
xcparse logs fastlane/test_output/StreamChat.xcresult fastlane/test_output/logs/
- uses: actions/upload-artifact@v4
if: failure()
with:
name: Test Data LLC
path: |
fastlane/test_output/logs/*/Diagnostics/**/*.txt
fastlane/test_output/logs/*/Diagnostics/simctl_diagnostics/DiagnosticReports/*

test-ui-debug:
name: Test UI (Debug)
runs-on: macos-15
Expand All @@ -147,7 +98,6 @@ jobs:
env:
INSTALL_YEETD: true
SKIP_MINT_BOOTSTRAP: true
SKIP_BREW_BOOTSTRAP: true
- name: Run UI Tests (Debug)
run: bundle exec fastlane test_ui device:"${{ env.IOS_SIMULATOR_DEVICE }}" skip_build:true record:${{ github.event.inputs.snapshots }}
timeout-minutes: 120
Expand Down Expand Up @@ -209,7 +159,6 @@ jobs:
INSTALL_ALLURE: true
INSTALL_YEETD: true
SKIP_MINT_BOOTSTRAP: true
SKIP_BREW_BOOTSTRAP: true
- name: Run UI Tests (Debug)
run: bundle exec fastlane test_e2e_mock device:"${{ env.IOS_SIMULATOR_DEVICE }}" batch:'${{ matrix.batch }}' test_without_building:true
timeout-minutes: 100
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,8 @@ fastlane/allurectl
fastlane/xcresults
fastlane/recordings
fastlane/performance
fastlane/sonar
fastlane/mint
**/metrics/
StreamChatCore.framework.coverage.txt
StreamChatCoreTests.xctest.coverage.txt
Expand Down
2 changes: 0 additions & 2 deletions Brewfile

This file was deleted.

124 changes: 0 additions & 124 deletions Brewfile.lock.json

This file was deleted.

2 changes: 2 additions & 0 deletions Githubfile
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,5 @@ export ALLURECTL_VERSION='2.15.1'
export XCRESULTS_VERSION='1.16.3'
export YEETD_VERSION='1.0'
export GCLOUD_VERSION='464.0.0'
export MINT_VERSION='0.17.5'
export SONAR_VERSION='6.2.1.4610'
33 changes: 19 additions & 14 deletions Scripts/bootstrap.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,16 @@
# Usage: ./bootstrap.sh
# This script will:
# - install Mint and bootstrap its dependencies
# - install Vale
# - link git hooks
# - install allure dependencies if `INSTALL_ALLURE` environment variable is provided
# You should have homebrew installed.
# - install sonar-scanner if `INSTALL_SONAR` environment variable is provided
# If you get `zsh: permission denied: ./bootstrap.sh` error, please run `chmod +x bootstrap.sh` first

function puts {
echo
echo -e "👉 ${1}"
}

# Check if Homebrew is installed
if [[ $(command -v brew) == "" ]]; then
echo "Homebrew not installed. Please install."
exit 1
fi

# Set bash to Strict Mode (http://redsymbol.net/articles/unofficial-bash-strict-mode/)
set -Eeuo pipefail

Expand All @@ -37,17 +30,29 @@ ln -sf ../../hooks/pre-commit.sh .git/hooks/pre-commit
chmod +x .git/hooks/pre-commit
chmod +x ./hooks/git-format-staged


if [ "${SKIP_BREW_BOOTSTRAP:-}" != true ]; then
puts "Install brew dependencies"
brew bundle -d
fi

if [ "${SKIP_MINT_BOOTSTRAP:-}" != true ]; then
puts "Bootstrap Mint dependencies"
git clone https://github.com/yonaskolb/Mint.git fastlane/mint
root=$(pwd)
cd fastlane/mint
swift run mint install "yonaskolb/mint@${MINT_VERSION}"
cd $root
rm -rf fastlane/mint
mint bootstrap --link
fi

if [[ ${INSTALL_SONAR-default} == true ]]; then
puts "Install sonar scanner"
DOWNLOAD_URL="https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-${SONAR_VERSION}-macosx-x64.zip"
curl -sL "${DOWNLOAD_URL}" -o ./fastlane/sonar.zip
cd fastlane
unzip sonar.zip
rm sonar.zip
cd ..
mv "fastlane/sonar-scanner-${SONAR_VERSION}-macosx-x64/" fastlane/sonar/
chmod +x ./fastlane/sonar/bin/sonar-scanner
fi

# Copy internal Xcode scheme to the right folder for
puts "Adding DemoApp-StreamDevelopers.xcscheme to the Xcode project"
cp Scripts/DemoApp-StreamDevelopers.xcscheme StreamChat.xcodeproj/xcshareddata/xcschemes/DemoApp-StreamDevelopers.xcscheme
Expand Down
12 changes: 2 additions & 10 deletions fastlane/Fastfile
Original file line number Diff line number Diff line change
Expand Up @@ -332,18 +332,10 @@ lane :test do |options|
devices: options[:device],
skip_build: true,
xcargs: buildcache_xcargs,
number_of_retries: options[:cron] ? 3 : nil
number_of_retries: options[:cron] ? 3 : 2
}

begin
scan(scan_options)
rescue StandardError => e
UI.user_error!(e) unless options[:cron]

failed_tests = retreive_failed_tests
UI.important("Re-running #{failed_tests.size} failed tests ⌛️")
scan(scan_options.merge(only_testing: failed_tests))
end
scan(scan_options)
end

desc 'Starts Sinatra web server'
Expand Down
Loading
Loading