#XcodeHelperCli

Build Status Swift Version

XcodeHelperCli 让您留在 Xcode 中,无需使用命令行。它基于 XcodeHelperKit 构建。

结合所有这些功能,Xcode 和 Xcode Server 就能够处理 macOS 和 Linux(通过 Docker)的持续集成和交付,这样我们就不必使用像 Jenkins 这样的中间构建服务器了。

##命令

##build

在 Linux 中构建 Swift 包,并将构建错误显示在 Xcode 中。

在 macOS 上的 Xcode 中构建和测试您的 Swift 代码是一回事。但是,之后您必须启动 Docker,并确保在 Linux 端不存在任何库差异或未实现的语言功能。这有点麻烦。XcodeHelper 通过简化跨平台 Swift 开发的 Linux 端,减轻了这些痛苦。

xchelper build SOURCE_CODE_PATH [OPTIONS]
选项 描述
build 或环境变量 BUILD_CONFIGURATION 在 Linux 中构建 Swift 包,并将构建错误显示在 Xcode 中。SOURCE_CODE_PATH 是您的包的根目录,将在其中调用 “swift build”。
-c, --build-configuration 或环境变量 BUILD_CONFIGURATION debug 或 release 模式
-i, --image-name 或环境变量 BUILD_DOCKER_IMAGE_NAME 运行命令的 Docker 镜像名称。默认为 saltzmanjoelh/swiftubuntu

#####您可以向您的目标添加一个新的“运行脚本构建阶段”

#####或者添加一个单独的“外部构建”目标,并手动在 macOS 构建和 Linux 构建之间切换

  1. 在 Xcode 中创建一个新的“外部构建”目标。


  2. 参数为 /path/to/xchelper build $(PROJECT_DIR)

##update-packages

xchelper update-packages SOURCE_CODE_PATH [OPTIONS]
选项 描述
update-packages,或环境变量 UPDATE_PACKAGES 通过 swift package update 更新包依赖项。SOURCE_CODE_PATH 是您的包的根目录,将在其中调用 swift package update
-l, ----linux-packages 或环境变量 UPDATE_PACKAGES_LINUX_PACKAGES 某些包具有 Linux 特定的依赖项。使用此选项更新包的 Linux 版本。Linux 包可能与 macOS 依赖项不兼容。在更新之前会执行 swift build --clean。默认为:false
-i, --image-name 或环境变量 UPDATE_PACKAGES_DOCKER_IMAGE_NAME 运行命令的 Docker 镜像名称。默认为 saltzmanjoelh/swiftubuntu。

##symlink-dependencies

xchelper symlink-dependencies SOURCE_CODE_PATH
选项 描述
symlink-dependencies,或环境变量 SYMLINK_DEPENDENCIES 创建指向您的依赖项的符号链接,它将更新您的 Xcode 项目以使用这些符号链接,而不是带有版本号后缀的目录。

##create-archive

xchelper create-archive ARCHIVE_PATH FILES [OPTIONS]
选项 描述
create-archive,或环境变量 CREATE_ARCHIVE 使用 tar 归档文件。ARCHIVE_PATH 是要创建的归档文件的完整路径和文件名。FILES 是您要归档的文件的完整路径的空格分隔列表。
-f, --flat-list, 或环境变量 CREATE_ARCHIVE_FLAT_LIST 将所有文件放在一个扁平列表中,而不是维护目录结构。默认为:true。

##upload-archive

xchelper upload-archive SOURCE_CODE_PATH [OPTIONS]

upload-archive 命令将通过 swift package update 下载对您的依赖项的任何更新。SOURCE_CODE_PATH 是您的包的根目录,将在其中调用 swift package update

选项 描述
-l, ----linux-packages 或环境变量 UPDATE_PACKAGES_LINUX_PACKAGES 某些包具有 Linux 特定的依赖项。使用此选项更新包的 Linux 版本。Linux 包可能与 macOS 依赖项不兼容。在更新之前会执行 swift build --clean。默认为:false
-i, --image-name 或环境变量 UPDATE_PACKAGES_DOCKER_IMAGE_NAME 运行命令的 Docker 镜像名称。默认为 saltzmanjoelh/swiftubuntu。

#示例

有一个 示例项目 可用于查看完整的配置。

通过 Docker 在 Linux 上构建和运行测试

这是一个关于所有 xchelper build 选项的示例


##保持 Xcode 中 “Dependencies” 组引用正确的路径 当您需要更新您的包依赖项时,您必须调用 swift package update。这会破坏您的项目,现在您必须再次调用 swift package generate-xcodeproj 或更新项目中的引用。使用 update-packagessymlink-dependencies 来帮助完成此过程。

这是一个更新您的包、创建/更新指向这些包的符号链接以及使 Xcode 更新以使用这些符号链接的示例。


请注意 xcrun 的使用。如果您收到任何类似 cannot load underlying module for 'Darwin'did you forget to set an SDK using -sdk or SDKROOT? 的错误,则可以使用它。

##将您的二进制文件打包成 tar 压缩包并上传到 AWS S3 存储桶。

使用 create-archiveupload-archive 来帮助将您的文件上传到 S3 存储桶。如果您使用 CodeDeploy 或类似工具来监控 S3 存储桶以进行持续集成,您可能会使用此功能。