Update CI.yml #5
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
name: "SDWebImage CI" | |
on: | |
push: | |
branches: | |
- master | |
pull_request: | |
branches: | |
- '*' | |
workflow_dispatch: | |
permissions: | |
contents: read | |
jobs: | |
Lint: | |
name: Cocoapods Lint | |
runs-on: macos-14 | |
env: | |
DEVELOPER_DIR: /Applications/Xcode_15.2.app | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Install Cocoapods | |
run: gem install cocoapods --no-document --quiet | |
- name: Install Xcpretty | |
run: gem install xcpretty --no-document --quiet | |
- name: Pod Update | |
run: pod repo update --silent | |
- name: Pod Install | |
run: pod install | |
- name: Run SDWebImage podspec lint | |
run: | | |
set -o pipefail | |
pod lib lint SDWebImage.podspec --allow-warnings --skip-tests | |
Demo: | |
name: Cocoapods Demo | |
runs-on: macos-14 | |
env: | |
DEVELOPER_DIR: /Applications/Xcode_15.2.app | |
WORKSPACE_NAME: SDWebImage.xcworkspace | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
iosDestination: platform=iOS Simulator,name=iPhone 15 Pro | |
macOSDestination: platform=macOS,arch=x86_64 | |
macCatalystDestination: platform=macOS,arch=x86_64,variant=Mac Catalyst | |
tvOSDestination: platform=tvOS Simulator,name=Apple TV 4K (3rd generation) | |
watchOSDestination: platform=watchOS Simulator,name=Apple Watch Series 9 (45mm) | |
visionOSDestination: platform=visionOS Simulator,name=Apple Vision Pro | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Install Cocoapods | |
run: gem install cocoapods --no-document --quiet | |
- name: Install Xcpretty | |
run: gem install xcpretty --no-document --quiet | |
- name: Pod Update | |
run: pod repo update --silent | |
- name: Pod Install | |
run: pod install | |
- name: Run demo for OSX | |
run: | | |
set -o pipefail | |
xcodebuild build -workspace "${{ env.WORKSPACE_NAME }}" -scheme "SDWebImage OSX Demo" -destination "${{ env.macOSDestination }}" -configuration Debug CODE_SIGNING_ALLOWED=NO | xcpretty -c | |
- name: Run demo for iOS | |
run: | | |
set -o pipefail | |
xcodebuild build -workspace "${{ env.WORKSPACE_NAME }}" -scheme "SDWebImage iOS Demo" -destination "${{ env.iosDestination }}" -configuration Debug CODE_SIGNING_ALLOWED=NO | xcpretty -c | |
- name: Run demo for TV | |
run: | | |
set -o pipefail | |
xcodebuild build -workspace "${{ env.WORKSPACE_NAME }}" -scheme "SDWebImage TV Demo" -destination "${{ env.tvOSDestination }}" -configuration Debug CODE_SIGNING_ALLOWED=NO | xcpretty -c | |
- name: Run demo for Watch | |
run: | | |
set -o pipefail | |
xcodebuild build -workspace "${{ env.WORKSPACE_NAME }}" -scheme "SDWebImage Watch Demo" -destination "${{ env.watchOSDestination }}" -configuration Debug CODE_SIGNING_ALLOWED=NO | xcpretty -c | |
- name: Run demo for Vision | |
run: | | |
set -o pipefail | |
xcodebuild build -workspace "${{ env.WORKSPACE_NAME }}" -scheme "SDWebImage Vision Demo" -destination "${{ env.visionOSDestination }}" -configuration Debug CODE_SIGNING_ALLOWED=NO | xcpretty -c | |
Test: | |
name: Unit Test | |
runs-on: macos-14 | |
env: | |
DEVELOPER_DIR: /Applications/Xcode_15.2.app | |
WORKSPACE_NAME: SDWebImage.xcworkspace | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
# use matrix to generate jobs for each platform | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: [visionOS] | |
include: | |
- platform: visionOS | |
destination: platform=visionOS Simulator,name=Apple Vision Pro | |
scheme: Vision | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Install Cocoapods | |
run: gem install cocoapods --no-document --quiet | |
- name: Install Xcpretty | |
run: gem install xcpretty --no-document --quiet | |
- name: Pod Update | |
run: pod repo update --silent | |
- name: Pod Install | |
run: pod install | |
- name: Clean DerivedData | |
run: | | |
rm -rf ~/Library/Developer/Xcode/DerivedData/ | |
mkdir DerivedData | |
- if: ${{ matrix.platform }} == visionOS | |
run: xcrun simctl boot "Apple Vision Pro" | |
- name: Run test | |
run: | | |
set -o pipefail | |
xcodebuild build-for-testing -workspace "${{ env.WORKSPACE_NAME }}" -scheme "Tests ${{ matrix.scheme }}" -destination "${{ matrix.destination }}" -configuration Debug CODE_SIGNING_ALLOWED=NO | xcpretty -c | |
xcodebuild test-without-building -workspace "${{ env.WORKSPACE_NAME }}" -scheme "Tests ${{ matrix.scheme }}" -destination "${{ matrix.destination }}" -configuration Debug CODE_SIGNING_ALLOWED=NO & | |
sleep 300 | |
screencapture test.png | |
- name: Download a Build Artifact | |
uses: actions/[email protected] | |
with: | |
name: test.png | |
- name: Code Coverage | |
run: | | |
set -o pipefail | |
export PATH="/usr/local/opt/curl/bin:$PATH" | |
curl --version | |
bash <(curl -s https://codecov.io/bash) -v -D "./DerivedData/${{ matrix.platform }}" -J '^SDWebImage$' -c -X gcov -F "${{ matrix.platform }}" | |
Build: | |
name: Build Library | |
runs-on: macos-14 | |
env: | |
DEVELOPER_DIR: /Applications/Xcode_15.2.app | |
PROJECT_NAME: SDWebImage.xcodeproj | |
SCHEME_NAME: SDWebImage | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Build the SwiftPM | |
run: | | |
set -o pipefail | |
swift build | |
rm -rf ~/.build | |
- name: Build as static library | |
run: | | |
set -o pipefail | |
xcodebuild build -project "${{ env.PROJECT_NAME }}" -scheme "SDWebImage static" -sdk iphonesimulator PLATFORM_NAME=iphonesimulator -configuration Debug | xcpretty -c | |
- name: Build as dynamic frameworks | |
run: | | |
set -o pipefail | |
xcodebuild build -project "${{ env.PROJECT_NAME }}" -scheme "${{ env.SCHEME_NAME }}" -sdk macosx -configuration Debug | xcpretty -c | |
xcodebuild build -project "${{ env.PROJECT_NAME }}" -scheme "${{ env.SCHEME_NAME }}" -sdk iphonesimulator PLATFORM_NAME=iphonesimulator -configuration Debug | xcpretty -c | |
xcodebuild build -project "${{ env.PROJECT_NAME }}" -scheme "${{ env.SCHEME_NAME }}" -sdk appletvsimulator -configuration Debug | xcpretty -c | |
xcodebuild build -project "${{ env.PROJECT_NAME }}" -scheme "${{ env.SCHEME_NAME }}" -sdk watchsimulator -configuration Debug | xcpretty -c | |
xcodebuild build -project "${{ env.PROJECT_NAME }}" -scheme "${{ env.SCHEME_NAME }}" -destination "platform=macOS,arch=x86_64,variant=Mac Catalyst" -configuration Debug | xcpretty -c | |
xcodebuild build -project "${{ env.PROJECT_NAME }}" -scheme "${{ env.SCHEME_NAME }}" -sdk xrsimulator -configuration Debug | xcpretty -c | |
rm -rf ~/Library/Developer/Xcode/DerivedData/ |