Skip to content

Commit e94c4d5

Browse files
authored
feat: Remove support for Xcode 14 (#1835)
BREAKING CHANGE: This release removes support for Xcode 14.
1 parent 393a300 commit e94c4d5

File tree

9 files changed

+200
-37
lines changed

9 files changed

+200
-37
lines changed

.github/workflows/ci.yml

+97-16
Original file line numberDiff line numberDiff line change
@@ -8,25 +8,106 @@ on:
88
branches:
99
- "**"
1010
env:
11-
CI_XCODE_14: /Applications/Xcode_14.2.app/Contents/Developer
1211
CI_XCODE_15: /Applications/Xcode_15.4.0.app/Contents/Developer
13-
CI_XCODE_16: /Applications/Xcode_16.0.app/Contents/Developer
12+
CI_XCODE_16: /Applications/Xcode_16.1.0.app/Contents/Developer
1413
jobs:
15-
tests:
14+
test-xcode:
1615
env:
1716
GITHUB_ACCESS_TOKEN: ${{ secrets.GITHUB_TOKEN }}
1817
timeout-minutes: 45
1918
strategy:
2019
matrix:
21-
script:
22-
- test:ios
23-
- test:macos
24-
- test:parse_live_query:all
25-
- xcode14 # runs build:starters on Xcode 14
26-
- xcode15 # runs build:starters on Xcode 15
27-
- xcode16 # runs build:starters on Xcode 16
20+
include:
21+
# Xcode
22+
- name: Xcode 15
23+
script: build:starters
24+
iosVersion: '18.1'
25+
iosDeviceModel: iPhone 16
26+
watchOsVersion: '11.1'
27+
watchDeviceModel: Apple Watch Series 10 (46mm)
28+
tvOsVersion: '18.1'
29+
tvDeviceModel: Apple TV
30+
macosVersion: 14
31+
developerDir: CI_XCODE_15
32+
- name: Xcode 16
33+
script: build:starters
34+
iosVersion: '18.1'
35+
iosDeviceModel: iPhone 16
36+
watchOsVersion: '11.1'
37+
watchDeviceModel: Apple Watch Series 10 (46mm)
38+
tvOsVersion: '18.1'
39+
tvDeviceModel: Apple TV
40+
macosVersion: 14
41+
developerDir: CI_XCODE_16
42+
# Core Module
43+
- name: Core Module, iOS 17
44+
script: test:ios
45+
iosVersion: '17.5'
46+
iosDeviceModel: iPhone 15
47+
macosVersion: 15
48+
developerDir: CI_XCODE_16
49+
- name: Core Module, iOS 18
50+
script: test:ios
51+
iosVersion: '18.1'
52+
iosDeviceModel: iPhone 16
53+
macosVersion: 15
54+
developerDir: CI_XCODE_16
55+
- name: Core Module, macOS 14
56+
script: test:macos
57+
macosVersion: 14
58+
developerDir: CI_XCODE_16
59+
- name: Core Module, macOS 15
60+
script: test:macos
61+
macosVersion: 15
62+
developerDir: CI_XCODE_16
63+
# LiveQuery Module
64+
- name: LiveQuery Module, iOS 17
65+
script: test:parse_live_query:ios
66+
iosVersion: '17.5'
67+
iosDeviceModel: iPhone 15
68+
macosVersion: 15
69+
developerDir: CI_XCODE_16
70+
- name: LiveQuery Module, iOS 18
71+
script: test:parse_live_query:ios
72+
iosVersion: '18.1'
73+
iosDeviceModel: iPhone 16
74+
macosVersion: 15
75+
developerDir: CI_XCODE_16
76+
- name: LiveQuery Module, macOS 14
77+
script: test:parse_live_query:osx
78+
macosVersion: 14
79+
developerDir: CI_XCODE_15
80+
- name: LiveQuery Module, macOS 15
81+
script: test:parse_live_query:osx
82+
macosVersion: 15
83+
developerDir: CI_XCODE_16
84+
- name: LiveQuery Module, watchOS 10
85+
script: test:parse_live_query:watchos
86+
watchOsVersion: '10.5'
87+
watchDeviceModel: Apple Watch Series 9 (45mm)
88+
macosVersion: 15
89+
developerDir: CI_XCODE_15
90+
- name: LiveQuery Module, watchOS 11
91+
script: test:parse_live_query:watchos
92+
watchOsVersion: '11.1'
93+
watchDeviceModel: Apple Watch Series 10 (46mm)
94+
macosVersion: 15
95+
developerDir: CI_XCODE_16
96+
- name: LiveQuery Module, tvOS 17
97+
script: test:parse_live_query:tvos
98+
tvOsVersion: '17.5'
99+
tvDeviceModel: Apple TV
100+
macosVersion: 15
101+
developerDir: CI_XCODE_16
102+
- name: LiveQuery Module, tvOS 18
103+
script: test:parse_live_query:tvos
104+
tvOsVersion: '18.1'
105+
tvDeviceModel: Apple TV
106+
macosVersion: 15
107+
developerDir: CI_XCODE_16
28108
fail-fast: false
29-
runs-on: ${{ ((matrix.script == 'xcode15' || matrix.script == 'xcode16') && 'macos-14') || 'macos-13' }}
109+
runs-on: macos-${{ matrix.macosVersion }}
110+
name: ${{ matrix.name }}
30111
steps:
31112
- uses: actions/checkout@v4
32113
- name: Cache SPM
@@ -49,9 +130,9 @@ jobs:
49130
- name: Submodules
50131
run: git submodule update --init --recursive
51132
- name: Build-Test
52-
run: set -o pipefail && env NSUnbufferedIO=YES bundle exec rake ${{ ((matrix.script == 'xcode14' || matrix.script == 'xcode15' || matrix.script == 'xcode16') && 'build:starters') || matrix.script }}
133+
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 }}
53134
env:
54-
DEVELOPER_DIR: ${{ (matrix.script == 'xcode15' && env.CI_XCODE_15) || (matrix.script == 'xcode16' && env.CI_XCODE_16) || env.CI_XCODE_14 }}
135+
DEVELOPER_DIR: ${{ env[matrix.developerDir] }}
55136
- name: Generate Environment Variables
56137
if: ${{ always() }}
57138
env:
@@ -68,7 +149,7 @@ jobs:
68149
echo "Build Result Location: $BUILD_RESULTS"
69150
- name: Upload Artifact Logs
70151
if: ${{ failure() }}
71-
uses: actions/upload-artifact@v3
152+
uses: actions/upload-artifact@v4
72153
with:
73154
name: ${{ env.ARTIFACT_NAME }}
74155
path: |
@@ -103,7 +184,7 @@ jobs:
103184
plugin: xcode
104185
file: ${{ env.COVERAGE_PATH }}
105186
docs:
106-
runs-on: macos-13
187+
runs-on: macos-14
107188
timeout-minutes: 15
108189
steps:
109190
- uses: actions/checkout@v4
@@ -117,7 +198,7 @@ jobs:
117198
run: |
118199
./Scripts/jazzy.sh
119200
env:
120-
DEVELOPER_DIR: ${{ env.CI_XCODE_14 }}
201+
DEVELOPER_DIR: ${{ env.CI_XCODE_16 }}
121202
concurrency:
122203
group: ${{ github.workflow }}-${{ github.ref }}
123204
cancel-in-progress: true

