Gitea Actions CI/CD 教程

Gitea Actions 是 Gitea 内置的 CI/CD 系统,兼容 GitHub Actions 的 Workflow 语法,可以直接使用大量现有的 GitHub Actions。通过 Gitea Actions,你可以在搬瓦工 VPS 上实现代码提交后自动构建、测试和部署,无需依赖外部 CI/CD 服务。本教程假设你已经安装了 Gitea

一、启用 Gitea Actions

编辑 Gitea 配置文件 app.ini,启用 Actions 功能:

# 编辑 Gitea 配置
cat >> /opt/gitea/data/gitea/conf/app.ini <<'EOF'

[actions]
ENABLED = true
DEFAULT_ACTIONS_URL = github
EOF

# 重启 Gitea
docker restart gitea

二、安装 Act Runner

Gitea Actions 需要 Runner 来执行工作流任务。Act Runner 是 Gitea 官方的 Runner 实现:

2.1 下载 Act Runner

wget https://gitea.com/gitea/act_runner/releases/latest/download/act_runner-linux-amd64 -O /usr/local/bin/act_runner
chmod +x /usr/local/bin/act_runner
act_runner --version

2.2 注册 Runner

在 Gitea 管理界面中获取 Runner 注册令牌:进入"站点管理" -> "Runners",复制注册令牌。然后注册 Runner:

act_runner register \
  --instance https://git.your-domain.com \
  --token YOUR_REGISTRATION_TOKEN \
  --name vps-runner \
  --labels ubuntu-latest:docker://node:20-bookworm,ubuntu-22.04:docker://ubuntu:22.04

2.3 使用 systemd 管理 Runner

cat > /etc/systemd/system/act-runner.service <<'EOF'
[Unit]
Description=Gitea Act Runner
After=network.target docker.service

[Service]
Type=simple
User=root
WorkingDirectory=/opt/act-runner
ExecStart=/usr/local/bin/act_runner daemon
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF

mkdir -p /opt/act-runner
cp .runner /opt/act-runner/
systemctl daemon-reload
systemctl enable act-runner
systemctl start act-runner

三、编写 Workflow

在 Git 仓库中创建 .gitea/workflows/ 目录,添加 YAML 工作流文件。

3.1 基础构建流程

# .gitea/workflows/build.yml
name: Build and Test
on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '20'

      - name: Install dependencies
        run: npm ci

      - name: Run tests
        run: npm test

      - name: Build project
        run: npm run build

3.2 Docker 镜像构建与推送

# .gitea/workflows/docker.yml
name: Build Docker Image
on:
  push:
    tags: ['v*']

jobs:
  docker:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Login to Registry
        uses: docker/login-action@v3
        with:
          registry: git.your-domain.com
          username: ${{ secrets.REGISTRY_USER }}
          password: ${{ secrets.REGISTRY_PASS }}

      - name: Build and Push
        uses: docker/build-push-action@v5
        with:
          context: .
          push: true
          tags: git.your-domain.com/${{ github.repository }}:${{ github.ref_name }}

3.3 自动部署到服务器

# .gitea/workflows/deploy.yml
name: Deploy
on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Build
        run: |
          npm ci
          npm run build

      - name: Deploy via SSH
        uses: appleboy/ssh-action@v1
        with:
          host: ${{ secrets.DEPLOY_HOST }}
          username: ${{ secrets.DEPLOY_USER }}
          key: ${{ secrets.DEPLOY_KEY }}
          script: |
            cd /opt/myapp
            git pull origin main
            npm ci --production
            pm2 restart myapp

四、管理 Secrets

在 Gitea 仓库设置的"Secrets"页面中添加敏感变量,在 Workflow 中通过 ${{ secrets.NAME }} 引用。常用 Secrets 包括:

  • 部署服务器的 SSH 密钥。
  • 容器镜像仓库的登录凭据。
  • API Token 和密码。

五、使用 Docker Runner(推荐)

mkdir -p /opt/act-runner && cd /opt/act-runner

cat > docker-compose.yml <<'EOF'
version: '3.8'

services:
  runner:
    image: gitea/act_runner:latest
    container_name: act-runner
    restart: always
    volumes:
      - ./data:/data
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - GITEA_INSTANCE_URL=https://git.your-domain.com
      - GITEA_RUNNER_REGISTRATION_TOKEN=YOUR_TOKEN
      - GITEA_RUNNER_NAME=docker-runner
EOF

docker compose up -d

六、多语言项目示例

6.1 Go 项目

name: Go CI
on: [push]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-go@v5
        with:
          go-version: '1.22'
      - run: go build ./...
      - run: go test ./...

6.2 Python 项目

name: Python CI
on: [push]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: '3.12'
      - run: pip install -r requirements.txt
      - run: pytest

七、常见问题

Runner 显示离线

检查 Runner 服务是否正常运行:

systemctl status act-runner
journalctl -u act-runner -f

Action 下载失败

确保 VPS 能正常访问 GitHub(Gitea Actions 默认从 GitHub 下载 Action)。

总结

Gitea Actions 提供了与 GitHub Actions 兼容的 CI/CD 能力,让你在搬瓦工 VPS 上拥有完整的代码托管和自动化流水线。结合 Act Runner 可以实现高效的持续集成与部署。选购搬瓦工 VPS 请参考 全部方案,购买时使用优惠码 NODESEEK2026 可享受 6.77% 折扣。相关教程:Act Runner 配置Woodpecker 集成

关于本站

搬瓦工VPS中文网(bwgvps.com)是非官方中文信息站,整理搬瓦工的方案、优惠和教程。我们不销售主机,不提供技术服务。

新手必读
搬瓦工优惠码

NODESEEK2026(优惠 6.77%)

购买时填入即可抵扣。