Convert JIRA to YAML
Max file size 100mb.
JIRA vs YAML Format Comparison
| Aspect | JIRA (Source Format) | YAML (Target Format) |
|---|---|---|
| Format Overview |
JIRA
Jira Markup Language
JIRA markup is Atlassian's text formatting language used across Jira, Confluence, and Bitbucket. It provides a lightweight syntax for bold, italic, headings, tables, code blocks, lists, and links without requiring HTML knowledge. The format is designed for quick issue descriptions and project documentation. Markup Language Atlassian |
YAML
YAML Ain't Markup Language
YAML is a human-friendly data serialization language commonly used for configuration files, data exchange, and structured content. YAML uses indentation-based syntax with key-value pairs, sequences, and mappings. It is widely adopted in DevOps, CI/CD pipelines, container orchestration, and application configuration. Data Serialization Configuration |
| Technical Specifications |
Structure: Plain text with Jira markup syntax
Encoding: UTF-8 Format: Atlassian markup language Platforms: Jira, Confluence, Bitbucket Extensions: .jira, .txt |
Structure: Indentation-based key-value pairs
Encoding: UTF-8 (recommended) Standard: YAML 1.2 specification MIME Type: application/x-yaml, text/yaml Extension: .yaml, .yml |
| Syntax Examples |
JIRA uses Atlassian wiki markup: h1. Main Heading
*bold text* and _italic text_
||Header 1||Header 2||
|Cell A1|Cell A2|
|Cell B1|Cell B2|
{code:java}
System.out.println("Hello");
{code}
|
YAML uses indentation-based key-value pairs: # Configuration file name: MyApp version: "2.0" database: host: localhost port: 5432 features: - authentication - logging - caching |
| Content Support |
|
|
| Advantages |
|
|
| Disadvantages |
|
|
| Common Uses |
|
|
| Best For |
|
|
| Version History |
Introduced: 2002 (Atlassian)
Current Version: Jira Cloud markup Status: Active, widely used in enterprise Evolution: Wiki markup to rich text editor (markup still supported) |
Introduced: 2001 (Clark Evans, Oren Ben-Kiki, Ingy dot Net)
Current Version: YAML 1.2.2 (October 2021) Status: Active, dominant in DevOps and configuration Evolution: YAML 1.0 (2004) to 1.1 (2005) to 1.2 (2009) as JSON superset |
| Software Support |
Primary: Jira, Confluence, Bitbucket
Editors: Any text editor Converters: Pandoc (jira format), j2m Platforms: Atlassian Cloud, Data Center, Server |
Python: PyYAML, ruamel.yaml
JavaScript: js-yaml, yaml package DevOps: Docker, Kubernetes, Ansible, Terraform Editors: VS Code, IntelliJ (with YAML support) |
Why Convert JIRA to YAML?
Converting JIRA markup to YAML transforms document-oriented content into a structured, machine-readable data format. YAML is the de facto standard for configuration in modern DevOps workflows, and converting Jira specifications to YAML enables direct use in Kubernetes, Docker Compose, Ansible, and CI/CD pipelines.
Teams that document infrastructure configurations, deployment specifications, and environment settings in Jira can convert these documents to YAML for automated deployment. The structured key-value format of YAML naturally represents the data within Jira tables and lists, creating configuration files that are both human-readable and machine-parseable.
YAML's clean, indentation-based syntax makes it easy to review converted content and make adjustments. Unlike JSON, YAML supports comments, which means contextual information from Jira headings and descriptions can be preserved as comments in the output, maintaining the documentation alongside the configuration data.
Key Benefits of Converting JIRA to YAML:
- DevOps Ready: Use in Kubernetes, Docker Compose, and Ansible workflows
- Human Readable: Clean indentation-based format easy to review
- Comment Support: Preserve Jira context as YAML comments
- Configuration Files: Generate config from Jira specifications
- CI/CD Integration: Use in GitHub Actions, GitLab CI, Jenkins pipelines
- Data Interchange: Exchange data between systems in YAML format
- API Definitions: Create OpenAPI/Swagger specs from Jira API documentation
Practical Examples
Example 1: Deployment Specification to YAML
Input JIRA file (deploy.jira):
h2. Production Deployment Config *Service:* user-api *Version:* 3.1.0 *Environment:* Production h3. Resource Limits ||Resource||Request||Limit|| |CPU|500m|1000m| |Memory|512Mi|1024Mi| h3. Environment Variables * DATABASE_URL: postgres://db.example.com:5432/prod * REDIS_URL: redis://cache.example.com:6379 * LOG_LEVEL: info
Output YAML file (deploy.yaml):
# Production Deployment Config
# Converted from JIRA markup
service: user-api
version: "3.1.0"
environment: Production
# Resource Limits
resources:
- resource: CPU
request: "500m"
limit: "1000m"
- resource: Memory
request: "512Mi"
limit: "1024Mi"
# Environment Variables
env:
DATABASE_URL: "postgres://db.example.com:5432/prod"
REDIS_URL: "redis://cache.example.com:6379"
LOG_LEVEL: info
Example 2: CI/CD Pipeline Spec to YAML
Input JIRA file (pipeline.jira):
h2. CI/CD Pipeline Configuration h3. Build Stage # Install dependencies # Run linter # Compile TypeScript # Run unit tests h3. Deploy Stage # Build Docker image # Push to registry # Deploy to staging # Run smoke tests ||Stage||Timeout||Retry|| |Build|10 minutes|2| |Deploy|15 minutes|1| |Test|5 minutes|3|
Output YAML file (pipeline.yaml):
# CI/CD Pipeline Configuration
# Converted from JIRA markup
stages:
build:
steps:
- Install dependencies
- Run linter
- Compile TypeScript
- Run unit tests
deploy:
steps:
- Build Docker image
- Push to registry
- Deploy to staging
- Run smoke tests
stage_config:
- stage: Build
timeout: "10 minutes"
retry: 2
- stage: Deploy
timeout: "15 minutes"
retry: 1
- stage: Test
timeout: "5 minutes"
retry: 3
Example 3: Service Configuration to YAML
Input JIRA file (service.jira):
h1. Notification Service Config h2. Email Settings * SMTP Host: smtp.example.com * SMTP Port: 587 * Use TLS: Yes * From Address: [email protected] h2. Rate Limits ||Channel||Max Per Hour||Max Per Day|| |Email|100|1000| |SMS|50|500| |Push|500|5000| h2. Templates * Welcome email: templates/welcome.html * Password reset: templates/reset.html * Invoice: templates/invoice.html
Output YAML file (service.yaml):
# Notification Service Config # Converted from JIRA markup email: smtp_host: smtp.example.com smtp_port: 587 use_tls: true from_address: [email protected] rate_limits: - channel: Email max_per_hour: 100 max_per_day: 1000 - channel: SMS max_per_hour: 50 max_per_day: 500 - channel: Push max_per_hour: 500 max_per_day: 5000 templates: welcome_email: templates/welcome.html password_reset: templates/reset.html invoice: templates/invoice.html
Frequently Asked Questions (FAQ)
Q: How is Jira content mapped to YAML structure?
A: Jira headings become YAML keys or comments, lists become YAML sequences, and tables are converted to arrays of mappings. Key-value patterns in text (like "Key: Value") are extracted as YAML key-value pairs.
Q: Can I use the YAML output in Kubernetes?
A: The output is valid YAML, but Kubernetes manifests require specific schemas (apiVersion, kind, metadata, spec). You can use the converter to generate initial content and then restructure it to match Kubernetes requirements.
Q: How are Jira tables converted to YAML?
A: Jira tables with headers are converted to YAML arrays of mappings, where each row becomes a mapping with the header column names as keys. This produces structured, readable YAML that preserves the tabular data.
Q: Are data types preserved in the conversion?
A: The converter detects common data types: numbers are stored as integers or floats, boolean values (Yes/No, True/False) as booleans, and everything else as strings. You can adjust types by adding or removing quotes.
Q: How are Jira comments preserved in YAML?
A: Descriptive text and headings from Jira that do not map to data are included as YAML comments (# prefix). This preserves the documentation context alongside the structured data.
Q: Can I use this for Docker Compose files?
A: The output is valid YAML that can serve as a starting point for Docker Compose configuration. You may need to adjust the structure to match Docker Compose's expected schema (version, services, networks).
Q: What is the difference between YAML and YML?
A: There is no difference in the format; .yaml and .yml are both valid file extensions for YAML files. The .yaml extension is the officially recommended one, while .yml is a common shorthand used by many tools.
Q: How are nested Jira lists handled in YAML?
A: Nested Jira lists (**, ***) are converted to nested YAML sequences. Each level of nesting increases the indentation, maintaining the hierarchical structure in YAML's indentation-based format.