.github/workflows/release-automated.yml

+4-4
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ on:
33
push:
44
branches: [ master, release, alpha, beta ]
55
env:
6-
CI_XCODE_14: '/Applications/Xcode_14.2.app/Contents/Developer'
6+
CI_XCODE_16: /Applications/Xcode_16.1.0.app/Contents/Developer
77

88
jobs:
99
release:
10-
runs-on: macos-13
10+
runs-on: macos-14
1111
outputs:
1212
current_tag: ${{ steps.tag.outputs.current_tag }}
1313
steps:
@@ -46,7 +46,7 @@ jobs:
4646
publish-docs:
4747
needs: release
4848
if: needs.release.outputs.current_tag != ''
49-
runs-on: macos-13
49+
runs-on: macos-14
5050
steps:
5151
- name: Checkout repository
5252
uses: actions/checkout@v4
@@ -62,7 +62,7 @@ jobs:
6262
run: |
6363
./Scripts/jazzy.sh
6464
env:
65-
DEVELOPER_DIR: ${{ env.CI_XCODE_14 }}
65+
DEVELOPER_DIR: ${{ env.CI_XCODE_16 }}
6666
- name: Deploy Jazzy Docs
6767
uses: peaceiris/actions-gh-pages@v3
6868
with:

.github/workflows/release-manual-docs.yml

+3-3
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@ on:
66
default: ''
77
description: 'Version tag:'
88
env:
9-
CI_XCODE_14: '/Applications/Xcode_14.2.app/Contents/Developer'
9+
CI_XCODE_16: /Applications/Xcode_16.1.0.app/Contents/Developer
1010

1111
jobs:
1212
publish-docs:
1313
if: github.event.inputs.tag != ''
14-
runs-on: macos-13
14+
runs-on: macos-14
1515
steps:
1616
- name: Checkout repository
1717
uses: actions/checkout@v4
@@ -27,7 +27,7 @@ jobs:
2727
run: |
2828
./Scripts/jazzy.sh
2929
env:
30-
DEVELOPER_DIR: ${{ env.CI_XCODE_14 }}
30+
DEVELOPER_DIR: ${{ env.CI_XCODE_16 }}
3131
- name: Deploy Jazzy Docs
3232
uses: peaceiris/actions-gh-pages@v3
3333
with:

Gemfile

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
source 'https://rubygems.org'
22

33
# Docs
4-
gem 'jazzy', '~> 0.15.3'
4+
gem 'jazzy', '0.15.3'
55

66
# Development
7-
gem 'xcpretty', '~> 0.4.0'
8-
gem 'rake', '~> 13.2.1'
9-
gem 'plist', '~> 3.7.1'
7+
gem 'xcpretty', '0.3.0'
8+
gem 'rake', '13.2.1'
9+
gem 'plist', '3.7.1'

