SDWebImage/.github/workflows/CI.yml

213 lines
8.4 KiB
YAML
Raw Normal View History

2021-10-09 16:30:38 +08:00
name: "SDWebImage CI"
on:
push:
branches:
- master
pull_request:
branches:
- '*'
permissions:
contents: read
2021-10-09 16:30:38 +08:00
jobs:
Pods:
name: Cocoapods Lint
runs-on: macos-13
2021-10-09 16:30:38 +08:00
env:
DEVELOPER_DIR: /Applications/Xcode_15.2.app
2021-10-09 16:30:38 +08:00
steps:
- name: Checkout
2023-01-17 19:50:50 +08:00
uses: actions/checkout@v3
2021-10-09 16:30:38 +08:00
- 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
2021-10-09 16:40:45 +08:00
2021-10-09 16:30:38 +08:00
Demo:
name: Run Demo
runs-on: macos-13
2021-10-09 16:30:38 +08:00
env:
DEVELOPER_DIR: /Applications/Xcode_15.2.app
2021-10-09 16:30:38 +08:00
WORKSPACE_NAME: SDWebImage.xcworkspace
OSXSCHEME: SDWebImage OSX Demo
iOSSCHEME: SDWebImage iOS Demo
TVSCHEME: SDWebImage TV Demo
WATCHSCHEME: SDWebImage Watch Demo
VISIONSCHEME: SDWebImage Vision Demo
2021-10-09 16:30:38 +08:00
strategy:
matrix:
iosDestination: ["name=iPhone 13 Pro"]
tvOSDestination: ["name=Apple TV 4K"]
watchOSDestination: ["platform=watchOS Simulator,name=Apple Watch Series 7 - 45mm"]
macOSDestination: ["platform=macOS"]
macCatalystDestination: ["platform=macOS,arch=x86_64,variant=Mac Catalyst"]
visionOSDestination: ["platform=visionOS Simulator,name=Apple Vision Pro"]
2021-10-09 16:30:38 +08:00
steps:
- name: Checkout
2023-01-17 19:50:50 +08:00
uses: actions/checkout@v3
2021-10-09 16:30:38 +08:00
- 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 "${{ env.OSXSCHEME }}" -destination "${{ matrix.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 "${{ env.iOSSCHEME }}" -destination "${{ matrix.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 "${{ env.TVSCHEME }}" -destination "${{ matrix.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 "${{ env.WATCHSCHEME }}" -destination "${{ matrix.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 "${{ env.VISIONSCHEME }}" -destination "${{ matrix.visionOSDestination }}" -configuration Debug CODE_SIGNING_ALLOWED=NO | xcpretty -c
2021-10-09 16:30:38 +08:00
Test:
name: Unit Test
runs-on: macos-13
2021-10-09 16:30:38 +08:00
env:
DEVELOPER_DIR: /Applications/Xcode_15.2.app
2021-10-09 16:30:38 +08:00
WORKSPACE_NAME: SDWebImage.xcworkspace
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
2021-10-09 16:30:38 +08:00
strategy:
matrix:
iosDestination: ["platform=iOS Simulator,name=iPhone 13 Pro"]
macOSDestination: ["platform=macOS,arch=x86_64"]
tvOSDestination: ["platform=tvOS Simulator,name=Apple TV 4K"]
visionOSDestination: ["platform=visionOS Simulator,name=Apple Vision Pro"]
2021-10-09 16:30:38 +08:00
steps:
- name: Checkout
2023-01-17 19:50:50 +08:00
uses: actions/checkout@v3
2021-10-09 16:30:38 +08:00
- 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
- name: Test - ${{ matrix.iosDestination }}
run: |
set -o pipefail
xcodebuild test -workspace "${{ env.WORKSPACE_NAME }}" -scheme "Tests iOS" -destination "${{ matrix.iosDestination }}" -configuration Debug CODE_SIGNING_ALLOWED=NO
2021-10-09 16:30:38 +08:00
mv ~/Library/Developer/Xcode/DerivedData/ ./DerivedData/iOS
- name: Test - ${{ matrix.macOSDestination }}
run: |
set -o pipefail
xcodebuild test -workspace "${{ env.WORKSPACE_NAME }}" -scheme "Tests Mac" -destination "${{ matrix.macOSDestination }}" -configuration Debug CODE_SIGNING_ALLOWED=NO
2021-10-09 16:30:38 +08:00
mv ~/Library/Developer/Xcode/DerivedData/ ./DerivedData/macOS
- name: Test - ${{ matrix.tvOSDestination }}
run: |
set -o pipefail
xcodebuild test -workspace "${{ env.WORKSPACE_NAME }}" -scheme "Tests TV" -destination "${{ matrix.tvOSDestination }}" -configuration Debug CODE_SIGNING_ALLOWED=NO
2021-10-09 16:30:38 +08:00
mv ~/Library/Developer/Xcode/DerivedData/ ./DerivedData/tvOS
- name: Test - ${{ matrix.visionOSDestination }}
run: |
set -o pipefail
xcodebuild test -workspace "${{ env.WORKSPACE_NAME }}" -scheme "Tests Vision" -destination "${{ matrix.visionOSDestination }}" -configuration Debug CODE_SIGNING_ALLOWED=NO
mv ~/Library/Developer/Xcode/DerivedData/ ./DerivedData/visionOS
2021-10-09 16:30:38 +08:00
- 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/macOS' -J '^SDWebImage$' -c -X gcov -F macos
bash <(curl -s https://codecov.io/bash) -v -D './DerivedData/iOS' -J '^SDWebImage$' -c -X gcov -F ios
bash <(curl -s https://codecov.io/bash) -v -D './DerivedData/tvOS' -J '^SDWebImage$' -c -X gcov -F tvos
bash <(curl -s https://codecov.io/bash) -v -D './DerivedData/visionOS' -J '^SDWebImage$' -c -X gcov -F visionos
2021-10-09 16:30:38 +08:00
Build:
name: Build Library
runs-on: macos-13
2021-10-09 16:30:38 +08:00
env:
DEVELOPER_DIR: /Applications/Xcode_15.2.app
2021-10-09 16:30:38 +08:00
PROJECT_NAME: SDWebImage.xcodeproj
2021-10-09 16:40:45 +08:00
SCHEME_NAME: SDWebImage
2021-10-09 16:30:38 +08:00
steps:
- name: Checkout
2023-01-17 19:50:50 +08:00
uses: actions/checkout@v3
2021-10-09 16:30:38 +08:00
- 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: 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
2021-10-09 16:30:38 +08:00
rm -rf ~/Library/Developer/Xcode/DerivedData/
- 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
2021-10-09 16:30:38 +08:00
rm -rf ~/Library/Developer/Xcode/DerivedData/