Skip to content

feat: Remove support for Xcode 14 #692

feat: Remove support for Xcode 14

feat: Remove support for Xcode 14 #692

Workflow file for this run

---
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:
- name: Xcode 15
script: build:starters
iosVersion: '17.5'
iosDeviceModel: iPhone 15
watchOsVersion: '10.5'
watchDeviceModel: Apple Watch Series 9 (45mm)
tvOsVersion: '17.5'
tvDeviceModel: Apple TV
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
developerDir: CI_XCODE_16
- name: Core Module, iOS 17
script: test:ios
iosVersion: '17.5'
iosDeviceModel: iPhone 15
developerDir: CI_XCODE_16
- name: LiveQuery Module, iOS 17
script: test:parse_live_query: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: LiveQuery Module, iOS 18
script: test:parse_live_query: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: LiveQuery Module, macOS 14
script: test:parse_live_query:osx
macosVersion: 14
developerDir: CI_XCODE_16
- name: Core Module, macOS 15
script: test:macos
macosVersion: 15
developerDir: CI_XCODE_16
- 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
script: test:parse_live_query:tvos
tvOsVersion: '17.5'
tvDeviceModel: Apple TV
developerDir: CI_XCODE_16
- name: LiveQuery Module, tvOS 18
script: test:parse_live_query:tvos
tvOsVersion: '18.1'
tvDeviceModel: Apple TV
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