Continuous Integration (CI)
Continuous Integration (CI)
Section titled “Continuous Integration (CI)”To run Tuist commands in your continuous integration workflows, you’ll need to install it in your CI environment.
Authentication is optional but required if you want to use server-side features like
The following sections provide examples of how to do this on different CI platforms.
Examples
Section titled “Examples”GitHub Actions
Section titled “GitHub Actions”On GitHub Actions you can use
name: Build Applicationon: pull_request: branches: - main push: branches: - main
permissions: id-token: write contents: read
jobs: build: runs-on: macos-latest steps: - uses: actions/checkout@v4 - uses: jdx/mise-action@v2 - run: tuist auth login - run: tuist setup cachename: Build Applicationon: pull_request: branches: - main push: branches: - main
permissions: id-token: write contents: read
jobs: build: runs-on: macos-latest steps: - uses: actions/checkout@v4 - run: tuist auth login - run: tuist setup cachename: Build Applicationon: pull_request: branches: - main push: branches: - main
env: TUIST_TOKEN: ${{ secrets.TUIST_TOKEN }}
jobs: build: runs-on: macos-latest steps: - uses: actions/checkout@v4 - uses: jdx/mise-action@v2 - run: tuist setup cachename: Build Applicationon: pull_request: branches: - main push: branches: - main
env: TUIST_TOKEN: ${{ secrets.TUIST_TOKEN }}
jobs: build: runs-on: macos-latest steps: - uses: actions/checkout@v4 - run: tuist setup cacheXcode Cloud
Section titled “Xcode Cloud”In Xcode Cloud, which uses Xcode projects as the source of truth, you’ll need to add a post-clone script to install Tuist and run the commands you need, for example tuist generate:
#!/bin/sh
# Mise installation taken from https://mise.jdx.dev/continuous-integration.html#xcode-cloudcurl https://mise.run | sh # Install Miseexport PATH="$HOME/.local/bin:$PATH"
mise install # Installs the version from .mise.toml
# Runs the version of Tuist indicated in the .mise.toml filemise exec -- tuist install --path ../ # `--path` needed as this is run from within the `ci_scripts` directorymise exec -- tuist generate -p ../ --no-open # `-p` needed as this is run from within the `ci_scripts` directory#!/bin/sh
tuist generateCircleCI
Section titled “CircleCI”On CircleCI you can use
version: 2.1jobs: build: macos: xcode: "15.0.1" steps: - checkout - run: name: Install Mise command: | curl https://mise.jdx.dev/install.sh | sh echo 'export PATH="$HOME/.local/bin:$PATH"' >> $BASH_ENV - run: name: Install Tuist command: mise install - run: name: Authenticate command: mise exec -- tuist auth login - run: name: Build command: mise exec -- tuist setup cacheversion: 2.1jobs: build: macos: xcode: "15.0.1" environment: TUIST_TOKEN: $TUIST_TOKEN steps: - checkout - run: name: Install Mise command: | curl https://mise.jdx.dev/install.sh | sh echo 'export PATH="$HOME/.local/bin:$PATH"' >> $BASH_ENV - run: name: Install Tuist command: mise install - run: name: Build command: mise exec -- tuist setup cacheBitrise
Section titled “Bitrise”On Bitrise you can use
workflows: build: steps: - git-clone@8: {} - script@1: title: Install Mise inputs: - content: | curl https://mise.jdx.dev/install.sh | sh echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc - script@1: title: Install Tuist inputs: - content: mise install - get-identity-token@0: inputs: - audience: tuist - script@1: title: Authenticate inputs: - content: mise exec -- tuist auth login - script@1: title: Build inputs: - content: mise exec -- tuist setup cacheworkflows: build: steps: - git-clone@8: {} - script@1: title: Install Mise inputs: - content: | curl https://mise.jdx.dev/install.sh | sh echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc - script@1: title: Install Tuist inputs: - content: mise install - script@1: title: Build inputs: - content: mise exec -- tuist setup cacheCodemagic
Section titled “Codemagic”In Codemagic, you can add an additional step to your workflow to install Tuist:
workflows: build: name: Build max_build_duration: 30 environment: xcode: 15.0.1 vars: TUIST_TOKEN: ${{ secrets.TUIST_TOKEN }} scripts: - name: Install Mise script: | curl https://mise.jdx.dev/install.sh | sh mise install # Installs the version from .mise.toml - name: Build script: mise exec -- tuist setup cacheworkflows: build: name: Build max_build_duration: 30 environment: xcode: 15.0.1 vars: TUIST_TOKEN: ${{ secrets.TUIST_TOKEN }} scripts: - name: Install Tuist script: | brew install --formula [email protected] - name: Build script: tuist setup cache