Я использую SPM
в своем проекте и пытаюсь интегрировать Apple/swift-openapi-generator. Мой проект разделен на несколько модулей, для чего я использую SPM
. Для управления зависимостями у меня есть файл Package.swift
:
// swift-tools-version:5.8
import Foundation
import PackageDescription
let openAPIRuntime = Target.Dependency.product(name: "OpenAPIRuntime", package: "swift-openapi-runtime")
let openAPIURLSession = Target.Dependency.product(name: "OpenAPIURLSession", package: "swift-openapi-urlsession")
let openAPIGenerator = Target.PluginUsage.plugin(name: "OpenAPIGenerator", package: "swift-openapi-generator")
let targets: [Target] = [
.target(
name: "OpenAPIClient",
dependencies: [openAPIRuntime, openAPIURLSession],
plugins: [openAPIGenerator]
),
//...
]
let package = Package(
name: "Modules",
platforms: [.iOS("16.0"), .macOS(.v11)],
products: targets.filter { !$0.isTest }.map { .library(name: $0.name, targets: [$0.name]) },
dependencies: [
.package(url: "https://github.com/apple/swift-openapi-generator", from: "0.1.0"),
.package(url: "https://github.com/apple/swift-openapi-runtime", from: "1.0.0"),
.package(url: "https://github.com/apple/swift-openapi-urlsession", from: "1.0.0"),
//...
],
targets: targets
)
Как показано, я добавил в этот файл продукты openAPIRuntime
и openAPIURLSession
, а также плагин openAPIGenerator
. В результате я могу успешно собрать проект локально.
Однако облако Xcode выходит из строя со следующим сообщением об ошибке:
«OpenAPIGenerator» отключен.
Как исправить эту проблему?
Обходной путь — добавить в проект файл с именем ci_scripts/ci_post_clone.sh
со следующим содержимым:
#!/usr/bin/env bash
set -euo pipefail
defaults write com.apple.dt.Xcode IDESkipPackagePluginFingerprintValidatation -bool YES
Проверьте здесь, чтобы получить дополнительную информацию о пользовательских сценариях сборки.
Плагины инструментов сборки требуют, чтобы вы им доверяли перед первым использованием. Когда вы впервые создадите свой проект с помощью плагина в Xcode, вам будет представлено диалоговое окно с просьбой довериться и включить плагин. Поскольку Xcode Cloud не может показать вам какое-либо диалоговое окно, вы просто пропускаете проверку плагинов с помощью этого скрипта.
Что на самом деле делает этот скрипт?