什么是 GitHub Actions
GitHub Actions 是 GitHub 提供的 CI/CD(持续集成/持续部署)工具。它可以让你在代码推送后自动运行测试、构建项目、部署上线,无需手动操作。
核心概念
- Workflow(工作流) – 自动化任务的配置文件
- Job(任务) – 工作流中的具体步骤
- Step(步骤) – 每个任务中的具体操作
- Action(动作) – 可复用的工作单元
- Runner – 执行任务的服务器
快速开始
创建第一个工作流
- 在仓库中创建
.github/workflows目录 - 创建
ci.yml文件 - 提交代码,GitHub 自动运行工作流
基础工作流示例
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- run: npm ci
- run: npm test
Node.js 项目部署
name: Node.js Deploy
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install dependencies
run: npm ci
- name: Build
run: npm run build
- name: Deploy to server
uses: appleboy/ssh-action@v1.0.0
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.SSH_KEY }}
script: |
cd /var/www/app
git pull
npm ci
npm run build
pm2 restart app
Docker 部署
name: Docker Deploy
on:
push:
branches: [main]
jobs:
build-and-push:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build Docker image
run: docker build -t myapp:${{ github.sha }} .
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Push to Hub
run: |
docker tag myapp:${{ github.sha }} myusername/myapp:latest
docker push myusername/myapp:latest
- name: Deploy to server
run: ssh user@server "docker pull myusername/myapp && docker-compose up -d"
静态网站部署
name: Deploy Static Site
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Hugo
uses: peaceiris/actions-hugo@v3
with:
hugo-version: '0.123.0'
- name: Build
run: hugo
- name: Deploy
uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./public
加密 Secrets
在 Settings → Secrets 中添加敏感信息:
- SSH_KEY – 服务器 SSH 私钥
- HOST – 服务器地址
- USERNAME – 服务器用户名
- DOCKER_PASSWORD – Docker Hub 密码
常用 Action 推荐
- actions/checkout@v4 – 检出代码
- actions/setup-node@v4 – Node.js 环境
- actions/setup-python@v5 – Python 环境
- appleboy/ssh-action@v1 – SSH 远程执行
- peaceiris/actions-hugo@v3 – Hugo 静态网站
- peaceiris/actions-gh-pages@v4 – GitHub Pages 部署
- docker/login-action@v3 – Docker 登录
总结
GitHub Actions 是提升开发效率的神器。通过自动化工作流,你可以实现代码推送后自动测试、构建、部署,省去大量手动操作时间。建议每个项目都配置 CI/CD 工作流。