跳转到内容

持续集成 (CI)

持续集成 (CI) {#continuous-integration-ci}

Section titled “持续集成 (CI) {#continuous-integration-ci}”

要在你的持续集成工作流中运行 Tuist 命令,需要在 CI 环境中安装它。

认证是可选的,但如果你想使用服务器端功能(如缓存),则需要认证。

以下部分提供了在不同 CI 平台上执行此操作的示例。

GitHub Actions 上,你可以使用 OIDC 认证 进行安全的无密钥认证:

::: code-group

name: Build Application
on:
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 cache
name: Build Application
on:
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: brew install --formula [email protected]
- run: tuist auth login
- run: tuist setup cache
name: Build Application
on:
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 cache
name: Build Application
on:
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: brew install --formula [email protected]
- run: tuist setup cache

:::

::: info OIDC 设置

在使用 OIDC 认证之前,你需要将 GitHub 仓库连接到你的 Tuist 项目。permissions: id-token: write 是使 OIDC 工作的必要条件。或者,你可以使用带有 TUIST_TOKEN 密钥的账户令牌

:::

::: tip

我们建议在 Tuist 项目中使用 mise use --pin 来跨环境固定 Tuist 版本。该命令会创建一个 .tool-versions 文件,其中包含 Tuist 的版本。

:::

Xcode Cloud 中,它使用 Xcode 项目作为源数据,你需要添加一个克隆后脚本来安装 Tuist 并运行你需要的命令,例如 tuist generate

::: code-group

#!/bin/sh
# Mise installation taken from https://mise.jdx.dev/continuous-integration.html#xcode-cloud
curl https://mise.run | sh # 安装 Mise
export 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
brew install --formula [email protected]
tuist generate

:::

::: info 认证

使用账户令牌,在 Xcode Cloud 工作流设置中设置 TUIST_TOKEN 环境变量。

:::

CircleCI 上,你可以使用 OIDC 认证 进行安全的无密钥认证:

::: code-group

version: 2.1
jobs:
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 cache
version: 2.1
jobs:
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 认证之前,你需要将 GitHub 仓库连接到你的 Tuist 项目。CircleCI OIDC 令牌包含你连接的 GitHub 仓库,Tuist 使用它来授权访问你的项目。或者,你可以使用带有 TUIST_TOKEN 环境变量的账户令牌

:::

Bitrise 上,你可以使用 OIDC 认证 进行安全的无密钥认证:

::: 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 cache
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
- script@1:
title: Build
inputs:
- content: mise exec -- tuist setup cache

:::

::: info 认证

在使用 OIDC 认证之前,你需要将 GitHub 仓库连接到你的 Tuist 项目。Bitrise OIDC 令牌包含你连接的 GitHub 仓库,Tuist 使用它来授权访问你的项目。或者,你可以使用带有 TUIST_TOKEN 环境变量的账户令牌

:::

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 cache
workflows:
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 的秘密环境变量。

:::