为 GitHub Actions 构建智能体
最后更新 查看 Markdown 源文件
在 GitHub Actions 中构建和运行 Flue 智能体。本指南涵盖在 CI 流水线中构建、测试和部署 Flue 智能体。
先决条件
你需要:
- 一个包含 Flue 项目的 GitHub 仓库
- 你的模型 provider key(例如
ANTHROPIC_API_KEY)
基本工作流
创建 .github/workflows/deploy.yml:
name: Deploy Flue Agents
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '22'
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Build
run: npm run build
env:
NODE_ENV: production
- name: Deploy
if: github.ref == 'refs/heads/main'
run: |
# 你的部署命令在这里
# 例如:npx wrangler deploy 或 fly deploy使用环境密钥
在 GitHub 仓库设置中添加你的密钥:
- 转到你的仓库 → Settings → Secrets and variables → Actions
- 点击 “New repository secret”
- 添加你的
ANTHROPIC_API_KEY
在工作流中使用它:
- name: Build
run: npm run build
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
NODE_ENV: production
Docker 构建和推送
使用 Docker 构建并推送到容器注册表:
name: Docker Build and Push
on:
push:
branches: [main]
jobs:
docker:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build and push
uses: docker/build-push-action@v5
with:
context: .
push: true
tags: yourusername/flue-agents:latest部署到 Cloudflare
name: Deploy to Cloudflare Workers
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '22'
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Build
run: npm run build
- name: Deploy to Cloudflare Workers
uses: cloudflare/wrangler-action@v3
with:
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
command: deploy部署到 Fly.io
name: Deploy to Fly.io
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Fly CLI
uses: superfly/flyctl-actions/setup-flyctl@master
- name: Deploy to Fly.io
run: flyctl deploy --remote-only
env:
FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }}运行测试
添加测试步骤:
- name: Run tests
run: npm test
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
缓存依赖
使用 npm 缓存加速构建:
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '22'
cache: 'npm' # 自动缓存 npm 依赖
对于更高级的缓存:
- name: Cache node modules
uses: actions/cache@v4
with:
path: node_modules
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
矩阵构建
测试多个 Node.js 版本:
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18, 20, 22]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- name: Install dependencies
run: npm ci
- name: Run tests
run: npm test
最佳实践
- 使用环境密钥:永远不要在工作流文件中硬编码 API key。
- 缓存依赖:使用
actions/cache或setup-node的缓存选项。 - 限制权限:使用最小权限原则。
- 使用特定版本:为 actions 使用特定版本(例如
@v4)而不是@master。 - 并行化:尽可能并行运行独立的作业。
参考资料
- GitHub Actions 文档 — 官方 GitHub Actions 文档。
- GitHub Actions 最佳实践 — 工作流语法和最佳实践。
- Docker 部署 — 底层 Docker 镜像的详细信息。