GitHub行动:持续交付Swift软件包

原始链接:

GitHub行动:持续交付Swift软件包

GitHub正在推出GitHub Actions功能,该功能使开发人员无需使用任何操作即可自动执行CI / CD工作流程…

shashikantjagtap.net

GitHub Actions:持续交付Swift软件包– XCTEQ

GitHub正在推出GitHub Actions功能,该功能使开发人员无需使用任何操作即可自动执行CI / CD工作流程…

www.xcteq.co.uk

GitHub正在推出GitHub Actions功能,该功能使开发人员无需使用任何其他应用程序即可自动执行CI / CD工作流程。 Github Actions可被视为Github本身内置的GitHub自己的CI / CD解决方案。 开发人员可以使用GUI编辑器或从代码创建工作流。 GitHub Actions可用于使用Apple的Swift Package Manager构建,测试和分发Swift库构建。 在本文中,我们将看到如何使用基于Docker的Github Actions为Swift软件包设置CI / CD。

在撰写本文时,GitHub Action仍处于有限的公共beta中,并且可能很快会添加更多功能。 但是,值得理解GitHub Actions和Workflows背后的概念。 有关如何配置工作流程和操作的官方开发人员文档,但是在摘要中,

  • GitHub动作包含一个WorkFlow,其中包含各种动作。 可以使用可视编辑器或在.github/main.workflow文件内的代码中定义工作流程。
  • 工作流必须解决特定的操作。
  • 每个动作都在Docker容器内执行,并且可以依赖于另一个动作。
  • 可以在Github存储库或远程Docker存储库中本地定义操作。

注册GitHub Actions的用户可以在公共存储库上使用此功能进行推送构建。 让我们不用讨论理论,而要使用由Swift Package Manager构建的Swift Packages的GitHub Actions for CI / CD。

苹果已经宣布了自己的软件包管理器来构建和分发Swift软件包。 目前,Swift软件包管理器不支持iOS平台,但可以构建和共享独立的软件包。 为了演示如何为Swift软件包设置CI / CD工作流程,让我们使用Swift软件包管理器创建一个软件包。 我们可以使用包名称(例如SwiftPM-GithubAction)创建目录,并使用以下命令获取模板

  $ mkdir SwiftPM-GithubAction 
$ cd SwiftPM-Githhub动作
$ swift包init --type库

这将使用单元测试为库生成模板源代码。 在Package.swift我们可以为演示目的添加另一个依赖项,例如Apple的Fisher Yates包。 此时,我们可以在安装了Swift和其他必需工具的Linux或MacOS上构建和测试我们的Swift软件包。 可以使用以下命令完成Swift软件包的构建和测试。

  $快速建立 
$快速测试

执行这些命令后,我们将看到已构建包并运行了单元测试。 现在,我们的Swift软件包已准备好通过GitHub Actions自动化。

如前所述,每个动作都在Docker容器内运行,因此我们必须首先设置Docker,然后配置Workflow动作。 基本上,此过程涉及三个步骤。

  • 使用所有必需的工具创建Dockerfile ,然后在Docker映像内复制Package。
  • (可选)将Docker ENTRYPOINT设置为在Docker容器中运行第一个命令。
  • 在.github / main.workflow文件中定义工作流程和操作。

让我们详细探索每个步骤。

Dokerfile是用于置备工具和使用一组指令构建映像的模板。 官方Docker文档上有Dockerfile的完整参考。 由于Docker容器基于Linux,因此我们需要从支持Swift的Docker Hub中选择Docker镜像的基础。 用于构建Swift库的最常用的Docker镜像是此处Docker Hub上的官方Swift镜像。 我们可以将该图像用作基本参考,并在此图像上添加自定义命令。 我们可以使用以下内容创建一个Dockerfile

一旦完成了工作流程中所有阶段的执行,便可以看到每个阶段的日志,例如,Swift Package Build阶段的日志如下所示:

在发布阶段,我们需要在Docker映像中配置Git凭据,以将软件包发布到Github上。 发布阶段完成后,我们可以看到我们的软件包已被标记并在Github上发布。

本教程的源代码可在Github存储库Shashikant86 / SwiftPM-GItHubAction上找到。

GitHub Actions功能仍处于公开测试阶段,我们将在不久的将来听到有关改进的信息。 但是,尝试Github动作时会严重错过的事情是

  • 支持Docker Compose首先创建docker-compose.yml文件以在不同容器中执行swift命令,但docker compose尚未预安装。 另外,Docker映像是通过操作自动构建的。
  • 构建Docker映像时,无法为Docker运行指定其他选项。 例如,复制GitHub配置安装卷,指定端口等。
  • Github Actions建议在action目录中创建本地动作,例如action-a,但是这样做不能将Swift软件包内容复制到Docker映像中,因为它不在Docker构建上下文之内。
  • 无法使用操作中的运行执行多个命令。 另外,不允许&&字符。
  • GitHub Actions目前不支持macOS。 目前,它仅基于Docker和Linux。

GitHub Actions功能声称这是工作流自动化的未来,开发人员可以从GitHub本身创建和维护工作流和操作。 CI / CD将轻松自如。 我们刚刚看到了如何使用Github Actions部署Swift软件包,但是它可以应用于Docker内部可以构建的任何技术。 这仅仅是GitHub Action的开始。 让我们拭目以待,看看将来会怎样。

===================================

像XCBlog的XCTEQ发布的帖子一样? 您可能还会喜欢我们在 Github 上的一些开源项目, 或者在 Twitter LinkedIn 上关注我们