Система сборки
Рекомендуемый способ сборки серверных приложений — использование Swift Package Manager. SwiftPM предоставляет кроссплатформенную основу для создания кода Swift и хорошо подходит для одного кода, который можно редактировать и запускать на многих платформах Swift.
Сборка
SwiftPM работает из командной строки и интегрирована в Xcode.
Вы можете собрать свой код, выполнив swift build из терминала или вызвав действие сборки в Xcode.
Использование Docker
Swift-бинарные файлы зависят от архитектуры, поэтому выполнение команды сборки на macOS создаст бинарный файл для macOS, а аналогичная команда на Linux — бинарный файл для Linux.
Многие разработчики Swift используют macOS для разработки, что позволяет использовать отличные инструменты, которые поставляются с Xcode. Однако большинство серверных приложений предназначены для работы в Linux.
Если вы разрабатываете на macOS, Docker — полезный инструмент для сборки на Linux и создания бинарных файлов для Linux. Apple публикует официальные Swift Docker-образы на Docker Hub.
Например, чтобы собрать ваше приложение, используя последний Swift Docker-образ:
$ docker run -v "$PWD:/code" -w /code swift:latest swift build
Обратите внимание, если вы хотите запустить Swift-компилятор для процессоров Intel на Mac с чипом Apple Silicon (M1), добавьте --platform linux/amd64 -e QEMU_CPU=max в командную строку. Например:
$ docker run -v "$PWD:/code" -w /code --platform linux/amd64 -e QEMU_CPU=max swift:latest swift build
Вышеприведённая команда запустит сборку с использованием последнего Swift Docker-образа, используя bind mounts для исходных файлов на вашем Mac.
Режим отладки и релиз
По умолчанию SwiftPM собирает отладочную версию приложения. Обратите внимание, что отладочные версии не подходят для работы в производстве, так как они значительно медленнее. Чтобы собрать релизную версию вашего приложения, выполните swift build -c release.
Поиск бинарных файлов
Бинарные артефакты, которые можно развернуть, находятся в .build/x86_64-unknown-linux на Linux и .build/x86_64-apple-macosx на macOS.
SwiftPM может показать вам полный путь к бинарному файлу, используя swift build --show-bin-path -c release.
Сборка для производства
-
Соберите код для производства в режиме релиз, выполнив компиляцию с
swift build -c release. Запуск кода, скомпилированного в режиме отладки, существенно повлияет на производительность. -
Для наилучшей производительности в Swift 5.2 или более поздних версиях передайте
-Xswiftc -cross-module-optimization(это не сработает в версиях Swift до 5.2) — проверка этого должна выполняться с помощью тестов производительности (как и любые изменения оптимизации), так как иногда это может привести к снижению производительности. -
Интегрируйте
swift-backtraceв ваше приложение, чтобы убедиться, что при сбоях выводятся трассировки стека. Трассировки стека не работают «из коробки» на Linux, и эта библиотека помогает заполнить этот пробел. В конечном счёте это станет языковой функцией и не потребует отдельной библиотеки.
The Swift Programming Language, Copyright © 2014-2025 Apple Inc.
Swift and the Swift logo are trademarks of Apple Inc.
Documentation for Swift 6.0.3
https://www.swift.org/documentation/server/guides/building.html