Improve Tuist project declaration (#5956) #11964
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Tuist | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
paths: | |
- .xcode-version | |
- Tuist/** | |
- Package.resolved | |
- Gemfile* | |
- Package.swift | |
- Project.swift | |
- Sources/** | |
- '!Sources/**/*.docc' | |
- Templates/** | |
- Tests/** | |
- fixtures/** | |
- .package.resolved | |
- .github/workflows/tuist.yml | |
concurrency: | |
group: tuist-${{ github.head_ref }} | |
cancel-in-progress: true | |
env: | |
TUIST_CONFIG_CLOUD_TOKEN: ${{ secrets.TUIST_CONFIG_CLOUD_TOKEN }} | |
jobs: | |
test: | |
name: Test with Xcode | |
runs-on: macos-13 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Select Xcode | |
run: sudo xcode-select -switch /Applications/Xcode_$(cat .xcode-version).app | |
- uses: jdx/mise-action@v2 | |
with: | |
experimental: true | |
- name: Select Xcode | |
run: sudo xcode-select -switch /Applications/Xcode_$(cat .xcode-version).app | |
- uses: actions/cache@v3 | |
name: 'Cache fetched dependencies folder' | |
with: | |
path: Tuist/Dependencies/SwiftPackageManager/.build | |
key: spm-v1-${{ hashFiles('Package.resolved') }} | |
restore-keys: spm-v1-${{ hashFiles('Package.resolved') }} | |
- name: Install dependencies | |
run: tuist install | |
- name: Test | |
run: tuist test TuistUnitTests --result-bundle-path /tmp/tuist/test | |
- uses: actions/upload-artifact@v4 | |
if: ${{ always() }} | |
with: | |
name: test-${{ matrix.feature }} | |
path: | | |
/tmp/tuist/** | |
cache-warm: | |
name: Cache warm with latest Tuist | |
runs-on: macos-13 | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: jdx/mise-action@v2 | |
with: | |
experimental: true | |
- name: Select Xcode | |
run: sudo xcode-select -switch /Applications/Xcode_$(cat .xcode-version).app | |
- uses: actions/cache@v3 | |
name: 'Cache fetched dependencies folder' | |
with: | |
path: Tuist/Dependencies/SwiftPackageManager/.build | |
key: spm-v1-${{ hashFiles('Package.resolved') }} | |
restore-keys: spm-v1-${{ hashFiles('Package.resolved') }} | |
- name: Install dependencies | |
run: tuist install | |
- name: Print hashes | |
run: tuist cache --print-hashes | |
- name: Cache warm | |
run: tuist cache | |
acceptance_tests: | |
name: Run ${{ matrix.feature }} | |
runs-on: macos-13 | |
env: | |
TUIST_CONFIG_CLOUD_TOKEN: ${{ secrets.TUIST_CONFIG_CLOUD_TOKEN }} | |
strategy: | |
matrix: | |
feature: | |
[ | |
'tuistAcceptanceTests', | |
'TuistAutomationAcceptanceTests', | |
'TuistDependenciesAcceptanceTests', | |
'TuistGeneratorAcceptanceTests' | |
] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: jdx/mise-action@v2 | |
with: | |
experimental: true | |
- name: Select Xcode | |
# Xcode accepts -skipMacroValidation | |
run: sudo xcode-select -switch /Applications/Xcode_$(cat .xcode-version).app | |
- name: Skip Xcode Macro Fingerprint Validation | |
run: defaults write com.apple.dt.Xcode IDESkipMacroFingerprintValidation -bool YES | |
- name: Skip Xcode Package Validation | |
run: defaults write com.apple.dt.Xcode IDESkipPackagePluginFingerprintValidatation -bool YES | |
- uses: actions/cache@v3 | |
name: 'Cache fetched dependencies folder' | |
with: | |
path: Tuist/Dependencies/SwiftPackageManager/.build | |
key: spm-v1-${{ hashFiles('Tuist/Package.resolved') }} | |
restore-keys: spm-v1-${{ hashFiles('Tuist/Package.resolved') }} | |
- name: Install dependencies | |
run: tuist install | |
- name: Run acceptance tests | |
run: tuist test --result-bundle-path /tmp/tuist/test-${{ matrix.feature }} ${{ matrix.feature }} | |
- uses: actions/upload-artifact@v4 | |
if: ${{ always() }} | |
with: | |
name: test-${{ matrix.feature }} | |
path: | | |
/tmp/tuist/** | |
lint: | |
name: Lint | |
runs-on: macos-13 | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: jdx/mise-action@v2 | |
with: | |
experimental: true | |
- name: Select Xcode | |
run: sudo xcode-select -switch /Applications/Xcode_$(cat .xcode-version).app | |
- name: Run | |
run: mise run lint |