使用Github Actions构建流水线并使用Helm部署制品到K8S
GitHub Actions 是 Github 在2018年10月份推出的持续集成服务。可免费使用,你可以在 GitHub Actions 的仓库中自动化、自定义和执行软件开发工作流程。 可以发现、创建和共享操作以执行您喜欢的任何作业(包括 CI/CD),并将操作合并到完全自定义的工作流程中。
本文是一个简单的教程,演示如何使用 GitHub Actions 自动构建SpringBoot应用流水线并使用Helm部署到K8S集群。
基本概念
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。
创建一个工作流
从 GitHub 上的仓库,在 .github/workflows 目录中创建一个名为 ci.yml 的新文件。
如下是其内容:
自动触发流水线
从上面的配置可以看出,在我们push代码之后就会触发workflow:
应用部署
Docker制品生成
K8S应用部署成功
到这里我们就实现了通过GitHub Actions自动触发流水线生成Docker制品,并通过Helm将该制品部署到K8S集群中。
Github Demo地址:https://github.com/amuguelove/scaffold-onion-architecture
Reference
GitHub Actions官网:https://docs.github.com/cn/actions
GitHub Actions Marketplace: https://github.com/marketplace?type=actions