diff --git a/.github/workflows/ci-tuist-build-github_hosted.yml b/.github/workflows/ci-tuist-build-github_hosted.yml new file mode 100644 index 000000000..d7c7345ab --- /dev/null +++ b/.github/workflows/ci-tuist-build-github_hosted.yml @@ -0,0 +1,141 @@ +# Leka - iOS Monorepo +# Copyright APF France handicap +# SPDX-License-Identifier: Apache-2.0 + +name: Tuist - Build (GitHub Hosted) + +on: + push: + branches: + - develop + paths: + - "**/*.swift" + - ".mise.toml" + pull_request: + types: [opened, synchronize, reopened] + paths: + - "**/*.swift" + - ".mise.toml" + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +env: + TUIST_TURN_OFF_LINTERS: TRUE + TUIST_GENERATE_EXAMPLE_TARGETS: TRUE + TUIST_GENERATE_MODULES_AS_FRAMEWORKS_FOR_DEBUG: FALSE + +jobs: + build: + name: build + runs-on: macos-latest + strategy: + fail-fast: false + matrix: + TUIST_DEVELOPER_MODE: [TRUE, FALSE] + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + lfs: true + + - name: Setup mise + uses: jdx/mise-action@v2 + with: + version: 2024.12.4 + install: true + cache: true + + - name: tuist version + run: | + which tuist + tuist version + + - name: Cache Xcode derived data + uses: irgaly/xcode-cache@v1 + with: + key: xcode-cache-tuist_build_github_hosted-DEVELOPER_MODE_${{ matrix.TUIST_DEVELOPER_MODE }}-${{ github.sha }} + restore-keys: | + xcode-cache-tuist_build_github_hosted-DEVELOPER_MODE_${{ matrix.TUIST_DEVELOPER_MODE }}- + xcode-cache-tuist_build_github_hosted- + xcode-cache- + delete-used-deriveddata-cache: true + swiftpm-package-resolved-file: Tuist/Package.resolved + use-default-mtime-targets: true + restore-mtime-targets: | + **/*.bin + **/*.gif + **/*.jpeg + **/*.jpg + **/*.mid + **/*.mp3 + **/*.pdf + **/*.png + **/*.svg + **/*.wav + **/*.json + **/*.xcstrings + **/*.mp4 + **/*.yml + + - name: Cache SPM data + uses: actions/cache@v4 + with: + path: | + ~/Library/Caches/org.swift.swiftpm + ~/Library/org.swift.swiftpm + key: spm-cache-tuist_build_github_hosted-DEVELOPER_MODE_${{ matrix.TUIST_DEVELOPER_MODE }}-${{ github.sha }} + restore-keys: | + spm-cache-tuist_build_github_hosted-DEVELOPER_MODE_${{ matrix.TUIST_DEVELOPER_MODE }}- + spm-cache-tuist_build_github_hosted- + spm-cache- + + - name: Cache tuist data + uses: actions/cache@v4 + with: + path: | + Tuist/.build/artifacts + Tuist/.build/checkouts + Tuist/.build/derived + Tuist/.build/workspace-state.json + key: spm-cache-tuist_build_github_hosted-DEVELOPER_MODE_${{ matrix.TUIST_DEVELOPER_MODE }}-${{ github.sha }} + restore-keys: | + spm-cache-tuist_build_github_hosted-DEVELOPER_MODE_${{ matrix.TUIST_DEVELOPER_MODE }}- + spm-cache-tuist_build_github_hosted- + spm-cache- + + - name: restore files' mtime + uses: chetan/git-restore-mtime-action@v2 + + - name: Config Xcode + run: | + xcodes select 16.1 + defaults write com.apple.dt.XCBuild IgnoreFileSystemDeviceInodeChanges -bool YES + + - name: tuist install + run: | + TUIST_TURN_OFF_LINTERS=${{ env.TUIST_TURN_OFF_LINTERS }} \ + TUIST_GENERATE_EXAMPLE_TARGETS=${{ env.TUIST_GENERATE_EXAMPLE_TARGETS }} \ + TUIST_GENERATE_MODULES_AS_FRAMEWORKS_FOR_DEBUG=${{ env.TUIST_GENERATE_MODULES_AS_FRAMEWORKS_FOR_DEBUG }} \ + TUIST_DEVELOPER_MODE=${{ matrix.TUIST_DEVELOPER_MODE }} \ + tuist install + + - name: tuist generate + run: | + TUIST_TURN_OFF_LINTERS=${{ env.TUIST_TURN_OFF_LINTERS }} \ + TUIST_GENERATE_EXAMPLE_TARGETS=${{ env.TUIST_GENERATE_EXAMPLE_TARGETS }} \ + TUIST_GENERATE_MODULES_AS_FRAMEWORKS_FOR_DEBUG=${{ env.TUIST_GENERATE_MODULES_AS_FRAMEWORKS_FOR_DEBUG }} \ + TUIST_DEVELOPER_MODE=${{ matrix.TUIST_DEVELOPER_MODE }} \ + tuist generate --no-open + + - name: tuist build + run: | + + TUIST_TURN_OFF_LINTERS=${{ env.TUIST_TURN_OFF_LINTERS }} \ + TUIST_GENERATE_EXAMPLE_TARGETS=${{ env.TUIST_GENERATE_EXAMPLE_TARGETS }} \ + TUIST_GENERATE_MODULES_AS_FRAMEWORKS_FOR_DEBUG=${{ env.TUIST_GENERATE_MODULES_AS_FRAMEWORKS_FOR_DEBUG }} \ + TUIST_DEVELOPER_MODE=${{ matrix.TUIST_DEVELOPER_MODE }} \ + tuist build