持续集成 (CI)
持续集成 (CI) {#continuous-integration-ci}
Section titled “持续集成 (CI) {#continuous-integration-ci}”要在你的持续集成工作流中运行 Tuist 命令,需要在 CI 环境中安装它。
认证是可选的,但如果你想使用服务器端功能(如
以下部分提供了在不同 CI 平台上执行此操作的示例。
示例 {#examples}
Section titled “示例 {#examples}”GitHub Actions {#github-actions}
Section titled “GitHub Actions {#github-actions}”在 GitHub Actions 上,你可以使用
::: code-group
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 cache:::
::: info OIDC 设置
在使用 OIDC 认证之前,你需要将 permissions: id-token: write 是使 OIDC 工作的必要条件。或者,你可以使用带有 TUIST_TOKEN 密钥的
:::
::: tip
我们建议在 Tuist 项目中使用 mise use --pin 来跨环境固定 Tuist 版本。该命令会创建一个 .tool-versions 文件,其中包含 Tuist 的版本。
:::
Xcode Cloud {#xcode-cloud}
Section titled “Xcode Cloud {#xcode-cloud}”在 Xcode Cloud 中,它使用 Xcode 项目作为源数据,你需要添加一个克隆后脚本来安装 Tuist 并运行你需要的命令,例如 tuist generate:
::: code-group
#!/bin/sh
# Mise installation taken from https://mise.jdx.dev/continuous-integration.html#xcode-cloudcurl https://mise.run | sh # 安装 Miseexport PATH="$HOME/.local/bin:$PATH"
mise install # 从 .mise.toml 安装版本
# 运行 .mise.toml 文件中指定的 Tuist 版本 {#runs-the-version-of-tuist-indicated-in-the-misetoml-file}mise exec -- tuist install --path ../ # `--path` 是必需的,因为这是从 `ci_scripts` 目录中运行的mise exec -- tuist generate -p ../ --no-open # `-p` 是必需的,因为这是从 `ci_scripts` 目录中运行的#!/bin/sh
tuist generate:::
::: info 认证
使用TUIST_TOKEN 环境变量。
:::
CircleCI {#circleci}
Section titled “CircleCI {#circleci}”在 CircleCI 上,你可以使用
::: code-group
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 cache:::
::: info 认证
在使用 OIDC 认证之前,你需要将 TUIST_TOKEN 环境变量的
:::
Bitrise {#bitrise}
Section titled “Bitrise {#bitrise}”在 Bitrise 上,你可以使用
::: code-group
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 cache:::
::: info 认证
在使用 OIDC 认证之前,你需要将 TUIST_TOKEN 环境变量的
:::
Codemagic {#codemagic}
Section titled “Codemagic {#codemagic}”在 Codemagic 中,你可以向工作流添加一个额外的步骤来安装 Tuist:
::: code-group
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 # 从 .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:::
::: info 认证
创建TUIST_TOKEN 的秘密环境变量。
:::