Files
admrene 821486e2a0 feat(jira): auf REST API v2 umgestellt und Ticket-Schließung erweitert
- Jira Core API-Aufrufe von `rest/api/3` auf `rest/api/2` umgestellt
- Ticket-Schließung um JQL-basierte Selektion erweitert:
  - `JIRA_CLOSE_JQL`
  - `JIRA_CLOSE_JQL_MAX_RESULTS` (Default: 100)
- Kombination aus expliziten Keys und per JQL gefundenen Keys implementiert (dedupliziert)
- Optionales Setzen der Resolution beim Transition-Call ergänzt:
  - `JIRA_CLOSE_RESOLUTION_NAME`
- Workflow-Logging für Close-JQL, gefundene Tickets und Resolution erweitert
- Config/Help um neue Close-Parameter ergänzt
- `.env.example` und README mit neuer Konfiguration aktualisiert
- TeamCity-Skripte (`run-workflow.sh`, `run-workflow.ps1`) um neue ENV-Variablen ergänzt
2026-03-24 08:20:25 +00:00

131 lines
3.8 KiB
Markdown

# Jira Workflow Automation (NPM + Docker + TeamCity)
Dieses Projekt automatisiert folgenden Ablauf:
1. Letzte Jira Tickets anhand einer JQL abfragen.
2. Zusammenfassung erzeugen (Status-Verteilung + Ticketliste).
3. Neues Jira Ticket in einem anderen Projekt/Board erstellen.
4. Optional Xray/Sonar Links und Loesungsversion in den Report aufnehmen.
5. Optional eine Atlassian Wiki/Confluence Seite erzeugen.
6. HTML-Report erzeugen und optional per E-Mail versenden.
## Voraussetzungen
- Node.js 20+
- Docker
- Jira Cloud API Token
- Optional: SMTP Zugangsdaten fuer Mailversand
## Lokaler Start
```bash
npm install
cp .env.example .env
npm run dry-run
```
Wenn alles passt:
```bash
npm start
```
## Wichtige Umgebungsvariablen
Pflicht:
- `JIRA_BASE_URL`
- `JIRA_USER_EMAIL`
- `JIRA_API_TOKEN`
- `JIRA_TARGET_PROJECT_KEY` oder `JIRA_TARGET_BOARD_ID`
Empfohlen:
- `JIRA_SOURCE_JQL` (z. B. `project = SRC ORDER BY updated DESC`)
- `JIRA_SOURCE_MAX_RESULTS` (Default: `10`)
- `JIRA_TARGET_ISSUE_TYPE` (Default: `Task`)
- `JIRA_TARGET_SUMMARY_PREFIX` (Default: `Automatischer Jira Report`)
- `JIRA_TARGET_LABELS` (CSV)
- `SOLUTION_VERSION` (setzt auch `fixVersions` im Jira Ticket)
- `XRAY_REPORT_URL` (optional)
- `SONAR_REPORT_URL` (optional)
- `JIRA_DRY_RUN` (`true`/`false`)
- `OUTPUT_HTML_PATH` (Default: `report-output/report.html`)
- `JIRA_CLOSE_ISSUE_KEYS` (CSV, optional; z. B. `ABC-1,ABC-2`)
- `JIRA_CLOSE_JQL` (optional; Tickets fuer Schliessung per JQL ermitteln)
- `JIRA_CLOSE_JQL_MAX_RESULTS` (optional; Default: `100`)
- `JIRA_CLOSE_ALLOWED_STATUSES` (CSV, optional; z. B. `Done,Resolved`)
- `JIRA_CLOSE_TRANSITION_NAME` (optional; Default: `Geschlossen`)
- `JIRA_CLOSE_RESOLUTION_NAME` (optional; z. B. `Erledigt`)
Atlassian Wiki / Confluence optional:
- `ATLASSIAN_WIKI_ENABLED` (`true`/`false`, Default: `false`)
- `ATLASSIAN_WIKI_SPACE_KEY` (Confluence Space Key, Pflicht wenn aktiviert)
- `ATLASSIAN_WIKI_PARENT_PAGE_ID` (optional)
- `ATLASSIAN_WIKI_TITLE_PREFIX` (Default: `Automatischer Jira Wiki Report`)
- `ATLASSIAN_WIKI_BASE_URL` (optional, Default: `JIRA_BASE_URL`)
- `ATLASSIAN_WIKI_USER_EMAIL` (optional, Default: `JIRA_USER_EMAIL`)
- `ATLASSIAN_WIKI_API_TOKEN` (optional, Default: `JIRA_API_TOKEN`)
SMTP optional:
- `SMTP_ENABLED=true`
- `SMTP_HOST`, `SMTP_PORT`, `SMTP_SECURE`
- `SMTP_USER`, `SMTP_PASS`
- `SMTP_FROM`, `SMTP_TO`
- `SMTP_SUBJECT_PREFIX`
## Docker Nutzung
Image bauen:
```bash
docker build -t its-workflow-npm:local .
```
Container starten:
```bash
docker run --rm --env-file .env -v "$(pwd)/report-output:/opt/app-root/src/report-output" its-workflow-npm:local
```
## TeamCity Integration
Empfohlene Build Steps:
1. `Command Line` (Linux Agent):
- Script: `sh teamcity/run-workflow.sh`
2. Alternativ `PowerShell` (Windows Agent):
- Script file: `teamcity/run-workflow.ps1`
Lege in TeamCity die Variablen als Parameter vom Typ `env.*` an, z. B.:
- `env.JIRA_BASE_URL`
- `env.JIRA_USER_EMAIL`
- `env.JIRA_API_TOKEN` (als Password Parameter)
- `env.JIRA_SOURCE_JQL`
- `env.JIRA_TARGET_PROJECT_KEY`
- `env.SOLUTION_VERSION`
- `env.XRAY_REPORT_URL`
- `env.SONAR_REPORT_URL`
- `env.JIRA_CLOSE_ISSUE_KEYS`
- `env.JIRA_CLOSE_JQL`
- `env.JIRA_CLOSE_JQL_MAX_RESULTS`
- `env.JIRA_CLOSE_ALLOWED_STATUSES`
- `env.JIRA_CLOSE_TRANSITION_NAME`
- `env.JIRA_CLOSE_RESOLUTION_NAME`
- `env.ATLASSIAN_WIKI_ENABLED`
- `env.ATLASSIAN_WIKI_SPACE_KEY`
- `env.ATLASSIAN_WIKI_PARENT_PAGE_ID`
- `env.SMTP_ENABLED`
- `env.SMTP_HOST` ...
Der Report wird im Build-Workspace unter `report-output/report.html` abgelegt und kann als Build Artifact publiziert werden.
## Ablauf im Fehlerfall
- Jira API Fehler werden mit Antwortdetails ausgegeben.
- Bei `SMTP_ENABLED=true` ohne vollstaendige SMTP Daten wird der Lauf abgebrochen.
- Bei `JIRA_DRY_RUN=true` wird kein Ticket erstellt, aber Report + optional Mail erzeugt.