From 324e853468c95b613fdcab228479aaa6f5b60aae Mon Sep 17 00:00:00 2001 From: Tim Oliver Date: Mon, 17 Apr 2023 20:41:49 -0700 Subject: [PATCH] Update build environment to latest OS versions Summary: Our CI harness for IGListKit on GitHub recently started to consistently fail at the unit test phase (https://github.com/Instagram/IGListKit/actions/runs/4683650178/jobs/8298963444). After researching it, it looks like GitHub Actions changed some configurations with their older versions of macOS, and our existing build script no longer seems to be working now. The build output seems to imply that Xcode simply hangs when it gets to the testing phase. I decided to take this chance to do a thorough audit of all our build steps and update as many of the dependencies as I could to their latest versions. This has fixed the issue, and hopefully given us a decent amount of future-proofing at the same time. :) Reviewed By: candance Differential Revision: D45002141 fbshipit-source-id: 40b22da4a9282900ff299b5e41f3a8566c4071f0 --- .github/workflows/CI.yml | 66 ++++++++++++++++++++-------------------- Gemfile | 6 ++-- 2 files changed, 36 insertions(+), 36 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 788e4b52..169b4a81 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -11,17 +11,17 @@ on: jobs: macOS: name: Unit Test macOS - runs-on: macos-11 + runs-on: macos-12 env: - DEVELOPER_DIR: /Applications/Xcode_13.0.app + DEVELOPER_DIR: /Applications/Xcode_14.2.app WORKSPACE_NAME: IGListKit.xcworkspace SCHEME_NAME: IGListKit-macOS steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Cache RubyGems - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: vendor/bundle key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }} @@ -42,20 +42,20 @@ jobs: iOS: name: Unit Test iOS - runs-on: macos-11 + runs-on: macos-12 env: - DEVELOPER_DIR: /Applications/Xcode_13.0.app + DEVELOPER_DIR: /Applications/Xcode_14.2.app WORKSPACE_NAME: IGListKit.xcworkspace SCHEME_NAME: IGListKit strategy: matrix: - destination: ["name=iPhone 12 Pro"] + destination: ["platform=iOS Simulator,name=iPhone 13 Pro"] steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Cache RubyGems - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: vendor/bundle key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }} @@ -83,15 +83,15 @@ jobs: Cocoapods: name: Cocoapods Lint - runs-on: macos-11 + runs-on: macos-12 env: - DEVELOPER_DIR: /Applications/Xcode_13.0.app + DEVELOPER_DIR: /Applications/Xcode_13.4.1.app steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Cache RubyGems - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: vendor/bundle key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }} @@ -112,19 +112,19 @@ jobs: SPM-layout-generator: name: Verify generate_spm_sources_layout.sh is not broken - runs-on: macos-11 + runs-on: macos-12 env: - DEVELOPER_DIR: /Applications/Xcode_13.0.app + DEVELOPER_DIR: /Applications/Xcode_14.2.app WORKSPACE_NAME: IGListKit.xcworkspace PROJECT_NAME: IGListKit.xcodeproj - IOS_DESTINATION: "name=iPhone 12 Pro" + IOS_DESTINATION: "platform=iOS Simulator,name=iPhone 13 Pro" SPM_IG_LIST_DIFF_KIT_PUBLIC_HEADERS_PATH: "spm/Sources/IGListDiffKit/include" SPM_IG_LIST_DIFF_KIT_SOURCES_PATH: "spm/Sources/IGListDiffKit" SPM_IG_LIST_KIT_PUBLIC_HEADERS_PATH: "spm/Sources/IGListKit/include" SPM_IG_LIST_KIT_SOURCES_PATH: "spm/Sources/IGListKit" steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Manually clean SPM Sources folder run: | @@ -146,12 +146,12 @@ jobs: SPM-build-from-Package: name: Verify SPM build by invoking `xcodebuild` on Package.swift - runs-on: macos-11 + runs-on: macos-12 env: - DEVELOPER_DIR: /Applications/Xcode_13.0.app + DEVELOPER_DIR: /Applications/Xcode_14.2.app WORKSPACE_NAME: IGListKit.xcworkspace PROJECT_NAME: IGListKit.xcodeproj - IOS_DESTINATION: "name=iPhone 12 Pro" + IOS_DESTINATION: "platform=iOS Simulator,name=iPhone 13 Pro" strategy: matrix: schemeName: ["IGListDiffKit", @@ -159,7 +159,7 @@ jobs: "IGListSwiftKit"] steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Clean project's ${{ env.PROJECT_NAME }} and ${{ env.WORKSPACE_NAME }} run: | @@ -171,12 +171,12 @@ jobs: Carthage-XCFramework: name: Verify Carthage build XCFramework - runs-on: macos-11 + runs-on: macos-12 env: - DEVELOPER_DIR: /Applications/Xcode_13.0.app + DEVELOPER_DIR: /Applications/Xcode_14.2.app steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Carthage build framework run: carthage build --no-skip-current --use-xcframeworks @@ -188,32 +188,32 @@ jobs: DEVELOPER_DIR: /Applications/Xcode_11.7.app steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Carthage build framework run: carthage build --no-skip-current Build-Examples: name: Build Examples and UI tests. - runs-on: macos-11 + runs-on: macos-12 env: - DEVELOPER_DIR: /Applications/Xcode_13.0.app + DEVELOPER_DIR: /Applications/Xcode_14.2.app IOS_EXAMPLE_XCODEPROJ: Examples/Examples-iOS/IGListKitExamples.xcodeproj TVOS_EXAMPLE_XCODEPROJ: Examples/Examples-tvOS/IGListKitExamples.xcodeproj MACOS_EXAMPLE_XCODEPROJ: Examples/Examples-macOS/IGListKitExamples.xcodeproj EXAMPLE_SCHEME: IGListKitExamples strategy: matrix: - iosDestination: ["name=iPhone 12 Pro"] - tvOSDestination: ["name=Apple TV 4K"] + iosDestination: ["platform=iOS Simulator,name=iPhone 13 Pro"] + tvOSDestination: ["platform=tvOS Simulator,name=Apple TV 4K (3rd generation)"] macOSDestination: ["platform=macOS"] macCatalystDestination: ["platform=macOS,variant=Mac Catalyst"] steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Cache RubyGems - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: vendor/bundle key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }} @@ -256,12 +256,12 @@ jobs: DANGER_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }} steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: fetch-depth: 0 - name: Cache RubyGems - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: vendor/bundle key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }} diff --git a/Gemfile b/Gemfile index bb112131..adf303cc 100644 --- a/Gemfile +++ b/Gemfile @@ -1,7 +1,7 @@ source 'https://rubygems.org' -gem 'cocoapods', '~> 1.8.0' +gem 'cocoapods', '~> 1.12.0' gem 'danger', '~> 9.2.0' -gem 'danger-swiftlint', git: 'https://github.com/ashfurrow/danger-ruby-swiftlint.git', branch: 'master' +gem 'danger-swiftlint', '~> 0.32.0' gem 'slather', '~> 2.7.4' -gem 'xcpretty', '~> 0.2.8' +gem 'xcpretty', '~> 0.3.0'