refactor : refact payload structure and environment variables in main.go and action.yml to remove unused fields and utilize branch reference for task ID extraction

This commit is contained in:
Mandresy RABENJAHARISON 2025-08-21 14:17:08 +03:00
parent 51bd525a4f
commit 9918062492
3 changed files with 14 additions and 29 deletions

View File

@ -14,20 +14,14 @@ The action builds a JSON array with a single object from the issue event:
[ [
{ {
"task_id": 123, "task_id": 123,
"title": "Issue Title",
"body": "Issue body/description",
"state": "open", "state": "open",
"author": "jdoe",
"assignees": ["alice", "bob"], "assignees": ["alice", "bob"],
"labels": ["bug", "backend"],
"date_deadline": "2025-05-06" "date_deadline": "2025-05-06"
} }
] ]
``` ```
- `task_id`: from `${{ gitea.event.issue.number }}` - `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") - `state`: from `${{ gitea.event.issue.state }}` ("open" or "closed")
- `author`: from `${{ gitea.event.issue.user.login }}` - `author`: from `${{ gitea.event.issue.user.login }}`
- `assignees`: from `${{ join(gitea.event.issue.assignees.*.login, ',') }}` (expanded and split) - `assignees`: from `${{ join(gitea.event.issue.assignees.*.login, ',') }}` (expanded and split)

View File

@ -16,11 +16,7 @@ runs:
image: 'Dockerfile' image: 'Dockerfile'
env: env:
BASE_URL: ${{ inputs.base_url }} BASE_URL: ${{ inputs.base_url }}
ISSUE_NUMBER: ${{ gitea.event.issue.number }} BRANCH_REF: ${{ gitea.event.issue.ref }}
ISSUE_TITLE: ${{ gitea.event.issue.title }}
ISSUE_BODY: ${{ gitea.event.issue.body }}
ISSUE_STATE: ${{ gitea.event.issue.state }} ISSUE_STATE: ${{ gitea.event.issue.state }}
ISSUE_AUTHOR: ${{ gitea.event.issue.user.login }}
ISSUE_ASSIGNEES: ${{ join(gitea.event.issue.assignees.*.login, ',') }} ISSUE_ASSIGNEES: ${{ join(gitea.event.issue.assignees.*.login, ',') }}
ISSUE_LABELS: ${{ join(gitea.event.issue.labels.*.name, ',') }}
ISSUE_DUE_DATE: ${{ gitea.event.issue.due_date }} ISSUE_DUE_DATE: ${{ gitea.event.issue.due_date }}

31
main.go
View File

@ -13,12 +13,8 @@ import (
type Payload struct { type Payload struct {
TaskID int64 `json:"task_id"` TaskID int64 `json:"task_id"`
Title string `json:"title"`
Body string `json:"body"`
State string `json:"state"` State string `json:"state"`
Author string `json:"author"`
Assignees []string `json:"assignees"` Assignees []string `json:"assignees"`
Labels []string `json:"labels"`
DueDate string `json:"date_deadline,omitempty"` DueDate string `json:"date_deadline,omitempty"`
} }
@ -54,29 +50,28 @@ func main() {
logger := log.New(io.MultiWriter(os.Stdout, logFile), "", log.LstdFlags) logger := log.New(io.MultiWriter(os.Stdout, logFile), "", log.LstdFlags)
// Build payload from env // Build payload from env
issueNumber := os.Getenv("ISSUE_NUMBER")
issueTitle := os.Getenv("ISSUE_TITLE")
issueBody := os.Getenv("ISSUE_BODY")
issueState := os.Getenv("ISSUE_STATE") issueState := os.Getenv("ISSUE_STATE")
issueAuthor := os.Getenv("ISSUE_AUTHOR")
issueAssignees := splitCSV(os.Getenv("ISSUE_ASSIGNEES")) issueAssignees := splitCSV(os.Getenv("ISSUE_ASSIGNEES"))
issueLabels := splitCSV(os.Getenv("ISSUE_LABELS"))
issueDueDate := os.Getenv("ISSUE_DUE_DATE") issueDueDate := os.Getenv("ISSUE_DUE_DATE")
branchRef := os.Getenv("BRANCH_REF")
var taskID int64 var odooTicketNumber int64
if issueNumber != "" { if branchRef != "" {
// Best-effort parse; if it fails, taskID remains 0 // Expect format: <prefix>/ticket-OdooTicketNumber
fmt.Sscanf(issueNumber, "%d", &taskID) parts := strings.Split(branchRef, "/")
for _, part := range parts {
if strings.HasPrefix(part, "ticket-") {
ticketStr := strings.TrimPrefix(part, "ticket-")
fmt.Sscanf(ticketStr, "%d", &odooTicketNumber)
break
}
}
} }
payload := Payload{ payload := Payload{
TaskID: taskID, TaskID: odooTicketNumber,
Title: issueTitle,
Body: issueBody,
State: issueState, State: issueState,
Author: issueAuthor,
Assignees: issueAssignees, Assignees: issueAssignees,
Labels: issueLabels,
DueDate: issueDueDate, DueDate: issueDueDate,
} }