aboutsummaryrefslogtreecommitdiffstats

Binary size bot

The bot listens for Gerrit merges, receiving notifications via webhooks or directly via SSH client. When a merge is detected, it triggers an artifact fetch from COIN. The bot then extracts the artifact tarball and updates Influx databases with new file sizes. Files that can be monitored are specified in the configuration file.

usage: main.py [-h] [--configuration FILE] [--ssh]

options:
  -h, --help            show this help message and exit
  --configuration FILE  load configuration from FILE (default: config.json)
  --ssh                 Listen gerrit SSH stream (.ssh/config credentials required)

Configuration content:

{
    "tests_json": "qtlite_tests.json",  // Points to test set
    "email_info": {
        "smtp_server": "smtp.qt.io",
        "email_sender": "",
        "email_cc": ""
    },
    "gerrit_info": {
        "server_url": "codereview.qt-project.org",
        "server_port": 29418
    },
    "database_info": {
        "server_url": "https://testresults.qt.io/influxdb",
        "database_name": "",
        "username": "",
        "password": ""
    },
    "webhook_server_info": {
        "port": 8088
    }
}

Test set content:

{
   "branch": "dev",  // Monitored branch
   "integration": "qt/qtdeclarative", // Monitored project
   "series": "qtlite_binary_size", // influxdb series
   "coin_id": "debian-11.6-static-qtlite-arm64", // Monitored build type
   "builds_to_check" : [
      {
         "name": "qt/qtdeclarative",  // Artifact file
         "size_comparision": [
            {
               "file": "bin/qml",  // File inside artifact
               "threshold": 0.05
            }
         ]
      }
   ]
}

Exclusions

Excluded rules:

Excluded file patterns:

Installation

To install this script as a service

Modify config.json with your credentials Copy the service file to the systemd directory of your choice such as /etc/systemd/system/. Reload the daemon with systemctl daemon-reload. Start the service.

Prerequsites

The included systemd service file assumes you have pipenv installed for the qt user. You must manually install required packaged into the pipenv, as the service does not do this automatically.