diff --git a/.github/shared/swift-common/action.yml b/.github/shared/swift-common/action.yml new file mode 100644 index 000000000000..143b4d4315df --- /dev/null +++ b/.github/shared/swift-common/action.yml @@ -0,0 +1,39 @@ +name: "Swift Common" +description: "Common Swift Checks" + +runs: + using: "composite" + + steps: + - name: Setup Swift + uses: swift-actions/setup-swift@cdbe0f7f4c77929b6580e71983e8606e55ffe7e4 # v1.26.2 + with: + swift-version: ${{ env.swift-version }} + - name: Install Homebrew + uses: Homebrew/actions/setup-homebrew@d54a6744d5fcdff54b45a9659f3e17f769389952 + - name: Install Homebrew dependencies + shell: bash + run: | + brew install swiftlint swift-format xcodegen + brew upgrade rustup + - name: Versions + shell: bash + run: | + rustup --version + cargo --version + rustc --version + - name: Add rust target + shell: bash + run: rustup target add aarch64-apple-ios-sim + - name: Lint + working-directory: ./app-ios + shell: bash + run: ./lint.sh lint:check + - name: Format + working-directory: ./app-ios + shell: bash + run: ./lint.sh style:check + - name: Xcodegen sdk + working-directory: tuta-sdk/ios + shell: bash + run: xcodegen \ No newline at end of file diff --git a/.github/workflows/swift-calendar-test.yml b/.github/workflows/swift-calendar-test.yml new file mode 100644 index 000000000000..f01586f81a97 --- /dev/null +++ b/.github/workflows/swift-calendar-test.yml @@ -0,0 +1,57 @@ +name: Swift CI - Calendar + +on: + pull_request: + types: [ opened, synchronize, edited ] + paths: + - 'app-ios/**' + - '.github/workflows/swift-calendar-test.yml' + push: + branches: + - dev-* + - '*/dev' + paths: + - 'app-ios/**' + +env: + swift-version: "5.9.2" + swift-format-version: "509.0.0" + +jobs: + test-swift: + runs-on: macos-14 + + permissions: + actions: none + checks: none + contents: read + deployments: none + id-token: none + issues: none + discussions: none + packages: none + pages: none + pull-requests: none + repository-projects: none + security-events: none + statuses: none + + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 #v4.1.1 + with: + submodules: 'true' + - uses: ./.github/shared/swift-common + - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 #3.0.2 + id: filter + with: + filters: | + calendar: + - 'app-ios/calendar/**' + - name: Test Calendar + working-directory: app-ios + if: ${{ steps.filter.outputs.calendar == 'true' }} + run: | + mkdir -p ../build-calendar-app + xcodegen --spec calendar-project.yml + fastlane test_calendar_github + diff --git a/.github/workflows/swift-test.yml b/.github/workflows/swift-mail-test.yml similarity index 51% rename from .github/workflows/swift-test.yml rename to .github/workflows/swift-mail-test.yml index a292b6343126..54afb06f5db6 100644 --- a/.github/workflows/swift-test.yml +++ b/.github/workflows/swift-mail-test.yml @@ -1,11 +1,11 @@ -name: Swift CI +name: Swift CI - Mail on: pull_request: types: [ opened, synchronize, edited ] paths: - 'app-ios/**' - - '.github/workflows/swift-test.yml' + - '.github/workflows/swift-mail-test.yml' push: branches: - dev-* @@ -40,16 +40,7 @@ jobs: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 #v4.1.1 with: submodules: 'true' - - name: Setup Swift - uses: swift-actions/setup-swift@cdbe0f7f4c77929b6580e71983e8606e55ffe7e4 # v1.26.2 - with: - swift-version: ${{ env.swift-version }} - - name: Install Homebrew - uses: Homebrew/actions/setup-homebrew@d54a6744d5fcdff54b45a9659f3e17f769389952 - - name: Install Homebrew dependencies - run: | - brew install swiftlint swift-format xcodegen - brew upgrade rustup + - uses: ./.github/shared/swift-common - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 #3.0.2 id: filter with: @@ -58,29 +49,6 @@ jobs: - 'app-ios/tutanota/**' calendar: - 'app-ios/calendar/**' - - name: Versions - run: | - rustup --version - cargo --version - rustc --version - - name: Add rust target - run: rustup target add aarch64-apple-ios-sim - - name: Lint - working-directory: ./app-ios - run: ./lint.sh lint:check - - name: Format - working-directory: ./app-ios - run: ./lint.sh style:check - - name: Xcodegen sdk - working-directory: tuta-sdk/ios - run: xcodegen - - name: Test Calendar - working-directory: app-ios - if: ${{ steps.filter.outputs.calendar == 'true' }} - run: | - mkdir -p ../build-calendar-app - xcodegen --spec calendar-project.yml - fastlane test_calendar_github - name: Test Mail working-directory: app-ios if: ${{ steps.filter.outputs.calendar == 'false' || steps.filter.outputs.mail == 'true' }} # Runs mail test also as fallback test