Skip to content

Commit

Permalink
Update CI to use macOS 15 and Xcode 16 (#3493)
Browse files Browse the repository at this point in the history
Task/Issue URL: https://app.asana.com/0/1204006570077678/1208389158134603/f
Tech Design URL:
CC:

Description:
Updates our workflows to use Xcode 16
  • Loading branch information
jotaemepereira authored Nov 15, 2024
1 parent 9e4e472 commit 0f8a33d
Show file tree
Hide file tree
Showing 42 changed files with 319 additions and 67 deletions.
12 changes: 10 additions & 2 deletions .github/workflows/build_appstore.yml
Original file line number Diff line number Diff line change
Expand Up @@ -111,9 +111,17 @@ jobs:
APPLE_API_KEY_ISSUER: ${{ secrets.APPLE_API_KEY_ISSUER }}
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
run: |
if [ "${{ env.destination }}" == "testflight_review" ]; then
app_bundle_name="DuckDuckGo App Store Review"
app_dsym_name="DuckDuckGo-AppStore-Review"
else
app_bundle_name="DuckDuckGo App Store"
app_dsym_name="DuckDuckGo-AppStore"
fi
bundle exec fastlane release_${{ env.destination }}
dsym_path="${{ github.workspace }}/DuckDuckGo-AppStore.app.dSYM.zip"
mv -f "${{ github.workspace }}/DuckDuckGo App Store.app.dSYM.zip" "${dsym_path}"
dsym_path="${{ github.workspace }}/${app_dsym_name}.app.dSYM.zip"
mv -f "${{ github.workspace }}/${app_bundle_name}.app.dSYM.zip" "${dsym_path}"
version="$(cut -d ' ' -f 3 < Configuration/Version.xcconfig)"
build_number="$(cut -d ' ' -f 3 < Configuration/BuildNumber.xcconfig)"
echo "dsym-path=${dsym_path}" >> $GITHUB_ENV
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/build_notarized.yml
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ jobs:

name: Export Notarized App

runs-on: macos-14-xlarge
runs-on: macos-15-xlarge

outputs:
app-version: ${{ steps.set-outputs.outputs.app-version }}
Expand Down Expand Up @@ -235,7 +235,7 @@ jobs:
needs: export-notarized-app
if: ${{ github.event.inputs.create-dmg == true || inputs.create-dmg == true }}

runs-on: macos-14
runs-on: macos-15

env:
app-version: ${{ needs.export-notarized-app.outputs.app-version }}
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/bump_internal_release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ jobs:

# This doesn't need Xcode, so could technically run on Ubuntu, but find_asana_release_task.sh
# uses BSD-specific `date` syntax, that doesn't work with GNU `date` (available on Linux).
runs-on: macos-14
runs-on: macos-15
timeout-minutes: 10

outputs:
Expand Down Expand Up @@ -151,7 +151,7 @@ jobs:
name: Increment Build Number

needs: [ validate_input_conditions, run_tests ]
runs-on: macos-14-xlarge
runs-on: macos-15-xlarge
timeout-minutes: 10

steps:
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/code_freeze.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ jobs:

name: Create Release Branch

runs-on: macos-14-xlarge
runs-on: macos-15-xlarge
timeout-minutes: 10

outputs:
Expand Down Expand Up @@ -111,7 +111,7 @@ jobs:
name: Increment Build Number

needs: [ create_release_branch, run_tests ]
runs-on: macos-14-xlarge
runs-on: macos-15-xlarge
timeout-minutes: 10

steps:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/create_variant.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ jobs:
ATB_VARIANT_NAME: ${{ inputs.atb-variant || github.event.inputs.atb-variant }}
ORIGIN_VARIANT_NAME: ${{ inputs.origin-variant || github.event.inputs.origin-variant }}

runs-on: macos-14
runs-on: macos-15
timeout-minutes: 15

steps:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/hotfix.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ jobs:

name: Create Release Branch

runs-on: macos-14-xlarge
runs-on: macos-15-xlarge
timeout-minutes: 10

outputs:
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ jobs:

name: Test Shell Scripts

runs-on: macos-14
runs-on: macos-15

steps:
- name: Check out the code
Expand Down Expand Up @@ -119,7 +119,7 @@ jobs:
- cache-key: sandbox-
flavor: Sandbox

runs-on: macos-14-xlarge
runs-on: macos-15-xlarge
timeout-minutes: 30

outputs:
Expand Down Expand Up @@ -317,7 +317,7 @@ jobs:
# workflow_call is used by bump_internal_release and is followed by a proper release job
if: github.actor != 'dependabot[bot]' && (github.event_name == 'push' || github.event_name == 'pull_request')

runs-on: macos-14-xlarge
runs-on: macos-15-xlarge
timeout-minutes: 30

steps:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/publish_dmg_release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ jobs:
# or failed (for public releases or hotfixes), because tagging doesn't block publishing the release
if: always()

runs-on: macos-14-xlarge
runs-on: macos-15-xlarge
timeout-minutes: 10

steps:
Expand Down
12 changes: 11 additions & 1 deletion .github/workflows/sync_end_to_end.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,16 +35,26 @@ jobs:
strategy:
fail-fast: false
matrix:
runner: [macos-13-xlarge, macos-14-xlarge]
runner: [macos-13-xlarge, macos-14-xlarge, macos-15-xlarge]
include:
- xcode-version: "15.2"
runner: macos-13-xlarge
- xcode-version: "15.4"
runner: macos-14-xlarge
- xcode-version: "16.1"
runner: macos-15-xlarge

timeout-minutes: 60

steps:
- name: Install screenresolution
if: matrix.runner == 'macos-15-xlarge'
run: brew install screenresolution

- name: Change screen resolution
if: matrix.runner == 'macos-15-xlarge'
run: screenresolution set 1920x1080x32@60

- name: Register SSH key for certificates repository access
uses: webfactory/[email protected]
with:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/tag_release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ jobs:

# This doesn't need Xcode, so could technically run on Ubuntu, but actions that add comments and tasks
# in Asana use BSD-specific sed syntax, that doesn't work with GNU sed (available on Linux).
runs-on: macos-14
runs-on: macos-15

env:
asana-task-url: ${{ github.event.inputs.asana-task-url || inputs.asana-task-url }}
Expand Down
14 changes: 12 additions & 2 deletions .github/workflows/ui_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,14 @@ jobs:
strategy:
fail-fast: false
matrix:
runner: [macos-13-xlarge, macos-14-xlarge]
runner: [macos-13-xlarge, macos-14-xlarge, macos-15-xlarge]
include:
- xcode-version: "15.2"
runner: macos-13-xlarge
- xcode-version: "15.4"
runner: macos-14-xlarge
- xcode-version: "16.1"
runner: macos-15-xlarge

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}-${{ matrix.runner }}
Expand All @@ -53,6 +55,14 @@ jobs:
timeout-minutes: 120

