瀏覽代碼

README update

Krisztian Mezei 3 周之前
父節點
當前提交
c5db43aeed
共有 1 個文件被更改,包括 123 次插入30 次删除
  1. 123 30
      README.md

+ 123 - 30
README.md

@@ -1,13 +1,12 @@
-
 # Git hook – Jira automatikus frissítés
 
 ## Mi ez és mire jó?
 
-Amikor fejlesztés közben `git pull` parancsot futtatunk, a beérkező commitok üzenetéből automatikusan kiszedi a Jira ticket azonosítókat, és kilistázza őket a konzolon.
+Amikor fejlesztés közben `git pull` parancsot futtatunk, a beérkező commitok üzenetéből automatikusan kiszedi a Jira ticket azonosítókat, beállítja a **Fix Version** mezőt, és átmozgatja a ticketeket a **kiadásra_kész** oszlopba.
 
 A commit üzenetek formátuma:
 ```
-BBUSAPPBE-496 Modulok összeszinkronizálása - Staging környezetben
+TP-1 Modulok összeszinkronizálása - Staging környezetben
 ```
 
 ---
@@ -16,11 +15,14 @@ BBUSAPPBE-496 Modulok összeszinkronizálása - Staging környezetben
 
 A Git **hook** egy script, amely automatikusan lefut egy Git művelet előtt vagy után. Ebben az esetben a `post-merge` hookot használjuk, amely **minden `git pull` után** lefut.
 
-A script három lépésben dolgozik:
+A script lépései:
 
-1. **Lekéri az új commitok üzeneteit** – csak azokat, amelyek a pull során érkeztek be
-2. **Kiszedi a Jira ticket ID-kat** – nagybetűk + kötőjel + szám formátum alapján (pl. `BBUSAPPBE-496`)
-3. **Kiírja a konzolra** az érintett ticketeket
+1. **Beolvassa a verziószámot** a `versions.txt` fájlból
+2. **Létrehozza a verziót** a Jirában ha még nem létezik
+3. **Lekéri az új commitok üzeneteit** – csak azokat, amelyek a pull során érkeztek be
+4. **Kiszedi a Jira ticket ID-kat** – a TP projekt ticket azonosítóit (pl. `TP-1`)
+5. **Beállítja a Fix Version mezőt** minden érintett ticketen
+6. **Átmozgatja a ticketeket** a `kiadásra_kész` oszlopba
 
 ---
 
@@ -29,26 +31,94 @@ A script három lépésben dolgozik:
 ```bash
 #!/bin/bash
 
-TICKETS=$(git log ORIG_HEAD..HEAD --pretty="%s" | grep -oE '[A-Z]+-[0-9]+' | sort -u)
+JIRA_BASE="https://urbanms.atlassian.net"
+JIRA_USER="mezei.krisztian@urbanms.hu"
+JIRA_PROJECT="TP"
+JIRA_PROJECT_ID="10138"
+AUTH="-u ${JIRA_USER}:${JIRA_API_TOKEN}"
 
-if [ -z "$TICKETS" ]; then
-  echo "Nem találtam Jira ticket ID-t a commitokban."
+# Verziószám beolvasása
+VERSIONS_FILE="$(git rev-parse --show-toplevel)/versions.txt"
+
+if [ ! -f "$VERSIONS_FILE" ]; then
+  echo "⚠️  Nem található: versions.txt"
+  exit 1
+fi
+
+VERSION=$(cat "$VERSIONS_FILE" | tr -d '[:space:]')
+echo "📦 Verzió: $VERSION"
+
+# Verzió létrehozása ha még nem létezik
+echo "🔧 Verzió ellenőrzése a Jirában..."
+CREATE_RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" $AUTH \
+  -X POST -H "Content-Type: application/json" \
+  "${JIRA_BASE}/rest/api/3/version" \
+  -d "{
+    \"name\": \"${VERSION}\",
+    \"projectId\": ${JIRA_PROJECT_ID},
+    \"released\": false
+  }")
+
+if [ "$CREATE_RESPONSE" = "201" ]; then
+  echo "  ✅ Verzió létrehozva: $VERSION"
+elif [ "$CREATE_RESPONSE" = "409" ]; then
+  echo "  ℹ️  Verzió már létezik: $VERSION"
 else
-  echo "Érintett Jira ticketek:"
-  for TICKET in $TICKETS; do
-    echo "  - $TICKET"
-  done
+  echo "  ⚠️  Verzió létrehozás hiba ($CREATE_RESPONSE)"
+fi
+
+# Ticket ID-k kiszedése (csak TP projekt)
+TICKETS=$(git log ORIG_HEAD..HEAD --pretty="%s" | grep -oE 'TP-[0-9]+' | sort -u)
+
+if [ -z "$TICKETS" ]; then
+  echo "Nem találtam TP ticket ID-t a commitokban."
+  exit 0
 fi
+
+echo "Érintett Jira ticketek:"
+for TICKET in $TICKETS; do
+  echo "  - $TICKET"
+
+  # Fix Version beállítása
+  curl -s -o /dev/null $AUTH \
+    -X PUT -H "Content-Type: application/json" \
+    "${JIRA_BASE}/rest/api/3/issue/${TICKET}" \
+    -d "{\"fields\": {\"fixVersions\": [{\"name\": \"${VERSION}\"}]}}"
+
+  # Átállítás → kiadásra_kész (transition ID: 51)
+  RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" $AUTH \
+    -X POST -H "Content-Type: application/json" \
+    "${JIRA_BASE}/rest/api/3/issue/${TICKET}/transitions" \
+    -d '{"transition": {"id": "51"}}')
+
+  if [ "$RESPONSE" = "204" ]; then
+    echo "    ✅ Fix Version: $VERSION → kiadásra_kész"
+  else
+    echo "    ⚠️  Hiba ($RESPONSE)"
+  fi
+done
+```
+
+---
+
+## A `versions.txt` fájl
+
+A repo gyökerében legyen, és csak a verziószámot tartalmazza:
+```
+v1.1.1
 ```
 
