泡芙

泡芙

技术爱好者 · 探索者

← 返回文章列表

GitHub Actions 实战:打造你的第一个自动化工作流

作为研究生,你是否经常需要手动部署项目、运行测试、或者处理重复性的构建任务?GitHub Actions 可以帮你自动化这一切,而且完全免费!今天就手把手教你打造第一个自动化工作流。

什么是 GitHub Actions?

GitHub Actions 是 GitHub 提供的 CI/CD(持续集成/持续部署)工具。它可以监听代码仓库中的事件(如 push、pull request),自动执行预设的任务。

💡 免费额度: GitHub 为所有账户提供每月 2000 分钟的免费运行时长,个人仓库完全够用!

核心概念

在开始之前,我们需要了解几个核心概念:

1. Workflow(工作流)

一个完整的自动化流程,放在 .github/workflows 目录下。一个仓库可以包含多个工作流。

2. Event(事件)

触发工作流的事件,比如代码推送、Issue 创建、定时任务等。

3. Job(任务)

工作流中的执行单元,一个工作流可以包含多个 Job,它们默认并行执行。

4. Step(步骤)

每个 Job 包含多个 Step,可以是 Shell 命令或 Action。

5. Action(动作)

可重用的单元,GitHub 官方和社区提供了大量现成的 Action。

实战:自动测试 Python 项目

假设你有一个 Python 项目,每次 push 代码时都想自动运行测试。只需要在项目中创建以下文件:

mkdir -p .github/workflows
touch .github/workflows/test.yml

然后在 test.yml 中写入:

name: Python Test

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  test:
    runs-on: ubuntu-latest
    
    steps:
    - uses: actions/checkout@v4
    
    - name: Set up Python
      uses: actions/setup-python@v5
      with:
        python-version: '3.11'
    
    - name: Install dependencies
      run: |
        pip install -r requirements.txt
        pip install pytest
    
    - name: Run tests
      run: pytest

推送到 GitHub 后,每次代码变更都会自动触发测试!

实战:自动部署静态网站

如果你有静态博客或文档网站,可以用 GitHub Actions 自动部署到 GitHub Pages:

name: Deploy to GitHub Pages

on:
  push:
    branches: [ main ]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    
    - name: Setup Hugo
      uses: peaceiris/actions-hugo@v2
      with:
        hugo-version: 'latest'
        extended: true
    
    - name: Build
      run: hugo --minify
    
    - name: Deploy
      uses: peaceiris/actions-gh-pages@v3
      with:
        github_token: ${{ secrets.GITHUB_TOKEN }}
        publish_dir: ./public

实用技巧

1. 使用缓存加速构建

Python、Node.js 等项目的依赖安装通常很慢,可以使用缓存加速:

- name: Cache pip packages
  uses: actions/cache@v4
  with:
    path: ~/.cache/pip
    key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}

2. 定时任务

可以用 cron 语法设置定时执行:

on:
  schedule:
    - cron: '0 0 * * *'  # 每天午夜执行

3. 手动触发

添加 workflow_dispatch 可以手动触发工作流:

on:
  workflow_dispatch:
    inputs:
      environment:
        description: '部署环境'
        required: true
        default: 'staging'

总结

GitHub Actions 是一个强大的自动化工具,可以帮你:

  • 自动运行测试,确保代码质量
  • 自动部署项目,省去手动操作
  • 定时执行任务,如数据备份、报表生成
  • 自动检查代码格式和风格
"自动化是为了让机器做重复的事,让人做创造性的事。"

快去试试看吧,你会发现原来需要手动做的事情,现在都可以交给 GitHub Actions 自动完成!