steps:
- name: Install screenresolution
if: matrix.runner == 'macos-15-xlarge'
run: brew install screenresolution

- name: Change screen resolution
if: matrix.runner == 'macos-15-xlarge'
run: screenresolution set 1920x1080x32@60

- name: Register SSH key for certificates repository access
uses: webfactory/[email protected]
with:
Expand Down Expand Up @@ -172,4 +182,4 @@ jobs:
asana-pat: ${{ secrets.ASANA_ACCESS_TOKEN }}
asana-project: ${{ vars.MACOS_APP_DEVELOPMENT_ASANA_PROJECT_ID }}
asana-task-name: GH Workflow Failure - UI Tests
asana-task-description: The UI Tests workflow has failed. See https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}
asana-task-description: The UI Tests workflow has failed. See https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}
2 changes: 1 addition & 1 deletion .xcode-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
15.4
16.1
1 change: 1 addition & 0 deletions Configuration/App/DuckDuckGoAppStore.xcconfig
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ PRODUCT_BUNDLE_IDENTIFIER = $(MAIN_BUNDLE_IDENTIFIER)
CODE_SIGN_ENTITLEMENTS = DuckDuckGo/DuckDuckGoAppStore.entitlements
CODE_SIGN_ENTITLEMENTS[config=Debug][arch=*][sdk=*] = DuckDuckGo/DuckDuckGoAppStoreDebug.entitlements
CODE_SIGN_ENTITLEMENTS[config=CI][arch=*][sdk=*] = DuckDuckGo/DuckDuckGoAppStoreCI.entitlements
CODE_SIGN_ENTITLEMENTS[config=Review][arch=*][sdk=*] = DuckDuckGo/DuckDuckGoAppStoreReview.entitlements

