dev-support

Developer and maintainer tooling for the HBase project. This directory contains CI configuration, release automation, code analysis, and various utility scripts.

CI

PR-level CI runs via GitHub Actions (see ../.github/workflows/). Nightly builds, branch validation, and precommit checks still use Jenkins configurations in this directory:

  • Jenkinsfile, Jenkinsfile_GitHub -- Pipeline definitions
  • hbase_nightly_yetus.sh, jenkins_precommit_github_yetus.sh -- Yetus-based precommit and nightly check scripts
  • hbase-personality.sh -- Yetus personality plugin that customizes checks for HBase
  • jenkinsEnv.sh, jenkins-scripts/ -- Shared Jenkins environment setup
  • HOW_TO_YETUS_LOCAL.md -- Guide for running Yetus checks locally

Release Automation

  • create-release/ -- Docker-based release candidate builder (tags, builds, signs, publishes). Entry point is do-release-docker.sh.
  • make_rc.sh -- Older release candidate script (superseded by create-release/)
  • hbase-vote.sh -- Generates release vote email content
  • git-jira-release-audit/ -- Audits git history against JIRA fixVersion fields to find discrepancies between what was committed and what JIRA says shipped

Code Quality and Analysis

  • checkcompatibility.py -- Checks API/ABI compatibility between versions
  • checkstyle_report.py -- Generates checkstyle reports
  • spotbugs-exclude.xml -- SpotBugs exclusion rules
  • code-coverage/ -- Scripts for generating code coverage reports
  • flaky-tests/ -- Flaky test detection, reporting, and dashboards
  • license-header -- Apache License header template

Docker and Test Environments

  • docker/ -- Dockerfile for CI build environment
  • hbase_docker/, hbase_docker.sh -- Docker-based local test cluster
  • adhoc_run_tests/ -- Scripts for running test suites outside CI
  • integration-test/ -- Integration test support

Utility Scripts

  • smart-apply-patch.sh, make_patch.sh -- Patch creation and application
  • rebase_all_git_branches.sh -- Rebases all local tracking branches
  • zombie-detector.sh -- Detects leaked processes from test runs
  • gather_machine_environment.sh -- Captures build machine info for debugging
  • gh_hide_old_comments.sh -- Hides outdated bot comments on GitHub PRs

IDE Configuration

  • hbase_eclipse_formatter.xml -- Eclipse code formatter settings
  • eclipse.importorder -- Eclipse import ordering
  • HBase Code Template.xml -- IntelliJ code template

Design Documents

design-docs/ collects design documents and proposals for major features. These capture the rationale behind complex subsystems and are useful for understanding why the code is structured the way it is.