Go 语言项目开发实战
孔令飞
腾讯云专家工程师,前 Red Hat、联想云工程师
41031 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 61 讲
Go 语言项目开发实战
15
15
1.0x
00:00/00:00
登录|注册

51 | 基于 GitHub Actions 的 CI 实战

id
run
with
uses
jobs.<job_id>.steps
jobs.<job_id>.runs-on
jobs.<job_id>.needs
jobs.<job_id>.name
on.<push|pull_request>.<tags|branches>
on
name
action
step
job
workflow
Actions
实现 IAM 的 CD 功能
使用 CODING 实现 IAM 的 CI 任务
GitHub Actions 的核心知识
CI 任务的自动化
IAM GitHub Actions 实战
具体步骤
使用 Artifact 保存构建产物
使用 Secrets
使用构建矩阵
为工作流加一个 Badge
workflow 文件介绍
GitHub Actions 的基本概念
课后练习
总结
实战
进阶用法
基本用法
GitHub Actions 的 CI 实战

该思维导图由 AI 生成,仅供参考

你好,我是孔令飞。这是本专栏正文的最后一讲了,恭喜你坚持到了最后!
在 Go 项目开发中,我们要频繁地执行静态代码检查、测试、编译、构建等操作。如果每一步我们都手动执行,效率低不说,还容易出错。所以,我们通常借助 CI 系统来自动化执行这些操作。
当前业界有很多优秀的 CI 系统可供选择,例如 CircleCITravisCIJenkinsCODINGGitHub Actions 等。这些系统在设计上大同小异,为了减少你的学习成本,我选择了相对来说容易实践的 GitHub Actions,来给你展示如何通过 CI 来让工作自动化。
这一讲,我会先介绍下 GitHub Actions 及其用法,再向你展示一个 CI 示例,最后给你演示下 IAM 是如何构建 CI 任务的。

GitHub Actions 的基本用法

GitHub Actions 是 GitHub 为托管在 github.com 站点的项目提供的持续集成服务,于 2018 年 10 月推出。
GitHub Actions 具有以下功能特性:
提供原子的 actions 配置和组合 actions 的 workflow 配置两种能力。
全局配置基于YAML 配置,兼容主流 CI/CD 工具配置。
Actions/Workflows 基于事件触发,包括 Event restrictions、Webhook events、Scheduled events、External events。
提供可供运行的托管容器服务,包括 Docker、VM,可运行 Linux、macOS、Windows 主流系统。
提供主流语言的支持,包括 Node.js、Python、Java、Ruby、PHP、Go、Rust、.NET。
提供实时日志流程,方便调试。
提供平台内置的 Actions与第三方提供的 Actions,开箱即用。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

GitHub Actions是GitHub提供的持续集成服务,本文详细介绍了如何利用GitHub Actions进行持续集成实战。文章首先介绍了GitHub Actions的基本概念和术语,包括workflow、job、step和action等,并详细讲解了workflow文件的基本配置字段和进阶用法。其中涉及了使用secrets管理敏感数据和使用Artifact保存构建产物的方法。接着,文章通过实例演示了如何创建GitHub Actions workflow配置,以及在具体项目中的应用。通过实战演示,读者可以了解GitHub Actions的工作流程和任务执行过程。此外,文章还介绍了在Go项目开发中利用GitHub Actions进行CI任务构建的实践,展示了GitHub Actions在实际项目中的应用场景。总的来说,本文内容详实,适合开发人员快速了解GitHub Actions的基本用法和进阶技巧。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Go 语言项目开发实战》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(15)

  • 最新
  • 精选
  • pedro
    最后一讲留个言,专栏基本覆盖 Go 技术栈的方方面面,还有很多工具的加餐,项目开发规范,云原生,容器等知识,物超所值。 代码质量很高,学习了很多,一路走来,多谢了~

    作者回复: 感谢老哥能够坚持学习到最后

    2021-09-28
    13
  • 随风而过
    整个专栏质量很高,文案虽然有些瑕疵,不影响整体专栏的专业度,专栏介绍了很多编程规范,主要还是云原生范畴内,看完整个专栏有很多反思,对go语言自我的认知有一个全新的提高(比如项目目录参杂其他语言的习惯目录结构来做是错误的,还有代码规范也会参照其他语言来组织)。 也到说再见的时候了,希望老师在出高质量的专栏,订阅破万,与君共勉。。。。

    作者回复: 感谢老哥的支持。后面可以随时群内交流Go项目开发技术

    2021-09-30
    3
  • jxs1211
    gitlab对应的工具叫啥

    作者回复: GitlabCI

    2022-04-22
    2
  • dairongpeng
    物超所值,非常感谢作者分享自己的优秀实践,自身在go语言领域又上一个台阶

    作者回复: 感谢老哥支持!

    2021-12-08
  • helloworld
    感谢分享,非常全面的Go工程实践,建议码农们都来学习学习,不限使用语言:)

    作者回复: 66666

    2021-11-17
  • Summer 空城
    老哥,请教个多了服务公用common包的问题,什么样的内容应该抽出来一个独立的sdk包,供各个微服务引用?我们现在只要有两个及以上微服务重复的代码,都放在一个core lib中,甚至于一些rpc调用、配置中心查询都放在这个core lib中。我觉得这是一个不好的设计,及时两个微服务中有一些重复的代码也是ok的。请教下老哥我理解的对么?什么内容可以放在core lib中?麻烦老哥。

    作者回复: 感觉还是可以抽离出这样一个common包的。跟项目完全解耦的包都可以放在core lib中。 但我感觉这个core lib应该要有明确的边界什么样的包可以加入进去,并且形成规范。 当然包也可以不放在core lib中,比如A项目下有pkg/util/net包,这个包可以供别的项目引用,例如B项目。但如果A项目也引用到B的包,那可能会出现循环引用,也使包的引用变得复杂。

    2021-10-15
  • gopher523
    真的物超所值,大厂的工程师 真不一样啊,膜拜了,各种规范 各种设计。唉 如果给我一次重新上大学的机会 我一定要努力校招上。现在社招压力大啊
    2021-11-11
    3
  • Realm
    很专业、很系统,感谢老师的指引。 内容覆盖了编程技巧、工程化、云原生实践的经验总结,当然还有加餐鸡腿. 收获很大,谢谢老师!
    2021-09-29
    2
  • ҉我爱小笨蛋
    质量非常高,是我买的所有教材里面,最值的,没有之一!
    2023-04-24归属地:上海
    1
  • 销毁first
    堪称go技术栈的软件工程,收货颇丰,谢谢老师
    2021-11-04
    1
收起评论
显示
设置
留言
15
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部