Как собрать документацию DocC из CLI
Итак, я уже некоторое время просматриваю Интернет и, похоже, не могу найти ответа о том, как создать собственную документацию DocC Xcode с помощью команды CLI .
Оба
xcodebuild
commands и Fastlane не предоставляют команды для сборки документации - насколько мне известно.
Документы должны быть созданы внутри рабочего процесса CI / CD Github Actions. Если есть другие методы для достижения этой цели, приветствуется любая помощь.
3 ответа
Apple добавила новую команду в
xcodebuild
инструменты:
xcodebuild docbuild
Вы также можете взглянуть на презентацию WWDC «Разместите и автоматизируйте свою документацию DocC». Начните просмотр с 7:06 мин и далее для автоматизации DocC: https://developer.apple.com/videos/play/wwdc2021/10236/
Размещайте и автоматизируйте документацию DocC ☁️
Тл;др
я подправил
xcodebuild docbuild
для модульных проектов, как показано ниже:
xcodebuild -project ModularSlothCreator.xcodeproj -derivedDataPath docsData -scheme ModularSlothCreator -destination 'platform=iOS Simulator,name=iPhone 13 Pro Max' -parallelizeTargets docbuild
я тоже доработал
docc
создание сайта с помощью
transform-for-static-hosting
флаг:
$(xcrun --find docc) process-archive transform-for-static-hosting "$ARCHIVE" --hosting-base-path ModularSlothCreator/$ARCHIVE_NAME --output-path docs/$ARCHIVE_NAME
БОНУС: автоматизируйте DocC с помощью GitHub Pages и CI
Я обновил исходную демонстрацию, представленную на WWDC, добавив поддержку статического хостинга модульных целевых приложений (вместо поддержки только одного пакета Swift, анонсированного на WWDC) с использованием GitHub Pages без необходимости определять конфигурацию сервера для удобства в своем .блоге
Чтобы дополнить первоначальный ответ, я хотел бы упомянуть это полное резюме всех видеороликов WWDC21, касающихся DocC, которые содержат ценную информацию об автоматизации.
Действительно, в Xcode 13 есть новая функция для создания документации через командную строку, которая включает действие docbuild со многими возможными параметрами, как описано ниже. Даже если @Colin уже предоставил решение, я счел важным добавить некоторую информацию, которая может иметь решающее значение для некоторых.