Dify插件可通过GitHub Actions实现自动构建、测试与部署。需配置GitHub仓库、Dockerfile、dify.yaml,设置DIFY_API_KEY等4项Secrets,并编写cd-dify-plugin.yml工作流,完成镜像构建、远程部署及容器启动验证。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要让Dify插件或服务在每次代码提交后自动构建、测试并部署到目标环境,避免手动上传、反复验证、环境不一致导致的线上故障。
准备GitHub仓库与Dify项目结构
确保你的Dify插件或后端服务代码已托管在GitHub公有或私有仓库中,根目录下存在明确的 Dockerfile 和 dify.yaml(或 docker-compose.yml 中定义了 Dify 服务依赖)。
若使用 Dify Cloud 自托管版本,确认 .env 文件中已剥离敏感配置(如 SECRET_KEY、DATABASE_URL),改用 GitHub Secrets 注入;【本地 .env 文件绝不可提交到仓库】。
在仓库根目录创建 .github/workflows/ 文件夹,这是 GitHub Actions 工作流的强制存放路径。
配置GitHub Secrets密钥
进入 GitHub 仓库 → Settings → Secrets and variables → Actions → New repository secret。
依次添加以下 4 项(名称必须完全一致,大小写敏感):
• DIFY_API_KEY:用于调用 Dify Admin API 的管理员密钥(需在 Dify 后台「系统设置 → API 密钥」生成)
• DIFY_BASE_URL:Dify 自托管服务的完整访问地址,含协议和端口,例如 https://dify.yourdomain.com
• SSH_PRIVATE_KEY:用于远程登录部署服务器的 PEM 格式私钥(需去除密码,可用 ssh-keygen -p -f key.pem 清空密码)
• SERVER_HOST:目标服务器 IP 或域名,例如 192.168.1.100
编写CI/CD工作流YAML文件
在 .github/workflows/cd-dify-plugin.yml 中粘贴以下内容:
name: Deploy Dify Plugin
on:
push:
branches: [main]
workflow_dispatch:
inputs:
env:
description: 'Target environment (staging/prod)'
required: true
default: 'staging'
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
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_TOKEN }}
- name: Build and push plugin image
uses: docker/build-push-action@v5
with:
context: .
file: ./Dockerfile
push: true
tags: ${{ secrets.DOCKER_USERNAME }}/dify-plugin:${{ github.sha }}
- name: Deploy to server via SSH
uses: appleboy/scp-action@v0.1.7
with:
host: ${{ secrets.SERVER_HOST }}
username: root
key: ${{ secrets.SSH_PRIVATE_KEY }}
source: "docker-compose.yml"
target: "/root/dify-deploy/"
- name: Run remote deploy script
uses: appleboy/ssh-action@v0.2.0
with:
host: ${{ secrets.SERVER_HOST }}
username: root
key: ${{ secrets.SSH_PRIVATE_KEY }}
script: |
cd /root/dify-deploy
export PLUGIN_IMAGE=${{ secrets.DOCKER_USERNAME }}/dify-plugin:${{ github.sha }}
docker-compose down
docker-compose up -d --force-recreate
验证部署是否生效
推送一次空提交触发流水线:git commit --allow-empty -m "trigger deploy" → git push。
进入 GitHub 仓库 → Actions 标签页,点击刚触发的 workflow 名称,观察各步骤绿色对勾是否全部出现。
登录目标服务器,执行 docker ps | grep dify-plugin,确认容器状态为 Up 且端口映射正常。
打开浏览器,访问 Dify 管理后台 → 「插件中心」→ 查看该插件是否显示为「已启用」且版本号与本次 github.sha 一致。











