Patch Odoo Ticket Gitea Action
Update an Odoo ticket via a FastAPI middleware whenever a Gitea Issue is created/updated/closed.
This action reads details from the issue event context and POSTs a JSON payload to your FastAPI endpoint at /api/v1/patch_gitea_odoo. The FastAPI service is responsible for talking to Odoo via JSON-RPC.
What it sends
The action builds a JSON array with a single object from the issue event:
[
{
"task_id": 123,
"title": "Issue Title",
"body": "Issue body/description",
"state": "open",
"author": "jdoe",
"assignees": ["alice", "bob"],
"labels": ["bug", "backend"],
"date_deadline": "2025-05-06"
}
]
task_id: from${{ gitea.event.issue.number }}title: from${{ gitea.event.issue.title }}body: from${{ gitea.event.issue.body }}state: from${{ gitea.event.issue.state }}("open" or "closed")author: from${{ gitea.event.issue.user.login }}assignees: from${{ join(gitea.event.issue.assignees.*.login, ',') }}(expanded and split)labels: from${{ join(gitea.event.issue.labels.*.name, ',') }}(expanded and split)date_deadline: from${{ gitea.event.issue.due_date }}if present
Inputs
base_url(required): Base URL of your FastAPI server, e.g.https://fastapi.example.com.
Usage
Trigger on the events you care about (edit, labeled, closed, etc.). Example:
name: Sync Odoo ticket
on:
issues:
types: [edited, closed, reopened, assigned, unassigned, labeled, unlabeled]
jobs:
patch-odoo:
runs-on: ubuntu-latest
steps:
- name: Send update to Odoo via FastAPI
uses: https://gitea.ethumada.com/gitea/patch-odoo-ticket
with:
base_url: ${{ vars.FASTAPI_BASE_URL }}
Secrets/variables:
- Set
FASTAPI_BASE_URLsecret to your FastAPI base URL.
FastAPI endpoint contract
- Method: POST
- URL:
{base_url}/api/v1/patch_gitea_odoo - Body: JSON array of one or more objects as above
- Return: 2xx on success, any body will be logged for debugging
Description
Languages
Go
79.7%
Dockerfile
20.3%