GitHub Actions 是 GitHub 的自动化功能,它允许你在 GitHub 仓库中自动执行软件开发工作流程。从自动运行测试到部署应用,GitHub Actions 提供了一种强大的方式来自动化几乎任何任务。本文将介绍 GitHub Actions 的基本概念、如何设置和使用,以及一些实用的自动化工作流程示例。
GitHub Actions 简介
GitHub Actions 是一个由 GitHub 提供的自动化工具,它允许你在 GitHub 仓库中触发和执行工作流程。这些工作流程可以是简单的脚本,也可以是复杂的多步骤部署过程。
核心概念
- 工作流程(Workflow):一系列自动化步骤,定义在
.github/workflows
目录下的 YAML 文件中。 - 作业(Job):工作流程中的一个执行单元,通常在虚拟环境中运行。
- 步骤(Step):作业中的一个操作,可以是运行脚本、使用命令或调用其他 GitHub Actions。
设置 GitHub Actions
要开始使用 GitHub Actions,你需要在仓库中创建一个工作流程文件。
创建工作流程文件
- 在你的仓库中,导航到
.github/workflows
目录。 - 创建一个新的 YAML 文件,例如
ci.yml
。 - 定义你的工作流程配置。
name: CI
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: '14'
- name: Install dependencies
run: npm install
- name: Build
run: npm run build
- name: Test
run: npm test
使用 GitHub Actions 自动化工作流程
自动运行测试
每当代码被推送到仓库时,自动运行测试可以确保代码质量。
name: Test
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: '14'
- name: Install dependencies
run: npm install
- name: Test
run: npm test
自动部署应用
将应用部署到服务器或云平台是自动化流程中的常见步骤。
name: Deploy
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: '14'
- name: Install dependencies
run: npm install
- name: Build
run: npm run build
- name: Deploy to Production
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${
{
secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${
{
secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-east-1
run: aws s3 sync ./build s3://my-app-bucket
自动合并 Pull Requests
自动化合并符合条件的 Pull Requests 可以减少手动操作。
name: Auto Merge
on:
pull_request:
types: [labeled]
jobs:
auto-merge:
runs-on: ubuntu-latest
if: github.event.label.name == 'auto-merge'
steps:
- uses: actions/checkout@v2
- name: Merge PR
env:
GITHUB_TOKEN: ${
{
secrets.GITHUB_TOKEN }}
run: |
git config --global user.email "action@github.com"
git config --global user.name "GitHub Action"
git merge origin/${
{ github.event.pull_request.base.ref }} -m "Auto merge PR ${
{ github.event.pull_request.number }}"
git push
结论
GitHub Actions 提供了一个强大而灵活的自动化平台,可以帮助你自动化软件开发的各个方面。通过本文的介绍,你应该能够开始设置和使用 GitHub Actions 来自动化你的工作流程,从而提高效率和代码质量。