GitHub Actions 教程 | 使用 Docker 的 CI 管道
学习内容概述🧠👏🏻
通过本完整的GitHub Actions 教程🎬,您将获得以下方面的良好概述:
- GitHub Actions 到底是什么
- 了解可以使用 GitHub Actions 自动化的特定开发人员工作流程用例
- GitHub Actions 的工作原理——基本概念,包括 GitHub事件、操作和工作流程
- 最常见的工作流程,即CI/CD 管道
- 了解为什么它不仅仅是另一个 ci/cd 工具,或者GitHub Actions CI CD 管道有什么好处
- 动手演示,我将在其中解释github actions 工作流文件的语法,然后使用我的示例 Java Gradle 项目向您展示完整的 ci 管道设置,我们将把它构建到 Docker Image 🐳 并推送到 DockerHub 上的私有 Docker 存储库。
GitHub Actions 是什么?🤔
GitHub Actions 是一个自动化开发者工作流程的平台。
许多教程似乎都表明 GitHub Actions 是一个 ci/cd 工具,但CI/CD 只是众多工作流程中的一种。
什么是 CI/CD?
持续集成:将开发人员的代码集成到共享存储库中。每次签入都会通过自动构建进行验证。
持续交付从持续集成结束的地方开始,并自动将应用程序交付到基础设施环境。
那么,这些开发者工作流程是什么样的呢?👀
开发人员工作流程用例👩🏻💻
GitHub Actions 可以自动执行一些特定的组织任务,例如为开源项目的维护者执行:
所有这些任务都是你作为 GitHub 仓库维护者需要完成的工作流程示例。
项目越大,贡献者越多,创建的功能、问题和拉取请求越多,你需要投入的组织精力就越多😦。
当然,作为开发人员,您宁愿编写代码并尽可能地自动化这些管理任务!
为了这个目的,GitHub Actions 应运而生💡。
显然,并非每个人在 GitHub 上都有开源项目,因此对于您的私人项目,最常见的工作流程将是CI/CD 管道。
GitHub Actions 的工作原理——事件、操作和工作流程
每当您的存储库中或存储库中发生某些事情(事件)时,您都可以配置要执行的自动操作(操作)。
GitHub Actions 是单独的任务,结合起来会形成自定义工作流程🔁。
那么,这如何转化为实际的配置文件呢?
工作流配置文件
您的配置文件是触发器(“on” - 事件)和步骤的“工作流” 。您可以根据需要设置任意数量的步骤。
这些步骤可以是以下步骤的组合:
- shell 命令 - “运行”(如npm run build、./gradlew build ......)
- 外部行动——“使用”
行动
外部操作只是一个由社区发布的带有 actions.yml 文件的 repo,您可以重复使用。
所以,这是一个可重复使用的流程,您可以像库一样使用。您可以在操作“市场”中找到可用的操作。
工作
作业是实际执行的“任务”。你可以为作业命名,但大多数情况下只需要一个作业。
工作流配置文件的语法是 YAML。完整的 YAML 教程在这里
提示💡:GitHub 上有大量的工作流模板,因此您无需从头开始编写工作流文件。请使用与您的项目所用技术相匹配的模板。
这些只是关键部分,您可以观看完整的教程以获得更详细的解释。
现在我们来看一个具体的工作流程示例。
使用 GitHub Actions 进行 CI/CD
一个简单的 CI/CD 管道可能看起来像这样:您提交代码,开始构建,测试代码,将代码构建到工件中,将工件推送到某些存储中,然后将应用程序部署到部署服务器。
只是另一个 CI/CD 工具?🙄
为什么只添加一个 CI/CD 工具就这么重要?因为
已经有像 Jenkins 这样的成熟工具了。
好处:
- 👍 它已集成到您的代码库中。如果您已将代码托管在 GitHub 上,现在可以使用相同的工具,而无需与其他第三方 CI/CD 工具集成。
- 👍 管道的设置很简单
- 👍 这是一款专为开发人员设计的工具
与其他技术集成
那么,为什么设置更容易呢? 🧐
要理解这一点,你必须知道,设置 CI/CD 管道时最重要的事情之一是它与不同工具和技术的集成。
您不想配置与这些工具的每一个集成,例如安装 Java、Maven 和 Docker、与 Nexus、AWS 的集成、安装插件等等。
相反,你想要一种更简单的说法:
“我想要一个已经有 Node 和 Docker 的环境,并且有我想要的版本。”同样,部署部分也应该很简单,只需连接到目标环境并在那里部署应用程序即可。
这正是使用 GitHub Actions 的优势!🤩
演示👩🏻💻
在下面的视频演示部分中,我逐步展示并解释了它的工作原理。
使用示例 Java Gradle 项目,我们将其构建到 Docker 镜像中(因为我们生活在一个容器化的世界中🐳)并推送到私有 Docker 存储库(DockerHub)。
在这里观看完整视频🤓
► 使用此代码可享受30% 折扣:UDEMY_NANA_NOV2020:Udemy 课程在此
► Kubernetes 101:紧凑且易于阅读的电子书包 🚀
这是一种快速查找某些内容或在工作中刷新知识并将其用作备忘单的便捷方法 😎
喜欢、分享并关注我😍以获取更多内容:
鏂囩珷鏉ユ簮锛�https://dev.to/techworld_with_nana/github-actions-tutorial-ci-pipeline-with-docker-1jp