Skip to content

wip

wip #1525

Workflow file for this run

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