GitHub Actions 自动化部署教程 – 从推送代码到自动上线

什么是 GitHub Actions

GitHub Actions 是 GitHub 提供的 CI/CD(持续集成/持续部署)工具。它可以让你在代码推送后自动运行测试、构建项目、部署上线,无需手动操作。

核心概念

  • Workflow(工作流) – 自动化任务的配置文件
  • Job(任务) – 工作流中的具体步骤
  • Step(步骤) – 每个任务中的具体操作
  • Action(动作) – 可复用的工作单元
  • Runner – 执行任务的服务器

快速开始

创建第一个工作流

  1. 在仓库中创建 .github/workflows 目录
  2. 创建 ci.yml 文件
  3. 提交代码,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 工作流。

☁️
阿里云 推荐

想要稳定快速的服务器?推荐使用阿里云 ECS,新用户首年仅需百余元。

💰 佣金比例:7-15%
立即查看 →

Comments

No comments yet. Why don’t you start the discussion?

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注