CODE_SIGN_IDENTITY[sdk=macosx*] = 3rd Party Mac Developer Application
CODE_SIGN_IDENTITY[config=Debug][sdk=macosx*] = Apple Development
Expand Down
6 changes: 3 additions & 3 deletions DuckDuckGo.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -3013,7 +3013,6 @@
EE02D41A2BB4609900DBE6B3 /* UITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE02D4192BB4609900DBE6B3 /* UITests.swift */; };
EE02D41C2BB460A600DBE6B3 /* BrowsingHistoryTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE02D41B2BB460A600DBE6B3 /* BrowsingHistoryTests.swift */; };
EE02D4202BB460C000DBE6B3 /* BrowserServicesKit in Frameworks */ = {isa = PBXBuildFile; productRef = EE02D41F2BB460C000DBE6B3 /* BrowserServicesKit */; };
EE02D4212BB460FE00DBE6B3 /* StringExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA8EDF2624923EC70071C2E8 /* StringExtension.swift */; };
EE02D4222BB4611A00DBE6B3 /* TestsURLExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = B6EC37FB29B83E99001ACE79 /* TestsURLExtension.swift */; };
EE0429E02BA31D2F009EB20F /* FindInPageTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE0429DF2BA31D2F009EB20F /* FindInPageTests.swift */; };
EE098E772C8EDE2C009EBA7F /* AutofillCredentialsImportManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE098E762C8EDE2C009EBA7F /* AutofillCredentialsImportManager.swift */; };
Expand Down Expand Up @@ -3903,6 +3902,7 @@
4BA1A6F5258C4F9600F6F690 /* EncryptionMocks.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EncryptionMocks.swift; sourceTree = "<group>"; };
4BA1A6FD258C5C1300F6F690 /* EncryptedValueTransformerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EncryptedValueTransformerTests.swift; sourceTree = "<group>"; };
4BA71ED92B4B81E80002EBCE /* AppVersionExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppVersionExtension.swift; sourceTree = "<group>"; };
4BA808FF2CDE78F600338EE4 /* DuckDuckGoAppStoreReview.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DuckDuckGoAppStoreReview.entitlements; sourceTree = "<group>"; };
4BB6CE5E26B77ED000EC5860 /* Cryptography.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Cryptography.swift; sourceTree = "<group>"; };
4BB88B4425B7B55C006F6B06 /* DebugUserScript.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DebugUserScript.swift; sourceTree = "<group>"; };
4BB88B4925B7B690006F6B06 /* SequenceExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SequenceExtensions.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -7798,6 +7798,7 @@
37D9BBA329376EE8000B99F9 /* DuckDuckGoAppStore.entitlements */,
377E54382937B7C400780A0A /* DuckDuckGoAppStoreCI.entitlements */,
37E1116C2C578F1B00583C19 /* DuckDuckGoAppStoreDebug.entitlements */,
4BA808FF2CDE78F600338EE4 /* DuckDuckGoAppStoreReview.entitlements */,
4B5F15032A1570F10060320F /* DuckDuckGoDebug.entitlements */,
4B65143C26392483005B46EB /* Email */,
B68412192B6A16030092F66A /* ErrorPage */,
Expand Down Expand Up @@ -12639,7 +12640,6 @@
EE02D41A2BB4609900DBE6B3 /* UITests.swift in Sources */,
EE0429E02BA31D2F009EB20F /* FindInPageTests.swift in Sources */,
BBCD467A2C8643EC004DB483 /* XCUIApplicationExtension.swift in Sources */,
EE02D4212BB460FE00DBE6B3 /* StringExtension.swift in Sources */,
BBBB65402C77BB9400E69AC6 /* BookmarkSearchTests.swift in Sources */,
56A054532C2592CE007D8FAB /* OnboardingUITests.swift in Sources */,
EE9D81C32BC57A3700338BE3 /* StateRestorationTests.swift in Sources */,
Expand Down Expand Up @@ -15072,7 +15072,7 @@
repositoryURL = "https://github.com/duckduckgo/BrowserServicesKit";
requirement = {
kind = exactVersion;
version = 210.0.1;
version = 210.0.2;
};
};
9FF521422BAA8FF300B9819B /* XCRemoteSwiftPackageReference "lottie-spm" */ = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/duckduckgo/BrowserServicesKit",
"state" : {
"revision" : "183b9c111176fd7821cd17d01c01ddb38486c9ac",
"version" : "210.0.1"
"revision" : "07af4d672e003cc247e28a01b9fe3e77abaf49f9",
"version" : "210.0.2"
}
},
{
Expand All @@ -59,8 +59,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/duckduckgo/GRDB.swift.git",
"state" : {
"revision" : "4225b85c9a0c50544e413a1ea1e502c802b44b35",
"version" : "2.4.0"
"revision" : "5b2f6a81099d26ae0f9e38788f51490cd6a4b202",
"version" : "2.4.2"
}
},
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
buildImplicitDependencies = "NO">
</BuildAction>
<TestAction
buildConfiguration = "Review"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
buildImplicitDependencies = "NO">
</BuildAction>
<TestAction
buildConfiguration = "Review"
Expand Down
62 changes: 62 additions & 0 deletions DuckDuckGo/DuckDuckGoAppStoreReview.entitlements
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.developer.networking.networkextension</key>
<array>
<string>packet-tunnel-provider</string>
<string>app-proxy-provider</string>
</array>
<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.application-groups</key>
<array>
<string>$(IPC_APP_GROUP)</string>
<string>$(DBP_APP_GROUP)</string>
<string>$(NETP_APP_GROUP)</string>
<string>$(SUBSCRIPTION_APP_GROUP)</string>
<string>$(APP_CONFIGURATION_APP_GROUP)</string>
</array>
<key>com.apple.security.device.audio-input</key>
<true/>
<key>com.apple.security.device.camera</key>
<true/>
<key>com.apple.security.files.downloads.read-write</key>
<true/>
<key>com.apple.security.files.user-selected.read-write</key>
<true/>
<key>com.apple.security.network.client</key>
<true/>
<key>com.apple.security.personal-information.location</key>
<true/>
<key>com.apple.security.print</key>
<true/>
<key>com.apple.security.temporary-exception.files.home-relative-path.read-only</key>
<array>
<string>/Library/Application Support/Google/Chrome/</string>
<string>/Library/Application Support/BraveSoftware/Brave-Browser/</string>
<string>/Library/Application Support/Firefox/</string>
<string>/Library/Application Support/Microsoft Edge/</string>
<string>/Library/Application Support/Vivaldi/</string>
<string>/Library/Application Support/com.operasoftware.Opera/</string>
<string>/Library/Application Support/com.operasoftware.OperaGX/</string>
<string>/Library/Application Support/Yandex/YandexBrowser/</string>
<string>/Library/Application Support/Chromium/</string>
<string>/Library/Application Support/Coccoc/</string>
<string>/Library/Application Support/TorBrowser-Data/Browser/</string>
<string>/Library/Application Support/Arc/User Data/</string>
</array>
<key>com.apple.security.temporary-exception.mach-lookup.global-name</key>
<array>
<string>$(DBP_BACKGROUND_AGENT_BUNDLE_ID)</string>
<string>$(AGENT_BUNDLE_ID)</string>
</array>
<key>keychain-access-groups</key>
<array>
<string>$(DBP_APP_GROUP)</string>
<string>$(AppIdentifierPrefix)com.duckduckgo.mobile.ios</string>
<string>$(NETP_APP_GROUP)</string>
<string>$(SUBSCRIPTION_APP_GROUP)</string>
</array>
</dict>
</plist>
1 change: 0 additions & 1 deletion DuckDuckGo/Windows/View/WindowsManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,6 @@ final class WindowsManager {

if let droppingPoint {
mainWindowController.window?.setFrameOrigin(droppingPoint: droppingPoint)

} else if let sourceWindow = self.findPositioningSourceWindow(for: tabCollectionViewModel?.tabs.first) {
mainWindowController.window?.setFrameOrigin(cascadedFrom: sourceWindow)
}
Expand Down
Loading

0 comments on commit 0f8a33d

Please sign in to comment.