文章

使用Github Actions构建流水线并使用Helm部署制品到K8S

GitHub Actions 是 Github 在2018年10月份推出的持续集成服务。可免费使用,你可以在 GitHub Actions 的仓库中自动化、自定义和执行软件开发工作流程。 可以发现、创建和共享操作以执行您喜欢的任何作业(包括 CI/CD),并将操作合并到完全自定义的工作流程中。

本文是一个简单的教程,演示如何使用 GitHub Actions 自动构建SpringBoot应用流水线并使用Helm部署到K8S集群。

GitHub Actions

基本概念

1)Workflows(工作流程):

工作流程由一项或多项作业组成,可以计划或由事件触发。 工作流程可用于在 GitHub 上构建、测试、打包、发布或部署项目。

2)Events(事件):

事件是触发工作流程的特定活动。 例如,当有推送提交到仓库或者创建议题或拉取请求时,GitHub 就可能产生活动。

3)Jobs(任务作业):

作业是在同一运行服务器上执行的一组步骤。 默认情况下,包含多个作业的工作流程将同时运行这些作业。

4)Steps(步骤):

步骤是可以在作业中运行命令的单个任务。 步骤可以是操作或 shell 命令。 作业中的每个步骤在同一运行器上执行,可让该作业中的操作互相共享数据。

5)Actions(操作):

操作 是独立命令,它们组合到步骤以创建作业。 操作是工作流程最小的便携式构建块。 您可以创建自己的操作,也可以使用 GitHub 社区创建的操作。 要在工作流程中使用操作,必须将其作为一个步骤。

6)Runners(运行器):

运行器是安装了 GitHub Actions 运行器应用程序的服务器。 您可以使用 GitHub 托管的运行器,也可以托管您自己的运行器。 运行器将侦听可用的作业,每次运行一个作业,并将进度、日志和结果报告回 GitHub。 GitHub 托管的运行器基于 Ubuntu Linux、Microsoft Windows 和 macOS,并且工作流程中的每个作业都在新的虚拟环境中运行。

下面我们开始从0开始创建一个真实项目可运行的Demo:

配置GitHub Actions 密钥

在开始GitHub Actions之前我们需要配置一些Secrets,方便在后续的配置文件中使用,可以看到这里配置了Docker Registry以及K8S相关的Secret。

image-20210903213601813

创建一个工作流

从 GitHub 上的仓库,在 .github/workflows 目录中创建一个名为 ci.yml 的新文件。

如下是其内容:

image-20210903214946429

自动触发流水线

从上面的配置可以看出,在我们push代码之后就会触发workflow:

image-20210903215254227

image-20210903215326332

应用部署

  1. Docker制品生成

    image-20210903215532955

  2. K8S应用部署成功

image-20210903215556667

到这里我们就实现了通过GitHub Actions自动触发流水线生成Docker制品,并通过Helm将该制品部署到K8S集群中。

Github Demo地址:https://github.com/amuguelove/scaffold-onion-architecture

Reference

  1. GitHub Actions官网:https://docs.github.com/cn/actions

  2. GitHub Actions Marketplace: https://github.com/marketplace?type=actions

License:  CC BY 4.0