跳至内容

Odoo 自动化部署教程:基于 GitHub Actions

2026年10月20日 由
Odoo 自动化部署教程:基于 GitHub Actions
中国 Odoo, 苏州远鼎

                               使用GitHub Actions部署Odoo分步指南

      手动部署Odoo是很多开发人员日常需要反复执行的任务:通过SSH连接服务器、拉取最新代码、重启服务、更新模块,然后等待变更生效。这个过程并不快捷,当处理多个自定义模块时,还很容易出错。GitHub Actions可以解决这两类问题,实现部署流程自动化,并为你的Odoo项目充当CI(持续集成)工具。对于需要服务器权限的私有模块部署,它是理想方案:每次你向GitHub提交代码,Actions就可以触发,将变更自动部署至服务器。

在本文中,你将学习如何使用GitHub Actions为Odoo项目搭建这样一套CI/CD(持续集成/持续部署)工作流。整个流程包含以下步骤:

  • 准备可用于GitHub Actions的项目代码仓库
  • 在GitHub中将服务器凭证存储为机密变量
  • 通过SSH将自定义模块部署至服务器
  • 每次提交代码时自动重启Odoo服务器

读完本文,你只需向GitHub推送提交记录,就能快速、可靠地完成Odoo部署。下面开始讲解。

前置条件

开始之前,请确认已准备好以下内容:

  • 托管在GitHub上的Odoo项目仓库,仓库中存放自定义插件(custom_addons/文件夹)。
  • 一台部署服务器:VPS或云实例(示例使用Ubuntu系统),服务器上已安装并运行Odoo,原生部署或Docker部署均可,并且拥有服务器SSH访问权限。
  • Git与YAML的基础知识。

步骤1:规划Odoo仓库目录结构

整洁的仓库结构会大幅简化自动化流程。这种部署方式最简单的目录布局,就是将仓库本身作为插件文件夹:

custom_addons/ <-- 这就是你的Git仓库

├── sales_extension/

│   ├── __manifest__.py

│   └── ...

├── inventory_reports/

│   ├── __manifest__.py

│   └── ...

├── requirements.txt

├── .github/

│   └── workflows/

│       └── deploy.yml

└── README.md

要点说明: 每个自定义模块放在仓库根目录,这样仓库可以直接克隆到服务器的 /opt/odoo/custom_addons 路径,该路径与odoo.conf里的addons_path配置保持一致。

在requirements.txt中列出所有额外Python依赖包。

工作流配置文件存放于 .github/workflows/。

GitHub会自动识别放置在此目录下的所有yml文件。

步骤2:在GitHub仓库添加机密变量

GitHub机密变量会加密保存敏感信息,避免密钥写入代码库。进入你的仓库,按路径操作: 设置 > 机密和变量 > Actions > 新建仓库机密

添加以下变量:

  • SSH_PRIVATE_KEY — gh_actions_key私钥文件内容
  • SSH_HOST — 服务器IP或主机名
  • SSH_USER — deployer

你还需要在服务器 /opt/odoo/custom_addons 目录一次性克隆仓库,并设置远程地址,实现免账号密码拉取代码(为此生成全新的GitHub个人访问令牌):

git remote set-url origin https://<your_token>@github.com/<username>/<repository>.git

步骤3:添加部署任务

创建 .github/workflows/deploy.yml。该任务在向main分支推送代码时触发:

name: Deploy Odoo

on:

  push:

    branches:

      - main

jobs:

  deploy:

    runs-on: ubuntu-latest

    steps:

      - name: Deploy via SSH

        uses: appleboy/ssh-action@v1.2.2

        with:

          host: ${{ secrets.SSH_HOST }}

          username: ${{ secrets.SSH_USER }}

          key: ${{ secrets.SSH_PRIVATE_KEY }}

          script: |

            set -e

            cd /opt/odoo/custom_addons

            git pull origin main

            sudo systemctl restart odoo

以上是GitHub工作流示例:仅用一个YAML文件,就能把以往繁琐、容易出错的流程转为自动化流水线,每次代码推送都会自动部署到服务器并重载服务。

 

Odoo 自动化部署教程:基于 GitHub Actions
中国 Odoo, 苏州远鼎 2026年10月20日
标签
存档