「这是我参与11月更文挑战的第14天,活动详情查看:2021最后一次更文挑战」
如今的软件开发行业中,以月或年为单位的软件迭代上线已经十分罕见了,现在提倡的敏捷开放,即以最小的功能进行上线更新。相应地,原来那种开发与运维的分离的日志也一去不复返了,软件工程师将开发好的代码提供给服务器运维工程师,由他进行上线部署,因为这种模式是比较耗时的。取而代之的是,软件工程师自主进行代码的部署升级。这就引出了 CI/CD 的概念。
什么是 CI/CD
CI/CD 是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法。CI/CD 的核心概念是持续集成、持续交付和持续部署。作为一个面向开发和运营团队的解决方案,CI/CD 主要针对在集成新代码时所引发的问题(亦称:“集成地狱”)。
具体而言,CI/CD 可让持续自动化和持续监控贯穿于应用的整个生命周期(从集成和测试阶段,到交付和部署)。这些关联的事务通常被统称为“CI/CD 管道”,由开发和运维团队以敏捷方式协同支持。
CI 全称是 CONTINUOUS INTEGRATION,即持续集成的意思,它属于开发人员的自动化流程。成功的 CI 意味着应用代码的新更改会定期构建、测试并合并到共享存储库中。该解决方案可以解决在一次开发中有太多应用分支,从而导致相互冲突的问题。
CD 的全称是 CONTINUOUS DELIVERY 或 CONTINUOUS DEPLOYMENT,即持续交付或持续部署。
持续交付通常是指开发人员对应用的更改会自动进行错误测试并上传到存储库(如 GitHub 或容器注册表),然后由运维团队将其部署到实时生产环境中。这旨在解决开发和运维团队之间可见性及沟通较差的问题。因此,持续交付的目的就是确保尽可能减少部署新代码时所需的工作量。
持续部署(另一种“CD”)指的是自动将开发人员的更改从存储库发布到生产环境,以供客户使用。它主要为了解决因手动流程降低应用交付速度,从而使运维团队超负荷的问题。持续部署以持续交付的优势为根基,实现了管道后续阶段的自动化。
什么是 Github Actions
Github Actions 的官方定义 在 GitHub Actions 的仓库中自动化、自定义和执行软件开发工作流程。 你可以发现、创建和共享操作以执行您喜欢的任何作业(包括 CI/CD),并将操作合并到完全自定义的工作流程中。
从官方定义可以看出,Github Actions 可以自定义一系列执行流程,来实现我们想要的目的。我们先来熟悉一下其中的一些概念:
- workflow:工作流程是你添加到仓库的自动化过程。 工作流程由一项或多项作业组成,可以计划或由事件触发。 工作流程可用于在 GitHub 上构建、测试、打包、发布或部署项目。
- job:作业是在同一运行服务器上执行的一组步骤。 默认情况下,包含多个作业的工作流程将同时运行这些作业。 你也可以配置工作流程按顺序运行作业。 例如,工作流程可以有两个连续的任务来构建和测试代码,其中测试作业取决于构建作业的状态。 如果构建作业失败,测试作业将不会运行。
- step: 步骤是可以在作业中运行命令的单个任务。 步骤可以是操作或 shell 命令。 作业中的每个步骤在同一运行器上执行,可让该作业中的操作互相共享数据。
- action:操作 是独立命令,它们组合到步骤以创建作业。 操作是工作流程最小的便携式构建块。 您可以创建自己的操作,也可以使用 GitHub 社区创建的操作。 要在工作流程中使用操作,必须将其作为一个步骤。
更多内容,可以查看官网介绍