-### A parancsok magyarázata
+---
+
+## Transition ID-k (TP projekt)
 
-| Parancs | Mit csinál |
+| ID | Kanban oszlop |
 |---|---|
-| `git log ORIG_HEAD..HEAD` | A pull által behozott új commitokat listázza |
-| `--pretty="%s"` | Csak a commit üzenetét adja vissza |
-| `grep -oE '[A-Z]+-[0-9]+'` | Megkeresi a Jira ticket formátumú szövegeket |
-| `sort -u` | Rendezi és eltávolítja a duplikátumokat |
+| `11` | Backlog |
+| `21` | Selected for Development |
+| `31` | In Progress |
+| `51` | kiadásra_kész |
+| `41` | Done |
 
 ---
 
@@ -86,11 +156,35 @@ chmod +x .githooks/post-merge
 git config core.hooksPath .githooks
 ```
 
-### 6. Ellenőrzés
+### 6. API token létrehozása
+
+1. Menj ide: https://id.atlassian.com/manage-profile/security/api-tokens
+2. Kattints a **Create API token** gombra
+3. Adj meg egy nevet (pl. `git-hook`)
+4. Kattints a **Create** gombra
+5. **Másold ki azonnal** – később nem lesz látható!
+
+> ⚠️ **Fontos:** Az Atlassian API token **meghatározott ideig érvényes** (alapértelmezetten 1 év), utána lejár. Ha a hook hirtelen `401` vagy `403` hibával tér vissza, valószínűleg lejárt a token – ilyenkor új tokent kell generálni és frissíteni a `.bashrc`-ben.
+
+### 7. API token beállítása
+
+```bash
+echo 'export JIRA_API_TOKEN="ide_a_tokened"' >> ~/.bashrc
+source ~/.bashrc
+```
+
+Token lejártakor csak frissítsd az értéket:
+```bash
+nano ~/.bashrc   # keresd meg a JIRA_API_TOKEN sort és írd felül
+source ~/.bashrc
+```
+
+### 7. Ellenőrzés
 
 ```bash
 git config core.hooksPath   # → .githooks
 ls -l .githooks/             # → post-merge látható
+echo $JIRA_API_TOKEN         # → token értéke
 ```
 
 ---
@@ -99,7 +193,7 @@ ls -l .githooks/             # → post-merge látható
 
 ```bash
 # Teszt commit létrehozása
-git commit --allow-empty -m "BBUSAPPBE-506 teszt commit"
+git commit --allow-empty -m "TP-1 teszt commit"
 
 # Pull futtatása (hook automatikusan lefut)
 git pull
@@ -107,8 +201,12 @@ git pull
 
 Várt eredmény a konzolon:
 ```
+📦 Verzió: v1.1.1
+🔧 Verzió ellenőrzése a Jirában...
+  ℹ️  Verzió már létezik: v1.1.1
 Érintett Jira ticketek:
-  - BBUSAPPBE-506
+  - TP-1
+    ✅ Fix Version: v1.1.1 → kiadásra_kész
 ```
 
 ---
@@ -116,7 +214,7 @@ Várt eredmény a konzolon:
 ## Fontos tudnivalók
 
 - A `.githooks` mappa **nem szinkronizálódik** automatikusan a remote repóval – minden fejlesztőnek egyenként kell beállítania
-- Ha a `.githooks` mappát a repóba szeretnéd verziókövetni (hogy a csapat könnyen átvehesse), add hozzá a commithoz:
+- Ha a `.githooks` mappát a repóba szeretnéd verziókövetni, add hozzá a commithoz:
   ```bash
   git add .githooks/
   git commit -m "Git hookok hozzáadása"
@@ -125,9 +223,4 @@ Várt eredmény a konzolon:
   ```bash
   git config core.hooksPath .githooks
   ```
-
----
-
-## Következő lépés (opcionális)
-
-A script bővíthető úgy, hogy ne csak kiírja a ticketeket, hanem automatikusan **frissítse is a Jirát** – például átmozgassa a ticketeket a „Kiadásra" oszlopba, vagy beállítsa a Fix Version mezőt. Ehhez Jira API token szükséges.
+- A **kötelező mezők** (pl. custom field) API-n keresztül is ki kell tölteni, különben a ticket frissítés hibával tér vissza