name: "SDWebImage CI" on: push: branches: - master pull_request: branches: - '*' permissions: contents: read jobs: Lint: name: Cocoapods Lint runs-on: macos-13 env: DEVELOPER_DIR: /Applications/Xcode_15.2.app steps: - name: Checkout uses: actions/checkout@v3 - name: Prepare VisionOS run: | defaults write com.apple.dt.Xcode AllowUnsupportedVisionOSHost -bool YES defaults write com.apple.CoreSimulator AllowUnsupportedVisionOSHost -bool YES xcodebuild -downloadPlatform visionOS - 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-13 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: Prepare VisionOS run: | defaults write com.apple.dt.Xcode AllowUnsupportedVisionOSHost -bool YES defaults write com.apple.CoreSimulator AllowUnsupportedVisionOSHost -bool YES xcodebuild -downloadPlatform visionOS - 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-13 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: Prepare VisionOS run: | defaults write com.apple.dt.Xcode AllowUnsupportedVisionOSHost -bool YES defaults write com.apple.CoreSimulator AllowUnsupportedVisionOSHost -bool YES xcodebuild -downloadPlatform visionOS - 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 for iOS run: | set -o pipefail xcodebuild test -workspace "${{ env.WORKSPACE_NAME }}" -scheme "Tests iOS" -destination "${{ env.iosDestination }}" -configuration Debug CODE_SIGNING_ALLOWED=NO mv ~/Library/Developer/Xcode/DerivedData/ ./DerivedData/iOS - name: Test for macOS run: | set -o pipefail xcodebuild test -workspace "${{ env.WORKSPACE_NAME }}" -scheme "Tests Mac" -destination "${{ env.macOSDestination }}" -configuration Debug CODE_SIGNING_ALLOWED=NO mv ~/Library/Developer/Xcode/DerivedData/ ./DerivedData/macOS - name: Test for tvOS run: | set -o pipefail xcodebuild test -workspace "${{ env.WORKSPACE_NAME }}" -scheme "Tests TV" -destination "${{ env.tvOSDestination }}" -configuration Debug CODE_SIGNING_ALLOWED=NO mv ~/Library/Developer/Xcode/DerivedData/ ./DerivedData/tvOS - name: Test for visionOS run: | set -o pipefail xcodebuild test -workspace "${{ env.WORKSPACE_NAME }}" -scheme "Tests Vision" -destination "${{ env.visionOSDestination }}" -configuration Debug CODE_SIGNING_ALLOWED=NO mv ~/Library/Developer/Xcode/DerivedData/ ./DerivedData/visionOS - 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 Build: name: Build Library runs-on: macos-13 env: DEVELOPER_DIR: /Applications/Xcode_15.2.app PROJECT_NAME: SDWebImage.xcodeproj SCHEME_NAME: SDWebImage steps: - name: Checkout uses: actions/checkout@v3 - name: Prepare VisionOS run: | defaults write com.apple.dt.Xcode AllowUnsupportedVisionOSHost -bool YES defaults write com.apple.CoreSimulator AllowUnsupportedVisionOSHost -bool YES xcodebuild -downloadPlatform visionOS - 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 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 rm -rf ~/Library/Developer/Xcode/DerivedData/