Skip to content

Releases: newrelic-experimental/gitlab

2.2.2

26 Mar 12:06
6a53387

Choose a tag to compare

What's Changed

Security

  • Bump requests 2.32.5 → 2.33.0 (Dependabot CVE fix) by @dependabot in #67

Documentation

  • Add GLAB_API_WORKERS, GLAB_JOB_WORKERS, GLAB_EXPORT_BATCH_SIZE to the New Relic Metrics Exporter configuration table
  • Bump Docker image references to 2.2.2

Docker Images

  • docker.io/dpacheconr/gitlab-exporter:2.2.2
  • docker.io/dpacheconr/gitlab-metrics-exporter:2.2.2

Full Changelog: v2.2.1...v2.2.2

2.2.1

26 Mar 09:40
7b6afe9

Choose a tag to compare

2.2.1 — OTEL Reliability, Async Performance & Attribute Promotion

Bug Fixes

  • OTEL data loss on exit: All OTEL providers (traces, logs, metrics) are now explicitly shut down before the process exits, ensuring batched telemetry is fully flushed and not silently dropped
  • OTEL attribute limit checks: Fixed incorrect log-record attribute limit checks; added coverage for value-length truncation
  • OTEL attribute truncation warnings: Emit a warning with the list of dropped keys when attributes are truncated
  • Missing import: Fixed ImportError for emit_collection_summary in main.py
  • Environments always emitted: Environments are now exported regardless of pipeline activity in the window
  • last_activity_after filter removed: Eliminated incorrect API filter that caused projects without recent pipeline activity to be silently skipped
  • GLAB_EXPORT_ALL_PROJECTS default corrected: Default is now true (export all projects as a snapshot), matching documented intent
  • urllib3 connection pool: Pool size is now set to match the worker count; added 429 (rate-limit) retry logic
  • Debug output: Header content no longer appears in debug logs — only presence (<set> / None) is indicated

Features

  • GLAB_ATTRIBUTES_TO_KEEP: New variable to promote specific attributes to resource level, guaranteeing they are always sent to New Relic regardless of log-record attribute limits. System defaults (id, project_id, pipeline_id, status, etc.) are always promoted; use this to add custom fields
  • GLAB_EXPORT_ALL_PROJECTS: Opt-in/opt-out control over historical vs windowed project exports
  • OTEL queue monitoring: Active queue depth monitoring during large exports; warnings emitted when queue approaches capacity
  • Run summary tracking: Exported vs skipped project counts are tracked and logged at the end of each run

Performance

  • Blocking API calls moved off the event loop: All python-gitlab list() and get() calls now run in thread-pool executors, fully unblocking the asyncio event loop
  • Batched project processing: Projects processed in configurable batches (GLAB_EXPORT_BATCH_SIZE, default 100) with OTEL queue drain between batches — prevents queue overflow on large instances
  • Skip pipeline-dependent resources early: Deployments, environments (via pipelines), and releases are skipped when no pipelines exist in the time window
  • get_jobs per-page tuning + regex pre-compilation: Reduced API round-trips and eliminated repeated regex compilation

Configuration

Variable Change
GLAB_ATTRIBUTES_TO_KEEP New — promote attributes to resource level
GLAB_API_WORKERS New — thread pool size for API list() calls
GLAB_JOB_WORKERS New — thread pool size for per-pipeline job fetches
GLAB_EXPORT_BATCH_SIZE New — projects per batch before OTEL queue drain
GLAB_SUMMARY_ESTATE_COUNTS Removed — replaced by built-in run summary

Documentation

  • README updated with all new variables, attribute promotion tiers, large-scale deployment guidance, and OTEL shutdown/queue monitoring
  • .env.example fully refreshed with BLRP tuning, concurrency settings, and inline comments
  • Test count updated: 322 → 339 tests

Docker Images

  • docker.io/dpacheconr/gitlab-exporter:2.2.1
  • docker.io/dpacheconr/gitlab-metrics-exporter:2.2.1

2.2.0

10 Feb 10:53

Choose a tag to compare

Some logs were being read from GitLab but never exported
Now properly exporting all job logs with otel_logger.info()
Strip trailing newlines that prevent proper message parsing
Remove ISO timestamp + log level prefix from GitLab logs
Regex pattern: r'^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}[.\d]*Z?\s+[\dA-Za-z]+\s+'
Handles both numeric (010) and alphanumeric (00O) log levels
Messages now parseable by New Relic and other log consumers
Filter None values completely to prevent NoneType validation errors
Handle complex types: lists with None, dicts, other objects
Validate attributes at multiple pipeline stages:
Resource creation (skip unset env vars)
Per-log filtering (remove None, empty strings, "None" strings) * Pre-export final pass (ensure absolutely no None values)
Only allow valid OTEL types: bool, str, bytes, int, float
Convert safe types to strings, skip problematic types
Upgraded dependencies
OpenTelemetry: 1.21.0 -> 1.39.1 (latest stable, 2 years of fixes)
structlog: 23.2.0 -> 25.5.0
python-gitlab: 4.2.0 -> 4.7.0
regex, pyrfc3339, schedule, pandas, requests all updated
Improves stability and compatibility

Full Changelog: 2.1.0...2.2.0

2.1.0

10 Dec 14:15
5c04773

Choose a tag to compare

What's Changed

Release v2.1.0 - Configurable Project Export