Gemfile.lock

+7-7
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ GEM
103103
rake (13.2.1)
104104
redcarpet (3.6.0)
105105
rexml (3.3.9)
106-
rouge (3.28.0)
106+
rouge (2.0.7)
107107
ruby-macho (2.5.1)
108108
sassc (2.4.0)
109109
ffi (~> 1.9)
@@ -123,18 +123,18 @@ GEM
123123
colored2 (~> 3.1)
124124
nanaimo (~> 0.4.0)
125125
rexml (>= 3.3.6, < 4.0)
126-
xcpretty (0.4.0)
127-
rouge (~> 3.28.0)
126+
xcpretty (0.3.0)
127+
rouge (~> 2.0.7)
128128

129129
PLATFORMS
130130
arm64-darwin
131131
x86_64-darwin
132132

133133
DEPENDENCIES
134-
jazzy (~> 0.15.3)
135-
plist (~> 3.7.1)
136-
rake (~> 13.2.1)
137-
xcpretty (~> 0.4.0)
134+
jazzy (= 0.15.3)
135+
plist (= 3.7.1)
136+
rake (= 13.2.1)
137+
xcpretty (= 0.3.0)
138138

139139
BUNDLED WITH
140140
2.5.22

Parse/Parse.xcodeproj/xcshareddata/xcschemes/Parse-iOS.xcscheme

+9
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,12 @@
8181
<Test
8282
Identifier = "ExtensionDataSharingTests">
8383
</Test>
84+
<Test
85+
Identifier = "InstallationUnitTests/testInstallationHasApplicationBadge">
86+
</Test>
87+
<Test
88+
Identifier = "InstallationUnitTests/testInstallationSetsApplicationBadge">
89+
</Test>
8490
<Test
8591
Identifier = "PFTestCase">
8692
</Test>
@@ -90,6 +96,9 @@
9096
<Test
9197
Identifier = "ParseClientConfigurationTests/testExtensionDataSharing">
9298
</Test>
99+
<Test
100+
Identifier = "ParseClientConfigurationTests/testServerValidation">
101+
</Test>
93102
</SkippedTests>
94103
</TestableReference>
95104
</Testables>

Parse/Parse.xcodeproj/xcshareddata/xcschemes/Parse-macOS.xcscheme

+5
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,11 @@
6262
BlueprintName = "ParseUnitTests-macOS"
6363
ReferencedContainer = "container:Parse.xcodeproj">
6464
</BuildableReference>
65+
<SkippedTests>
66+
<Test
67+
Identifier = "ParseClientConfigurationTests/testServerValidation">
68+
</Test>
69+
</SkippedTests>
6570
</TestableReference>
6671
</Testables>
6772
</TestAction>

README.md

+24
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ A library that gives you access to the powerful Parse Server backend from your i
3232
---
3333

3434
- [Getting Started](#getting-started)
35+
- [Compatibility](#compatibility)
36+
- [Parse Server](#parse-server)
37+
- [Xcode, iOS, macOS](#xcode-ios-macos)
3538
- [How Do I Contribute?](#how-do-i-contribute)
3639
- [Dependencies](#dependencies)
3740

@@ -49,6 +52,27 @@ The easiest way to install the SDK is via Swift Package Manager.
4952

5053
Take a look at the public [documentation][docs] & [API][api] and start building.
5154

55+
## Compatibility
56+
57+
### Parse Server
58+
59+
Parse Apple SDK is compatible with the following versions of Parse Server.
60+
61+
| Parse Apple SDK | Parse Server |
62+
|-----------------|--------------|
63+
| 1.0.0 | >= 1.0.0 |
64+
65+
### Xcode, iOS, macOS
66+
67+
The Parse Apple SDK is continuously tested with the most recent releases of Xcode to ensure compatibility. We follow the annual release schedule of Xcode to support the current and previous major Xcode version.
68+
69+
| Xcode Version | iOS Version | macOS Version | macOS Version | Release Date | End-of-Support Date | Parse Apple SDK Support |
70+
|---------------|-------------|---------------|---------------|----------------|---------------------|-------------------------|
71+
| Xcode 13 | iOS 15 | macOS 12 | watchOS 8 | September 2021 | October 2023 | >= 1.19.3 <2.7.2 |
72+
| Xcode 14 | iOS 16 | macOS 13 | watchOS 9 | September 2022 | October 2024 | >= 2.7.2 <= 5.0.0 |
73+
| Xcode 15 | iOS 17 | macOS 14 | watchOS 10 | September 2023 | October 2025 | >= 3.0.0 |
74+
| Xcode 16 | iOS 18 | macOS 15 | watchOS 11 | September 2024 | tbd | >= 4.2.0 |
75+
5276
## How Do I Contribute?
5377

5478
We want to make contributing to this project as easy and transparent as possible. Please refer to the [Contribution Guidelines][contributing].

0 commit comments

Comments
 (0)