Skip to content

Перевод 🌍

Вы можете перевести или улучшить перевод этой страницы.

Внести вклад

Непрерывная интеграция (CI)

Чтобы использовать реестр в CI, необходимо убедиться, что вы вошли в реестр, выполнив команду tuist registry login в рамках рабочего процесса.

ONLY XCODE INTEGRATION

Создание новой предварительно разблокированной связки ключей требуется только в том случае, если вы используете интеграцию пакетов в Xcode.

Поскольку учетные данные реестра хранятся в связке ключей, необходимо убедиться, что к этой связке можно получить доступ в среде CI. Обратите внимание, что некоторые CI-провайдеры или инструменты автоматизации, например Fastlane, уже создают временную связку ключей или предоставляют встроенный способ ее создания. Однако вы также можете создать его, создав пользовательский шаг со следующим кодом:

bash
TMP_DIRECTORY=$(mktemp -d)
KEYCHAIN_PATH=$TMP_DIRECTORY/keychain.keychain
KEYCHAIN_PASSWORD=$(uuidgen)
security create-keychain -p $KEYCHAIN_PASSWORD $KEYCHAIN_PATH
security set-keychain-settings -lut 21600 $KEYCHAIN_PATH
security default-keychain -s $KEYCHAIN_PATH
security unlock-keychain -p $KEYCHAIN_PASSWORD $KEYCHAIN_PATH

tuist registry login сохранит учетные данные в связке ключей по умолчанию. Убедитесь, что связка ключей по умолчанию создана и разблокирована перед запуском tuist registry login.

Кроме того, необходимо убедиться, что переменная окружения TUIST_CONFIG_TOKEN установлена. Вы можете создать ее, следуя документации

здесь.

Пример рабочего процесса для GitHub Actions может выглядеть следующим образом:

yaml
name: Build

jobs:
  build:
    steps:
      - # Your set up steps...
      - name: Create keychain
        run: |
        TMP_DIRECTORY=$(mktemp -d)
        KEYCHAIN_PATH=$TMP_DIRECTORY/keychain.keychain
        KEYCHAIN_PASSWORD=$(uuidgen)
        security create-keychain -p $KEYCHAIN_PASSWORD $KEYCHAIN_PATH
        security set-keychain-settings -lut 21600 $KEYCHAIN_PATH
        security default-keychain -s $KEYCHAIN_PATH
        security unlock-keychain -p $KEYCHAIN_PASSWORD $KEYCHAIN_PATH
      - name: Log in to the Tuist Registry
        env:
          TUIST_CONFIG_TOKEN: ${{ secrets.TUIST_CONFIG_TOKEN }}
        run: tuist registry login
      - # Your build steps

Инкрементное разрешение в разных средах

Чистое/холодное восстановление происходит немного быстрее с нашим реестром, и вы можете получить еще большее улучшение, если будете сохранять разрешенные зависимости во всех сборках CI. Обратите внимание, что благодаря реестру размер директории, которую нужно хранить и восстанавливать, намного меньше, чем без реестра, что занимает значительно меньше времени. Чтобы кэшировать зависимости при использовании интеграции пакетов Xcode по умолчанию, лучше всего указать пользовательский clonedSourcePackagesDirPath при разрешении зависимостей через xcodebuild. Это можно сделать, добавив следующее в ваш файл Config.swift:

swift
import ProjectDescription

let config = Config(
    generationOptions: .options(
        additionalPackageResolutionArguments: ["-clonedSourcePackagesDirPath", ".build"]
    )
)

Кроме того, вам нужно найти путь к файлу Package.resolved. Вы можете найти путь, выполнив команду ls **/Package.resolved. Путь должен выглядеть примерно так App.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved.

Для пакетов Swift и интеграции на основе XcodeProj мы можем использовать каталог по умолчанию .build, расположенный либо в корне проекта, либо в каталоге Tuist. Убедитесь в правильности пути при настройке конвейера.

Вот пример рабочего процесса для GitHub Actions для разрешения и кэширования зависимостей при использовании стандартной интеграции пакетов в Xcode:

yaml
- name: Restore cache
  id: cache-restore
  uses: actions/cache/restore@v4
  with:
    path: .build
    key: ${{ runner.os }}-${{ hashFiles('App.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved') }}
- name: Resolve dependencies
  if: steps.cache-restore.outputs.cache-hit != 'true'
  run: xcodebuild -resolvePackageDependencies -clonedSourcePackagesDirPath .build
- name: Save cache
  id: cache-save
  uses: actions/cache/save@v4
  with:
    path: .build
    key: ${{ steps.cache-restore.outputs.cache-primary-key }}

Released under the MIT License.