From a427c910f7e2c6b0158e918d609af7f147bcee65 Mon Sep 17 00:00:00 2001 From: nig Date: Thu, 9 Jan 2025 14:56:30 +0100 Subject: [PATCH 1/2] wip3 --- .github/workflows/swift-test.yml | 79 +++++++++++++++++++++++++++++++- 1 file changed, 77 insertions(+), 2 deletions(-) diff --git a/.github/workflows/swift-test.yml b/.github/workflows/swift-test.yml index a292b6343126..7bb2855e19d0 100644 --- a/.github/workflows/swift-test.yml +++ b/.github/workflows/swift-test.yml @@ -65,6 +65,81 @@ jobs: rustc --version - name: Add rust target run: rustup target add aarch64-apple-ios-sim + - name: Restore Rust Caches + uses: Swatinem/rust-cache@v2 + with: + # The prefix cache key, this can be changed to start a new cache manually. + # default: "v0-rust" + # prefix-key: "" + + # A cache key that is used instead of the automatic `job`-based key, + # and is stable over multiple jobs. + # default: empty + shared-key: "rust" + + # An additional cache key that is added alongside the automatic `job`-based + # cache key and can be used to further differentiate jobs. + # default: empty + # key: "" + + # A whitespace separated list of env-var *prefixes* who's value contributes + # to the environment cache key. + # The env-vars are matched by *prefix*, so the default `RUST` var will + # match all of `RUSTC`, `RUSTUP_*`, `RUSTFLAGS`, `RUSTDOC_*`, etc. + # default: "CARGO CC CFLAGS CXX CMAKE RUST" + # env-vars: "" + + # The cargo workspaces and target directory configuration. + # These entries are separated by newlines and have the form + # `$workspace -> $target`. The `$target` part is treated as a directory + # relative to the `$workspace` and defaults to "target" if not explicitly given. + # default: ". -> target" + workspaces: " + ./tuta-sdk/rust/ -> target + ./packages/node-mimimi/ -> target + " + + # Additional non workspace directories to be cached, separated by newlines. + # cache-directories: "" + + # Determines whether workspace `target` directories are cached. + # If `false`, only the cargo registry will be cached. + # default: "true" + # cache-targets: "" + + # Determines if the cache should be saved even when the workflow has failed. + # default: "false" + # cache-on-failure: "" + + # Determines which crates are cached. + # If `true` all crates will be cached, otherwise only dependent crates will be cached. + # Useful if additional crates are used for CI tooling. + # default: "false" + # cache-all-crates: "" + + # Determines whether the cache should be saved. + # If `false`, the cache is only restored. + # Useful for jobs where the matrix is additive e.g. additional Cargo features, + # or when only runs from `master` should be saved to the cache. + # default: "true" + # save-if: "" + # To only cache runs from `master`: + # save-if: ${{ github.ref == 'refs/heads/master' }} + + # Determines whether the cache should be restored. + # If `true` the cache key will be checked and the `cache-hit` output will be set + # but the cache itself won't be restored + # default: "false" + # lookup-only: "" + + # Specifies what to use as the backend providing cache + # Can be set to either "github" or "buildjet" + # default: "github" + # cache-provider: "" + + # Determines whether to cache the ~/.cargo/bin directory. + # default: "true" + # cache-bin: "" - name: Lint working-directory: ./app-ios run: ./lint.sh lint:check @@ -76,14 +151,14 @@ jobs: run: xcodegen - name: Test Calendar working-directory: app-ios - if: ${{ steps.filter.outputs.calendar == 'true' }} + #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 + #if: ${{ steps.filter.outputs.calendar == 'false' || steps.filter.outputs.mail == 'true' }} # Runs mail test also as fallback test run: | mkdir -p ../build xcodegen --spec mail-project.yml From cb02501183575bce2e69c263f480d5df95e2b22c Mon Sep 17 00:00:00 2001 From: nig Date: Thu, 9 Jan 2025 18:37:38 +0100 Subject: [PATCH 2/2] wip4 --- .github/shared/swift-common/action.yml | 39 +++++ .github/workflows/swift-calendar-test.yml | 57 ++++++++ .github/workflows/swift-mail-test.yml | 59 ++++++++ .github/workflows/swift-test.yml | 166 ---------------------- 4 files changed, 155 insertions(+), 166 deletions(-) create mode 100644 .github/shared/swift-common/action.yml create mode 100644 .github/workflows/swift-calendar-test.yml create mode 100644 .github/workflows/swift-mail-test.yml delete mode 100644 .github/workflows/swift-test.yml 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..44c8eead03d6 --- /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-mail-test.yml b/.github/workflows/swift-mail-test.yml new file mode 100644 index 000000000000..942e1404c0ca --- /dev/null +++ b/.github/workflows/swift-mail-test.yml @@ -0,0 +1,59 @@ +name: Swift CI - Mail + +on: + pull_request: + types: [ opened, synchronize, edited ] + paths: + - 'app-ios/**' + - '.github/workflows/swift-mail-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: | + mail: + - 'app-ios/tutanota/**' + calendar: + - 'app-ios/calendar/**' + - 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 + run: | + mkdir -p ../build + xcodegen --spec mail-project.yml + fastlane test_github + diff --git a/.github/workflows/swift-test.yml b/.github/workflows/swift-test.yml deleted file mode 100644 index 7bb2855e19d0..000000000000 --- a/.github/workflows/swift-test.yml +++ /dev/null @@ -1,166 +0,0 @@ -name: Swift CI - -on: - pull_request: - types: [ opened, synchronize, edited ] - paths: - - 'app-ios/**' - - '.github/workflows/swift-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' - - 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: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 #3.0.2 - id: filter - with: - filters: | - mail: - - '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: Restore Rust Caches - uses: Swatinem/rust-cache@v2 - with: - # The prefix cache key, this can be changed to start a new cache manually. - # default: "v0-rust" - # prefix-key: "" - - # A cache key that is used instead of the automatic `job`-based key, - # and is stable over multiple jobs. - # default: empty - shared-key: "rust" - - # An additional cache key that is added alongside the automatic `job`-based - # cache key and can be used to further differentiate jobs. - # default: empty - # key: "" - - # A whitespace separated list of env-var *prefixes* who's value contributes - # to the environment cache key. - # The env-vars are matched by *prefix*, so the default `RUST` var will - # match all of `RUSTC`, `RUSTUP_*`, `RUSTFLAGS`, `RUSTDOC_*`, etc. - # default: "CARGO CC CFLAGS CXX CMAKE RUST" - # env-vars: "" - - # The cargo workspaces and target directory configuration. - # These entries are separated by newlines and have the form - # `$workspace -> $target`. The `$target` part is treated as a directory - # relative to the `$workspace` and defaults to "target" if not explicitly given. - # default: ". -> target" - workspaces: " - ./tuta-sdk/rust/ -> target - ./packages/node-mimimi/ -> target - " - - # Additional non workspace directories to be cached, separated by newlines. - # cache-directories: "" - - # Determines whether workspace `target` directories are cached. - # If `false`, only the cargo registry will be cached. - # default: "true" - # cache-targets: "" - - # Determines if the cache should be saved even when the workflow has failed. - # default: "false" - # cache-on-failure: "" - - # Determines which crates are cached. - # If `true` all crates will be cached, otherwise only dependent crates will be cached. - # Useful if additional crates are used for CI tooling. - # default: "false" - # cache-all-crates: "" - - # Determines whether the cache should be saved. - # If `false`, the cache is only restored. - # Useful for jobs where the matrix is additive e.g. additional Cargo features, - # or when only runs from `master` should be saved to the cache. - # default: "true" - # save-if: "" - # To only cache runs from `master`: - # save-if: ${{ github.ref == 'refs/heads/master' }} - - # Determines whether the cache should be restored. - # If `true` the cache key will be checked and the `cache-hit` output will be set - # but the cache itself won't be restored - # default: "false" - # lookup-only: "" - - # Specifies what to use as the backend providing cache - # Can be set to either "github" or "buildjet" - # default: "github" - # cache-provider: "" - - # Determines whether to cache the ~/.cargo/bin directory. - # default: "true" - # cache-bin: "" - - 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 - run: | - mkdir -p ../build - xcodegen --spec mail-project.yml - fastlane test_github -