feat: Remove support for Xcode 14 #709
Workflow file for this run
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: ci | |
on: | |
push: | |
branches: | |
- master | |
pull_request: | |
branches: | |
- "**" | |
env: | |
CI_XCODE_15: /Applications/Xcode_15.4.0.app/Contents/Developer | |
CI_XCODE_16: /Applications/Xcode_16.1.0.app/Contents/Developer | |
jobs: | |
# tests: | |
# env: | |
# GITHUB_ACCESS_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
# timeout-minutes: 45 | |
# strategy: | |
# matrix: | |
# script: | |
# - test:ios | |
# - test:macos | |
# - test:parse_live_query:all | |
# - xcode15 # runs build:starters on Xcode 15 | |
# - xcode16 # runs build:starters on Xcode 16 | |
# fail-fast: false | |
# runs-on: macos-14 | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - name: Cache SPM | |
# uses: actions/cache@v4 | |
# with: | |
# path: ~/Library/Developer/Xcode/DerivedData/Parse*/SourcePackages/ | |
# key: ${{ runner.os }}-spm-${{ hashFiles('Parse.xcworkspace/xcshareddata/swiftpm/Package.resolved') }} | |
# restore-keys: | | |
# ${{ runner.os }}-spm- | |
# - name: Setup Ruby | |
# uses: ruby/setup-ruby@v1 | |
# with: | |
# bundler-cache: true | |
# - name: Create and set the default keychain | |
# run: | | |
# security create-keychain -p "" temporary | |
# security default-keychain -s temporary | |
# security unlock-keychain -p "" temporary | |
# security set-keychain-settings -lut 7200 temporary | |
# - name: Submodules | |
# run: git submodule update --init --recursive | |
# - name: Build-Test | |
# run: set -o pipefail && env NSUnbufferedIO=YES bundle exec rake ${{ ((matrix.script == 'xcode15' || matrix.script == 'xcode16') && 'build:starters') || matrix.script }} | |
# env: | |
# DEVELOPER_DIR: ${{ (matrix.script == 'xcode15' && env.CI_XCODE_15) || env.CI_XCODE_16 }} | |
# - name: Generate Environment Variables | |
# if: ${{ always() }} | |
# env: | |
# ARTIFACT_NAME: ${{ matrix.script }}-logs | |
# TEST_RESULTS: ${{ matrix.script }}.xcresult | |
# run: | | |
# ARTIFACT_NAME=${{ env.ARTIFACT_NAME }} | |
# TEST_RESULTS=$(find ~/Library/Developer/Xcode/DerivedData -name "*.xcresult") | |
# BUILD_RESULTS=$(find ~/Library/Developer/Xcode/DerivedData -name "*.xcactivitylog") | |
# echo ARTIFACT_NAME=${ARTIFACT_NAME//:/-} >> $GITHUB_ENV # replace colon with dashes | |
# echo TEST_RESULTS=${TEST_RESULTS} >> $GITHUB_ENV | |
# echo "Artifact Name: $ARTIFACT_NAME" | |
# echo "Test Result Location: $TEST_RESULTS" | |
# echo "Build Result Location: $BUILD_RESULTS" | |
# - name: Upload Artifact Logs | |
# if: ${{ failure() }} | |
# uses: actions/upload-artifact@v4 | |
# with: | |
# name: ${{ env.ARTIFACT_NAME }} | |
# path: | | |
# ~/Library/Developer/Xcode/DerivedData/Parse-*/Logs/Test | |
# ~/Library/Developer/Xcode/DerivedData/**/Logs/Build | |
# - name: Install test parsing dependencies | |
# if: matrix.script == 'test:ios' | |
# # Workaround as codecov cannot parse xcresult files; | |
# # https://github.com/codecov/uploader/issues/1078 | |
# # https://github.com/codecov/codecov-action/issues/1367 | |
# run: | | |
# brew install a7ex/homebrew-formulae/xcresultparser | |
# - name: Convert Xcode test results for code coverage upload | |
# if: matrix.script == 'test:ios' | |
# env: | |
# COVERAGE_PATH: ${{ github.workspace }}/build/${{ matrix.script }}-coverage.xml | |
# run: | | |
# COVERAGE_PATH=${COVERAGE_PATH//:/-} | |
# echo COVERAGE_PATH=$COVERAGE_PATH >> $GITHUB_ENV | |
# echo "TEST_RESULTS: $TEST_RESULTS" | |
# echo "COVERAGE_PATH: $COVERAGE_PATH" | |
# set -o pipefail && \ | |
# xcresultparser --output-format cobertura \ | |
# "$TEST_RESULTS" >"$COVERAGE_PATH" | |
# - name: Upload code coverage | |
# if: matrix.script == 'test:ios' | |
# uses: codecov/codecov-action@v4 | |
# with: | |
# # Set to `true` once codecov token bug is fixed; https://github.com/parse-community/parse-server/issues/9129 | |
# fail_ci_if_error: false | |
# token: ${{ secrets.CODECOV_TOKEN }} | |
# plugin: xcode | |
# file: ${{ env.COVERAGE_PATH }} | |
test-xcode: | |
env: | |
GITHUB_ACCESS_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
timeout-minutes: 45 | |
strategy: | |
matrix: | |
include: | |
# Xcode | |
- name: Xcode 15 | |
script: build:starters | |
iosVersion: '18.1' | |
iosDeviceModel: iPhone 16 | |
watchOsVersion: '11.1' | |
watchDeviceModel: Apple Watch Series 10 (46mm) | |
tvOsVersion: '18.1' | |
tvDeviceModel: Apple TV | |
macosVersion: 14 | |
developerDir: CI_XCODE_15 | |
# - name: Xcode 16 | |
# script: build:starters | |
# iosVersion: '18.1' | |
# iosDeviceModel: iPhone 16 | |
# watchOsVersion: '11.1' | |
# watchDeviceModel: Apple Watch Series 10 (46mm) | |
# tvOsVersion: '18.1' | |
# tvDeviceModel: Apple TV | |
# macosVersion: 14 | |
# developerDir: CI_XCODE_16 | |
# LiveQuery Module | |
# - name: LiveQuery Module, iOS 17 | |
# script: test:parse_live_query:ios | |
# iosVersion: '17.5' | |
# iosDeviceModel: iPhone 15 | |
# developerDir: CI_XCODE_16 | |
# - name: LiveQuery Module, iOS 18 | |
# script: test:parse_live_query:ios | |
# iosVersion: '18.1' | |
# iosDeviceModel: iPhone 16 | |
# developerDir: CI_XCODE_16 | |
# - name: LiveQuery Module, macOS 14 | |
# script: test:parse_live_query:osx | |
# macosVersion: 14 | |
# developerDir: CI_XCODE_15 | |
# - name: LiveQuery Module, macOS 15 | |
# script: test:parse_live_query:osx | |
# macosVersion: 15 | |
# developerDir: CI_XCODE_16 | |
# - name: LiveQuery Module, watchOS 11 | |
# script: test:parse_live_query:watchos | |
# watchOsVersion: '11.1' | |
# watchDeviceModel: Apple Watch Series 10 (46mm) | |
# developerDir: CI_XCODE_16 | |
# - name: LiveQuery Module, watchOS 10 | |
# script: test:parse_live_query:watchos | |
# watchOsVersion: '10.5' | |
# watchDeviceModel: Apple Watch Series 9 (45mm) | |
# developerDir: CI_XCODE_15 | |
# - name: LiveQuery Module, tvOS 17.5 | |
# script: test:parse_live_query:tvos | |
# tvOsVersion: '17.5' | |
# tvDeviceModel: Apple TV | |
# developerDir: CI_XCODE_16 | |
# - name: LiveQuery Module, tvOS 18.1 | |
# script: test:parse_live_query:tvos | |
# tvOsVersion: '18.1' | |
# tvDeviceModel: Apple TV | |
# developerDir: CI_XCODE_16 | |
# Core Module | |
# - name: Core Module, iOS 17 | |
# script: test:ios | |
# iosVersion: '17.5' | |
# iosDeviceModel: iPhone 15 | |
# developerDir: CI_XCODE_16 | |
# - name: Core Module, iOS 18 | |
# script: test:ios | |
# iosVersion: '18.1' | |
# iosDeviceModel: iPhone 16 | |
# developerDir: CI_XCODE_16 | |
# - name: Core Module, macOS 14 | |
# script: test:macos | |
# macosVersion: 14 | |
# developerDir: CI_XCODE_16 | |
# - name: Core Module, macOS 15 | |
# script: test:macos | |
# macosVersion: 15 | |
# developerDir: CI_XCODE_16 | |
fail-fast: false | |
runs-on: macos-${{ matrix.macosVersion || 14 }} | |
name: ${{ matrix.name }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Cache SPM | |
uses: actions/cache@v4 | |
with: | |
path: ~/Library/Developer/Xcode/DerivedData/Parse*/SourcePackages/ | |
key: ${{ runner.os }}-spm-${{ hashFiles('Parse.xcworkspace/xcshareddata/swiftpm/Package.resolved') }} | |
restore-keys: | | |
${{ runner.os }}-spm- | |
- name: Setup Ruby | |
uses: ruby/setup-ruby@v1 | |
with: | |
bundler-cache: true | |
- name: Create and set the default keychain | |
run: | | |
security create-keychain -p "" temporary | |
security default-keychain -s temporary | |
security unlock-keychain -p "" temporary | |
security set-keychain-settings -lut 7200 temporary | |
- name: Submodules | |
run: git submodule update --init --recursive | |
- name: Build-Test | |
run: set -o pipefail && env NSUnbufferedIO=YES IOS_VERSION="${{ matrix.iosVersion }}" IOS_DEVICE_MODEL="${{ matrix.iosDeviceModel }}" WATCH_DEVICE_MODEL="${{ matrix.watchDeviceModel }}" WATCH_OS_VERSION="${{ matrix.watchOsVersion }}" TV_DEVICE_MODEL="${{ matrix.tvDeviceModel }}" TV_OS_VERSION="${{ matrix.tvOsVersion }}" bundle exec rake ${{ matrix.script }} | |
env: | |
DEVELOPER_DIR: ${{ env[matrix.developerDir] }} | |
- name: Generate Environment Variables | |
if: ${{ always() }} | |
env: | |
ARTIFACT_NAME: ${{ matrix.script }}-logs | |
TEST_RESULTS: ${{ matrix.script }}.xcresult | |
run: | | |
ARTIFACT_NAME=${{ env.ARTIFACT_NAME }} | |
TEST_RESULTS=$(find ~/Library/Developer/Xcode/DerivedData -name "*.xcresult") | |
BUILD_RESULTS=$(find ~/Library/Developer/Xcode/DerivedData -name "*.xcactivitylog") | |
echo ARTIFACT_NAME=${ARTIFACT_NAME//:/-} >> $GITHUB_ENV # replace colon with dashes | |
echo TEST_RESULTS=${TEST_RESULTS} >> $GITHUB_ENV | |
echo "Artifact Name: $ARTIFACT_NAME" | |
echo "Test Result Location: $TEST_RESULTS" | |
echo "Build Result Location: $BUILD_RESULTS" | |
- name: Upload Artifact Logs | |
if: ${{ failure() }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ env.ARTIFACT_NAME }} | |
path: | | |
~/Library/Developer/Xcode/DerivedData/Parse-*/Logs/Test | |
~/Library/Developer/Xcode/DerivedData/**/Logs/Build | |
- name: Install test parsing dependencies | |
if: matrix.script == 'test:ios' | |
# Workaround as codecov cannot parse xcresult files; | |
# https://github.com/codecov/uploader/issues/1078 | |
# https://github.com/codecov/codecov-action/issues/1367 | |
run: | | |
brew install a7ex/homebrew-formulae/xcresultparser | |
- name: Convert Xcode test results for code coverage upload | |
if: matrix.script == 'test:ios' | |
env: | |
COVERAGE_PATH: ${{ github.workspace }}/build/${{ matrix.script }}-coverage.xml | |
run: | | |
COVERAGE_PATH=${COVERAGE_PATH//:/-} | |
echo COVERAGE_PATH=$COVERAGE_PATH >> $GITHUB_ENV | |
echo "TEST_RESULTS: $TEST_RESULTS" | |
echo "COVERAGE_PATH: $COVERAGE_PATH" | |
set -o pipefail && \ | |
xcresultparser --output-format cobertura \ | |
"$TEST_RESULTS" >"$COVERAGE_PATH" | |
- name: Upload code coverage | |
if: matrix.script == 'test:ios' | |
uses: codecov/codecov-action@v4 | |
with: | |
# Set to `true` once codecov token bug is fixed; https://github.com/parse-community/parse-server/issues/9129 | |
fail_ci_if_error: false | |
token: ${{ secrets.CODECOV_TOKEN }} | |
plugin: xcode | |
file: ${{ env.COVERAGE_PATH }} | |
docs: | |
runs-on: macos-14 | |
timeout-minutes: 15 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup Ruby | |
uses: ruby/setup-ruby@v1 | |
with: | |
bundler-cache: true | |
- name: Submodules | |
run: git submodule update --init --recursive | |
- name: Create Jazzy Docs | |
run: | | |
./Scripts/jazzy.sh | |
env: | |
DEVELOPER_DIR: ${{ env.CI_XCODE_16 }} | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true |