github actions入门指南
GitHub Actions 是 GitHub 提供的持续集成和持续交付(CI/CD)平台,允许开发者自动化软件工作流程(如构建、测试、部署)。以下是详细介绍:
一、核心概念
-
Workflow(工作流程)
持续集成的一次完整运行过程,由 YAML 文件定义,存储在仓库的.github/workflows
目录中。每个文件对应一个独立的工作流。 -
Job(任务)
一个 Workflow 包含多个 Job,每个 Job 在独立的运行器(虚拟机/容器)中执行。Job 默认并行执行,但可通过needs
定义依赖顺序。 -
Step(步骤)
每个 Job 由多个 Step 组成,按顺序执行。每个 Step 可以是 Shell 命令或预定义的 Action。 -
Action(动作)
可复用的脚本单元,可直接引用他人共享的 Action(如actions/checkout@v3
)。GitHub 官方维护了丰富的 Action 库 GitHub Marketplace。
二、配置文件结构
name: CI Workflow # 工作流名称
on: [push] # 触发事件(如 push、pull_request、定时任务 schedule)
jobs:build:runs-on: ubuntu-latest # 运行环境(Ubuntu、Windows、macOS)steps:- name: Checkout codeuses: actions/checkout@v4 # 使用预定义 Action 拉取代码- name: Install dependenciesrun: npm install # 执行 Shell 命令- name: Run testsrun: npm test
三、核心功能
-
事件触发
- 代码推送(
push
)、拉取请求(pull_request
)、定时任务(schedule
)等均可触发工作流。 - 示例:每天 8 点自动运行
on:schedule:- cron: '0 0 * * *' # UTC 时间,对应北京时间 8 点
- 代码推送(
-
多环境支持
支持运行在 GitHub 托管的虚拟机(如ubuntu-latest
)或自托管运行器,并可指定容器环境 。 -
密钥管理与安全
使用secrets
存储敏感信息(如 API Key),避免硬编码在配置文件中。例如部署时引用密钥:env:API_KEY: ${{ secrets.DEPLOY_KEY }}
-
自动化部署
常见场景:自动构建静态站点并发布到 GitHub Pages ,或部署到云服务(AWS、Azure)。
四、典型使用场景
-
持续集成(CI)
自动运行测试、代码风格检查,确保代码质量。 -
持续部署(CD)
代码合并到主分支后,自动部署到生产环境。 -
定时任务
如每日数据备份、爬虫任务 。 -
跨平台构建
同时编译 Windows、Linux、macOS 版本的程序。
五、优势
- 高度集成:与 GitHub 仓库无缝协作,无需额外配置。
- 灵活复用:通过共享 Action 减少重复代码 。
- 低成本:公开仓库免费使用 GitHub 托管的运行器 。
六、快速入门示例
- 在仓库中创建
.github/workflows/demo.yml
。 - 写入以下内容(当代码推送到
main
分支时输出 “Hello World”):
name: Demo
on:push:branches: [main]
jobs:greet:runs-on: ubuntu-lateststeps:- run: echo "Hello GitHub Actions!"
参考资料
- GitHub Actions 入门教程(阮一峰)
- 使用 GitHub Actions 自动部署 Hugo
- GitHub 官方快速入门指南
- 部署到云服务案例