Skip to content

Commit

Permalink
[CI] Lock sonar scanner and mint versions and get rid of brew (#649)
Browse files Browse the repository at this point in the history
  • Loading branch information
testableapple authored Jan 31, 2025
1 parent cfba8c4 commit 3d0e23f
Show file tree
Hide file tree
Showing 10 changed files with 102 additions and 170 deletions.
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/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
Expand Down
1 change: 0 additions & 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_VIDEO_BUDDY: 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
75 changes: 75 additions & 0 deletions .github/workflows/smoke-checks-llc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
name: Smoke Checks LLC

on:
push:
branches:
- develop
- main

pull_request:
paths-ignore:
- 'README.md'
- 'CHANGELOG.md'

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
env:
STREAM_VIDEO_SECRET: ${{ secrets.STREAM_VIDEO_SECRET }}
steps:
- uses: actions/[email protected]
with:
fetch-depth: 100
- 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 }}"
timeout-minutes: 40
- name: Run Sonar analysis
run: bundle exec fastlane sonar_upload
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
- uses: actions/upload-artifact@v4
if: failure()
with:
name: LLC Test Data
path: |
~/Library/Logs/scan
- 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/StreamVideo.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/*
55 changes: 0 additions & 55 deletions .github/workflows/smoke-checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@ name: Smoke Checks

on:
pull_request:
branches:
- '**'
paths-ignore:
- 'README.md'
- 'CHANGELOG.md'
Expand Down Expand Up @@ -32,57 +30,6 @@ env:
GITHUB_PR_NUM: ${{ github.event.pull_request.number }}

jobs:
test-llc-debug:
name: Test LLC (Debug)
runs-on: macos-15
if: ${{ github.event.inputs.swiftui_snapshots != 'true' && github.event.inputs.uikit_snapshots != 'true' }}
env:
STREAM_VIDEO_SECRET: ${{ secrets.STREAM_VIDEO_SECRET }}
steps:
- uses: actions/[email protected]
with:
fetch-depth: 100
- 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 }}"
timeout-minutes: 40
# - name: Run Sonar analysis
# run: bundle exec fastlane sonar_upload
# env:
# SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
# SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
- uses: actions/upload-artifact@v4
if: failure()
with:
name: LLC Test Data
path: |
~/Library/Logs/scan
- 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/StreamVideo.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-swiftui-debug:
name: Test SwiftUI (Debug)
runs-on: macos-15
Expand Down Expand Up @@ -123,7 +70,6 @@ jobs:
env:
INSTALL_YEETD: true
SKIP_MINT_BOOTSTRAP: true
SKIP_BREW_BOOTSTRAP: true
- name: Run UI Tests (Debug)
run: bundle exec fastlane test_uikit device:"${{ env.IOS_SIMULATOR_DEVICE }}" record:${{ github.event.inputs.uikit_snapshots }}
timeout-minutes: 120
Expand Down Expand Up @@ -278,7 +224,6 @@ jobs:
INSTALL_VIDEO_BUDDY: true
INSTALL_YEETD: true
SKIP_MINT_BOOTSTRAP: true
SKIP_BREW_BOOTSTRAP: true
- name: Run UI Tests (Debug)
run: bundle exec fastlane test_e2e device:"${{ env.IOS_SIMULATOR_DEVICE }}" batch:'${{ matrix.batch }}' test_without_building:true
timeout-minutes: 60
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,8 @@ fastlane/screenshots
fastlane/test_output
fastlane/allurectl
fastlane/xcresults
fastlane/sonar
fastlane/mint
**/metrics/
recordings
*.coverage.txt
Expand Down
2 changes: 0 additions & 2 deletions Brewfile

This file was deleted.

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

This file was deleted.

4 changes: 3 additions & 1 deletion Githubfile
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
#!/bin/bash

export ALLURECTL_VERSION='2.14.2'
export ALLURECTL_VERSION='2.15.1'
export XCRESULTS_VERSION='1.16.3'
export STREAM_VIDEO_BUDDY_VERSION='1.6.23'
export PLAYWRIGHT_VERSION='1.41.2'
export YEETD_VERSION='1.0'
export MINT_VERSION='0.17.5'
export SONAR_VERSION='6.2.1.4610'
31 changes: 19 additions & 12 deletions Scripts/bootstrap.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,14 @@
# - install Mint and bootstrap its dependencies
# - 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 @@ -36,16 +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

if [[ ${INSTALL_ALLURE-default} == true ]]; then
puts "Install allurectl v${ALLURECTL_VERSION}"
DOWNLOAD_URL="https://github.com/allure-framework/allurectl/releases/download/${ALLURECTL_VERSION}/allurectl_darwin_amd64"
Expand Down
5 changes: 3 additions & 2 deletions fastlane/Sonarfile
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,9 @@ lane :sonar_upload do
'-Dsonar.swift.lizard.report="reports/lizard.xml"'
end

options = sonar_options(sonar_args: sonar_args, version_number: version_number)
sonar(options)
Dir.chdir('..') do
sh("./fastlane/sonar/bin/sonar-scanner -Dsonar.projectVersion=#{version_number} -Dproject.settings=sonar-project.properties #{sonar_args}")
end
end

desc 'Gets Sonar options'
Expand Down

0 comments on commit 3d0e23f

Please sign in to comment.