高级Python技巧:提升开发效率的10个实用方法
2026/6/19 9:41:49
GitHub Actions 是 GitHub 官方提供的 CI/CD 解决方案,它内置于 GitHub 平台,用于自动化你的软件构建、测试和部署工作流。
在开始编写配置文件之前,理解以下几个关键概念是掌握 GitHub Actions 的前提:
这是 GitHub CI/CD 的最高级别组件。Workflow 是一个 YAML 格式的文件,用于定义完整的自动化流程。
.github/workflows/文件夹内。push、pull_request、定时任务等)会触发这个流程运行。Job 是 Workflow 中定义的一组任务,它们可以在不同的 Runner 上并行执行。
needs关键字。runs-on关键字指定运行环境,如ubuntu-latest、windows-latest或自托管 Runner。Step 是 Job 中最小的执行单元,定义了要执行的具体操作。一个 Job 由多个 Step 组成,按顺序执行。Step 可以是:
actions/checkout@v4)。run: npm install)。Action 是 GitHub Actions 最大的特色。它是可复用、封装好的代码块,由社区或 GitHub 官方提供。
uses: owner/repo@ref格式引用。我们将创建一个简单的 Node.js 项目工作流,包含“安装依赖”和“运行测试”两个步骤。
在你的 GitHub 仓库中,创建路径和文件:.github/workflows/ci.yml
ci.yml内容# .github/workflows/ci.yml# 1. Workflow 名称name:Node.js CI# 2. 触发机制:何时运行?on:push:branches:[main,develop]# 在 main 或 develop 分支有推送时触发pull_request:branches:[main]# 在向 main 分支发起 Pull Request 时触发# 3. 定义 Job (作业)jobs:build_and_test:# Job 的 IDname:Build and Test# 4. 运行环境:在哪台机器上运行?runs-on:ubuntu-latest# 使用 GitHub 托管的最新版 Ubuntu Runner# 5. 定义 Step (步骤)steps:# Step 1: 检出代码 (使用官方 Action)-name:Checkout Repositoryuses:actions/checkout@v4# 必须的步骤,将仓库代码下载到 Runner 上# Step 2: 设置 Node.js 环境 (使用官方 Action)-name:Set up Node.jsuses:actions/setup-node@v4with:node-version:'20'# 指定使用的 Node.js 版本cache:'npm'# 启用 npm 缓存,加快后续运行速度# Step 3: 安装依赖 (使用 Shell 命令)-name:Install Dependenciesrun:npm ci# 使用 npm ci 确保干净安装,适用于 CI/CD# Step 4: 运行测试 (使用 Shell 命令)-name:Run Unit Testsrun:npm testci.yml文件提交并推送到你的 GitHub 仓库。Build and TestJob 及其所有 Step 的实时日志输出。needs排序)如果你想在测试成功后,再执行部署 Job,你需要使用needs来定义 Job 的依赖关系:
jobs:# 1. 测试 Jobtest:name:Run Testsruns-on:ubuntu-lateststeps:# ... (检出代码, 设置环境, npm install, npm test 的步骤) ...# 2. 部署 Job:依赖测试 Job 成功deploy:name:Deploy to Productionruns-on:ubuntu-latestneeds:[test]# 明确指定:只有 test Job 成功后,才运行 deploy Jobenvironment:production# 关联到 GitHub 环境,用于审批和保护steps:# Step 1: 配置云服务凭证-name:Configure AWS Credentialsuses:aws-actions/configure-aws-credentials@v4with:aws-access-key-id:${{secrets.AWS_ACCESS_KEY_ID}}# 使用 Secrets 存储敏感信息aws-secret-access-key:${{secrets.AWS_SECRET_ACCESS_KEY}}aws-region:ap-southeast-1# Step 2: 执行部署命令-name:Deploy Applicationrun:|npm run build aws s3 sync ./build s3://my-prod-bucket --delete🔑 安全提示:部署 Job 中使用的敏感信息(如 API 密钥、密码)绝对不应直接写在 YAML 文件中,而应存储在 GitHub 仓库的Settings > Secrets and variables > Actions中。
如果你需要针对多个操作系统、Node 版本或浏览器版本运行相同的测试,使用矩阵策略可以大大简化配置:
jobs:test:runs-on:${{matrix.os}}# 运行时依赖 matrix.os 的值strategy:matrix:node-version:[18,20,22]# 三个 Node 版本os:[ubuntu-latest,windows-latest]# 两个操作系统steps:# ...-name:Set up Node.js ${{matrix.node-version}}uses:actions/setup-node@v4with:node-version:${{matrix.node-version}}# ...# 这个 Job 将运行 3 x 2 = 6 次,每个组合运行一次。恭喜你,现在你已经掌握了 GitHub Actions 的核心概念和基础工作流。
| 概念 | 作用 | 配置文件中的关键字 | 相当于 GitLab CI |
|---|---|---|---|
| Workflow | 自动化流程的定义文件 | name,on | Pipeline |
| Job | 一组任务的集合,默认并行 | jobs,runs-on,needs | Stage |
| Step | 最小执行单元 | name,uses,run | Job / Script |
| Action | 可复用的代码块 | uses: | (无直接对应,是 Actions 特色) |
你的下一步:
.github/workflows/ci.yml文件。on: schedule:来定义一个定时运行的工作流,例如每天凌晨运行一次健康检查。