|
|
3 hafta önce | |
|---|---|---|
| README.md | 3 hafta önce | |
| teszt.txt | 3 hafta önce | |
| versions.txt | 3 hafta önce |
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:
TP-1 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 lépései:
versions.txt fájlbólTP-1)kiadásra_kész oszlopba#!/bin/bash
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}"
# 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 " ⚠️ 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
versions.txt fájlA repo gyökerében legyen, és csak a verziószámot tartalmazza:
v1.1.1
| ID | Kanban oszlop |
|---|---|
11 |
Backlog |
21 |
Selected for Development |
31 |
In Progress |
51 |
kiadásra_kész |
41 |
Done |
cd mezeik_teszt
.githooks mappátmkdir -p .githooks
nano .githooks/post-merge
Illeszd be a fenti scriptet, majd mentés: Ctrl+O, kilépés: Ctrl+X
chmod +x .githooks/post-merge
git config core.hooksPath .githooks
git-hook)⚠️ Fontos: Az Atlassian API token meghatározott ideig érvényes (alapértelmezetten 1 év), utána lejár. Ha a hook hirtelen
401vagy403hibával tér vissza, valószínűleg lejárt a token – ilyenkor új tokent kell generálni és frissíteni a.bashrc-ben.
echo 'export JIRA_API_TOKEN="ide_a_tokened"' >> ~/.bashrc
source ~/.bashrc
Token lejártakor csak frissítsd az értéket:
nano ~/.bashrc # keresd meg a JIRA_API_TOKEN sort és írd felül
source ~/.bashrc
git config core.hooksPath # → .githooks
ls -l .githooks/ # → post-merge látható
echo $JIRA_API_TOKEN # → token értéke
# Teszt commit létrehozása
git commit --allow-empty -m "TP-1 teszt commit"
# Pull futtatása (hook automatikusan lefut)
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:
- TP-1
✅ Fix Version: v1.1.1 → kiadásra_kész
.githooks mappa nem szinkronizálódik automatikusan a remote repóval – minden fejlesztőnek egyenként kell beállítaniaHa a .githooks mappát a repóba szeretnéd verziókövetni, add hozzá a commithoz:
git add .githooks/
git commit -m "Git hookok hozzáadása"
Ezután minden fejlesztő csak ennyit futtat a klónozás után:
git config core.hooksPath .githooks
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