<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>GitHub Actions on 041 Blog</title><link>https://www.iam041.com/tags/github-actions/</link><description>Recent content in GitHub Actions on 041 Blog</description><generator>Hugo</generator><language>zh_CN</language><lastBuildDate>Tue, 15 Sep 2026 17:20:00 +0800</lastBuildDate><atom:link href="https://www.iam041.com/tags/github-actions/index.xml" rel="self" type="application/rss+xml"/><item><title>CI/CD 与 GitHub Actions 自动化部署实战</title><link>https://www.iam041.com/posts/github-actions-cicd-guide/</link><pubDate>Tue, 15 Sep 2026 17:20:00 +0800</pubDate><guid>https://www.iam041.com/posts/github-actions-cicd-guide/</guid><description>&lt;p&gt;CI/CD（持续集成与持续交付/部署）是一种现代软件工程方法论，通过在代码仓库中自动化执行构建、测试与部署流水线，实现从代码提交到线上生产环境的无人值守闭环。&lt;/p&gt;&#10;&lt;p&gt; &lt;/p&gt;&#10;&lt;h2 id="1-cicd-简介"&gt;1. CI/CD 简介&lt;/h2&gt;&#10;&lt;hr&gt;&#10;&lt;p&gt;在传统的网站与前后端项目运维中，最普遍的人工操作流程往往是：本地编写代码 → 本地执行编译构建打包 → 打开 FTP/SFTP 传输软件（如 FileZilla、WinSCP 或服务器文件管理器） → 拖拽上传并覆盖服务器目标目录。&lt;/p&gt;&#10;&lt;p&gt;这一原始模式存在三个显著工程痛点：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;操作机械繁琐&lt;/strong&gt;：每次细微的代码更新都要手动重复“构建-传输-覆盖”流程，严重打断研发心流。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;环境配置耦合&lt;/strong&gt;：本地开发环境的私有配置（如本地调试域名或测试环境变量）容易在打包时误带入生产，污染线上运行环境。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;残留冗余废弃文件&lt;/strong&gt;：手动文件覆盖仅处理“新增”和“替换”，一旦在本地删除了旧文件或重构了路由目录，服务器目录中残存的废弃历史文件无法自动清理。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;CI/CD 正是为了将这一繁琐、易出错的人工运维流程彻底解脱为无人值守的自动化闭环。&lt;/p&gt;&#10;&lt;h3 id="11-什么是-ci-与-cd"&gt;1.1 什么是 CI 与 CD&lt;/h3&gt;&#10;&lt;p&gt;CI/CD 并非单一软件，而是一种敏捷软件工程实践方法，通常由两个紧密衔接的阶段组成：&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: left"&gt;阶段&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: left"&gt;英文全称&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: left"&gt;核心职责&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: left"&gt;项目映射举例&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;strong&gt;CI&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;strong&gt;Continuous Integration&lt;br&gt;（持续集成）&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;代码频繁合并至主干，并在云端隔离环境自动执行语法检查、依赖安装、单元测试与编译打包，尽早暴露冲突与语法缺陷。&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;代码推送到主分支后，云端自动拉取代码并运行构建命令进行编译与产物完整性验证。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;strong&gt;CD&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;strong&gt;Continuous Delivery&lt;br&gt;（持续交付）&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;产物构建测试通过后，自动打包为可随时发布的标准交付包（Release/Artifact），等待人工确认后上线。&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;编译产物打包存入云端交付物仓库待命，由运维或负责人点击确认发布。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;strong&gt;CD&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;strong&gt;Continuous Deployment&lt;br&gt;（持续部署）&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;strong&gt;无任何人工干预&lt;/strong&gt;，只要前面的集成验证通过，新版本立即自动推向真实的生产服务器，实时生效。&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;编译产物无需人工点击，直接由云端通过 SSH/rsync 增量覆盖生产服务器的部署目录。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt; &lt;/p&gt;&#10;&lt;h2 id="2-github-actions-核心概念"&gt;2. GitHub Actions 核心概念&lt;/h2&gt;&#10;&lt;hr&gt;&#10;&lt;p&gt;GitHub Actions 是 GitHub 官方集成的 CI/CD 自动化平台。它免去了自建 Jenkins 调度节点的高昂维护成本，直接在代码托管仓库内以 YAML 声明式语法编排流水线。&lt;/p&gt;&#10;&lt;h3 id="21-核心组成要素"&gt;2.1 核心组成要素&lt;/h3&gt;&#10;&lt;p&gt;GitHub Actions 的运行逻辑基于五个核心抽象概念：&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: left"&gt;概念/组件&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: left"&gt;对应配置语法&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: left"&gt;描述与核心职责&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;strong&gt;Workflow&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;name / 文件名&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;工作流，存放在 .github/workflows 目录下，定义一次完整的自动化任务集合。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;strong&gt;Event&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;on&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;触发器，定义何时激活工作流（如 push、pull_request 或手动 workflow_dispatch）。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;strong&gt;Jobs&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;jobs&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;任务单元，由一个或多个 Job 组成。不同 Job 默认并行执行，也可声明依赖串行运行。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;strong&gt;Runner&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;runs-on&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;运行容器/虚拟机，平台动态分配的纯净环境（如 ubuntu-latest），任务完成后自动销毁。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;strong&gt;Steps / Action&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;steps / uses&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;步骤与动作，Job 内部由多个 Step 顺序执行，可直接复用开源社区沉淀的 Action 模块。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt; &lt;/p&gt;</description></item></channel></rss>