New Features:

  • Add GLAB_EXPORT_ALL_PROJECTS configuration option (default: true)
  • Project metadata now exported as complete snapshot by default
  • Configurable to maintain legacy time-filtered behavior if needed

Improvements:

  • Fix: Projects without recent activity now appear on dashboards
  • Fix: Initial deployment now exports all project data
  • Documentation: Add Group Access Token requirements (Owner role for runners)
  • Documentation: Add troubleshooting for missing project and runner data

Configuration:

  • GLAB_EXPORT_ALL_PROJECTS=true (default): Export all projects as snapshot
  • GLAB_EXPORT_ALL_PROJECTS=false (legacy): Only export recently active projects

Docker Images (DockerHub):

  • docker.io/dpacheconr/gitlab-exporter:2.1.0
  • docker.io/dpacheconr/gitlab-metrics-exporter:2.1.0

Backward Compatibility:

  • No breaking changes
  • Default behavior improves functionality
  • Legacy behavior available via GLAB_EXPORT_ALL_PROJECTS=false"

Full Changelog: 2.0.1...2.1.0

2.0.2

09 Oct 14:32

Choose a tag to compare

What's Changed

  • Update README.md by @dpacheconr in #54
  • Fixes critical error: 'timestamp does not conform to RFC 3339' for pipelines with invalid or null finished_at values

Full Changelog: 2.0.1...2.0.2

2.0.1

04 Sep 08:12
14637c6

Choose a tag to compare

What's Changed

Bump requests from 2.31.0 to 2.32.4.

Full Changelog: 2.0.0...2.0.1

2.0.0

03 Sep 15:43

Choose a tag to compare

What's Changed

BREAKING CHANGES:

  • Complete project restructure with new modular architecture
  • Renamed directories from hyphenated to underscore format (new-relic-* to new_relic_*)
  • Removed legacy base image approach in favor of shared components
  • Updated Docker image names and entry points for consistency

MAJOR FEATURES:

  • Modular Architecture Redesign

  • Introduced shared components library for common functionality

  • Created processor-based architecture with specialized handlers:

    • BaseProcessor: Common processing interface
    • JobProcessor: Individual job processing and tracing
    • PipelineProcessor: Pipeline-level orchestration
    • BridgeProcessor: Bridge job handling and downstream triggers
    • DownstreamProcessor: Multi-project pipeline support
  • Separated exporters into dedicated modules with clear responsibilities

  • Enhanced Bridge and Downstream Pipeline Support

  • Full support for GitLab bridge jobs and downstream pipeline triggers

  • Comprehensive bridge processing with proper parent-child relationships

  • Multi-project pipeline tracing across organizational boundaries

  • Bridge jobs can be excluded using GLAB_EXCLUDE_JOBS configuration

  • Implemented GLAB_USE_NAMESPACE_SLUG feature

  • Centralized Configuration Management

  • Type-safe configuration system with dataclasses and validation

  • Automatic New Relic region detection (US/EU) based on API key format

  • Environment variable validation with descriptive error messages

  • Backward compatibility with deprecation warnings for smooth migration

  • Health monitoring and configuration validation endpoints

  • Structured Logging System

  • Replaced all print statements with structured JSON logging

  • Performance and debugging improvements

  • Comprehensive Test Suite

  • Integration tests for GitLab and New Relic APIs

  • Performance testing and benchmarking

  • Error handling and edge case validation

  • Configuration management testing

  • Processor-specific test suites

  • OTEL attribute filtering and helpers testing

TECHNICAL IMPROVEMENTS:

  • OpenTelemetry Enhancements

  • Improved attribute parsing for nested objects and arrays

  • Enhanced span status handling and instrumentation

  • Optimized resource detection and attribute management

  • Data Processing Improvements

  • Enhanced JSON array flattening for complex GitLab data structures

  • Improved attribute filtering and sanitization

  • Better handling of nested pipeline data and relationships

  • Optimized data transformation pipelines

  • Error Handling and Resilience

  • Comprehensive exception handling with custom exception classes

  • Graceful degradation for API failures and network issues

  • Improved retry logic and rate limiting

  • Better error reporting and debugging capabilities

  • Performance Optimizations

  • Reduced logging verbosity with debug-level operational details

  • Optimized API calls and data processing workflows

  • Improved memory usage and resource management

  • Enhanced caching and data deduplication

INFRASTRUCTURE CHANGES:

  • Docker and Deployment
  • Updated Dockerfiles with proper PYTHONPATH configuration
  • Improved container entry points and health checks
  • Enhanced docker-compose.yaml with corrected service definitions

MIGRATION NOTES:

  • Update Docker image references to new 2.0.0 tag
  • Bridge processing is now enabled by default

Full Changelog: 1.0.15...2.0.0

1.0.18

28 Aug 14:46

Choose a tag to compare

Release 1.0.18
Updated README documentation for clarity and accuracy.
Removed duplicate and outdated sections.
No code changes; documentation only.
Changed log message attribute from message to log for New Relic compatibility.
Applied PEP8 formatting and code cleanup for better readability and maintainability.
No changes to core functionality except for log attribute update.

Full Changelog: 1.0.17...1.0.18

1.0.16

07 Oct 08:34

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: 1.0.15...1.0.16

1.0.15

07 Jun 10:16

Choose a tag to compare

Full Changelog: 1.0.14...1.0.15