Skip to content

Add a GitHub App auth client to hackbot using githubkit - #7333

Open
Foxbolts wants to merge 1 commit into
mozilla:masterfrom
Foxbolts:ml/hackbot-github-client
Open

Foxbolts wants to merge 1 commit into
mozilla:masterfrom
Foxbolts:ml/hackbot-github-client

Add a GitHub App auth client to hackbot using githubkit

1d988c4
Select commit
Loading
Failed to load commit list.
Community-TC Integration / bugbug http service tests succeeded Oct 27, 2026 in 1m 54s

Community-TC (pull_request)

bugbug http service tests

Details

View task in Taskcluster | View logs in Taskcluster | View task group in Taskcluster

Task Status

Started: 2026-10-27T19:37:11.343Z
Resolved: 2026-10-27T19:39:04.074Z
Task Execution Time: 1 minute, 52 seconds, 731 milliseconds
Task Status: completed
Reason Resolved: completed
TaskId: E6eQUbs5S8ebhTFDjHb4Eg
RunId: 0

Artifacts

- public/logs/live_backing.log (2.1 MB)
- public/logs/live.log


[taskcluster 2026-10-27T19:37:11.429Z] Worker Type (proj-bugbug/compute-smaller) settings:
[taskcluster 2026-10-27T19:37:11.429Z]   {
[taskcluster 2026-10-27T19:37:11.429Z]     "generic-worker": {
[taskcluster 2026-10-27T19:37:11.429Z]       "config": {
[taskcluster 2026-10-27T19:37:11.429Z]         "capacity": 1,
[taskcluster 2026-10-27T19:37:11.429Z]         "headlessTasks": false
[taskcluster 2026-10-27T19:37:11.429Z]       },
[taskcluster 2026-10-27T19:37:11.429Z]       "engine": "multiuser",
[taskcluster 2026-10-27T19:37:11.429Z]       "go-arch": "amd64",
[taskcluster 2026-10-27T19:37:11.429Z]       "go-os": "linux",
[taskcluster 2026-10-27T19:37:11.429Z]       "go-version": "go1.27.2",
[taskcluster 2026-10-27T19:37:11.429Z]       "release": "https://github.com/taskcluster/taskcluster/releases/tag/v113.1.1",
[taskcluster 2026-10-27T19:37:11.429Z]       "revision": "2c7fa7800d99b83208414a68bae26b14cd24a815",
[taskcluster 2026-10-27T19:37:11.429Z]       "source": "https://github.com/taskcluster/taskcluster/commits/2c7fa7800d99b83208414a68bae26b14cd24a815",
[taskcluster 2026-10-27T19:37:11.429Z]       "version": "113.1.1"
[taskcluster 2026-10-27T19:37:11.429Z]     },
[taskcluster 2026-10-27T19:37:11.429Z]     "image": "projects/taskcluster-imaging/global/images/generic-worker-ubuntu-24-04-00bd1fca7052440ba8db",
[taskcluster 2026-10-27T19:37:11.429Z]     "instance-id": "3166695002571883064",
[taskcluster 2026-10-27T19:37:11.429Z]     "instance-type": "projects/757942385826/machineTypes/c3d-highcpu-4",
[taskcluster 2026-10-27T19:37:11.429Z]     "local-ipv4": "10.128.0.160",

...(263 lines hidden)...

 + sortedcontainers==2.4.0
 + soupsieve==2.9.2
 + sqlalchemy==2.0.51
 + stack-data==0.6.3
 + tabulate==0.10.0
 + taskcluster==103.0.1
 + taskcluster-urls==13.0.2
 + tenacity==9.1.4
 + texttable==1.7.0
 + threadpoolctl==3.6.0
 + tiktoken==0.13.0
 + tokenizers==0.22.2
 + tomlkit==0.15.1
 + tqdm==4.70.1
 + traitlets==5.16.1
 + typing-extensions==4.16.0
 + typing-inspection==0.4.2
 + tzdata==2026.3
 + unidiff==0.7.5
 + urllib3==2.8.0
 + uuid-utils==0.17.0
 + validx==0.8.1
 + vine==5.1.0
 + virtualenv==21.7.13
 + w3lib==2.4.1
 + wcwidth==0.8.2
 + weave==0.53.12
 + webargs==8.7.1
 + websockets==15.0.1
 + werkzeug==3.1.9
 + whatthepatch==1.0.7
 + xgboost==3.4.1
 + xxhash==3.8.1
 + yarl==1.25.1
 + zstandard==0.25.0
+ hg clone -r 7e05eb6de61fd8ecfda678c47dee53c51ef69ffe https://hg.mozilla.org/hgcustom/version-control-tools /version-control-tools/
*** failed to import extension "robustcheckout" from /version-control-tools/hgext/robustcheckout/__init__.py: [Errno 2] No such file or directory: '/version-control-tools/hgext/robustcheckout/__init__.py'
*** failed to import extension "hgmo" from /version-control-tools/hgext/hgmo: [Errno 2] No such file or directory: '/version-control-tools/hgext/hgmo'
*** failed to import extension "pushlog" from /version-control-tools/hgext/pushlog: [Errno 2] No such file or directory: '/version-control-tools/hgext/pushlog'
*** failed to import extension "mozext" from /version-control-tools/hgext/mozext: [Errno 2] No such file or directory: '/version-control-tools/hgext/mozext'
real URL is https://hg-edge.mozilla.org/hgcustom/version-control-tools
adding changesets
adding manifests
adding file changes

files [=====================================>                   ] 2051/3015 01s
files [=========================================>               ] 2267/3015 01s
files [=============================================>           ] 2434/3015 01s
files [==============================================>          ] 2494/3015 01s
files [================================================>        ] 2602/3015 01s
files [===================================================>     ] 2790/3015 01s
files [======================================================>  ] 2924/3015 01s
files [======================================================>  ] 2959/3015 01s
                                                                                
added 8449 changesets with 20175 changes to 3015 files
new changesets 8277a178b3cb:7e05eb6de61f
updating to branch default
1279 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ uv run pytest --cov=http_service http_service/tests/ -vvv
============================= test session starts ==============================
platform linux -- Python 3.14.10, pytest-9.1.1, pluggy-1.6.0 -- /bugbug/.venv/bin/python
cachedir: .pytest_cache
hypothesis profile 'default'
rootdir: /bugbug/http_service/tests
configfile: pytest.ini
plugins: cov-7.1.0, anyio-4.14.2, responses-0.6.0, asyncio-1.4.0, hypothesis-6.168.5, langsmith-0.10.16
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
collecting ... 
collecting 0 items                                                             
collected 55 items                                                             

http_service/tests/test_bug_classification.py::test_model_predict_id PASSED [  1%]
http_service/tests/test_bug_classification.py::test_model_predict_id_github PASSED [  3%]
http_service/tests/test_bug_classification.py::test_model_predict_batch PASSED [  5%]
http_service/tests/test_bug_classification.py::test_model_predict_batch_broken_site_reports PASSED [  7%]
http_service/tests/test_bug_classification.py::test_for_missing_bugs PASSED [  9%]
http_service/tests/test_bug_classification.py::test_empty_batch PASSED   [ 10%]
http_service/tests/test_bug_classification.py::test_non_int_batch PASSED [ 12%]
http_service/tests/test_bug_classification.py::test_unknown_model PASSED [ 14%]
http_service/tests/test_bug_classification.py::test_no_api_key PASSED    [ 16%]
http_service/tests/test_bug_classification.py::test_comment_prediction PASSED [ 18%]
http_service/tests/test_bug_classification.py::test_batch_comment_prediction PASSED [ 20%]
http_service/tests/test_bug_classification.py::test_inaccessible_comment_clears_cached_prediction PASSED [ 21%]
http_service/tests/test_bug_classification.py::test_classify_comment_worker PASSED [ 23%]
http_service/tests/test_get_config_specific_groups.py::test_get_config_specific_groups PASSED [ 25%]
http_service/tests/test_patch_schedules.py::test_patch_schedules_post_with_cache PASSED [ 27%]
http_service/tests/test_patch_schedules.py::test_patch_schedules_get_with_cache PASSED [ 29%]
http_service/tests/test_patch_schedules.py::test_patch_schedules_get_without_cache PASSED [ 30%]
http_service/tests/test_patch_schedules.py::test_patch_schedules_empty_patch PASSED [ 32%]
http_service/tests/test_patch_schedules.py::test_patch_schedules_patch_without_diffs PASSED [ 34%]
http_service/tests/test_perf_regression_predictor.py::test_endpoint_queues_and_returns_prediction PASSED [ 36%]
http_service/tests/test_perf_regression_predictor.py::test_worker_scores_each_commit PASSED [ 38%]
http_service/tests/test_perf_regression_predictor.py::test_worker_does_not_cache_hgmo_errors PASSED [ 40%]
http_service/tests/test_perf_regression_predictor.py::test_worker_marks_empty_stack_unavailable PASSED [ 41%]
http_service/tests/test_perf_regression_predictor.py::test_worker_propagates_model_loading_failure PASSED [ 43%]
http_service/tests/test_perf_regression_predictor.py::test_ignore_reason_rules[changeset0-None] PASSED [ 45%]
http_service/tests/test_perf_regression_predictor.py::test_ignore_reason_rules[changeset1-backout] PASSED [ 47%]
http_service/tests/test_perf_regression_predictor.py::test_ignore_reason_rules[changeset2-merge] PASSED [ 49%]
http_service/tests/test_perf_regression_predictor.py::test_ignore_reason_rules[changeset3-wptsync] PASSED [ 50%]
http_service/tests/test_perf_regression_predictor.py::test_ignore_reason_rules[changeset4-wptsync] PASSED [ 52%]
http_service/tests/test_perf_regression_predictor.py::test_ignore_reason_rules[changeset5-ignore-this-changeset] PASSED [ 54%]
http_service/tests/test_perf_regression_predictor.py::test_ignore_reason_rules[changeset6-backout] PASSED [ 56%]
http_service/tests/test_perf_regression_predictor.py::test_worker_skips_ignored_commits_with_reason PASSED [ 58%]
http_service/tests/test_perf_regression_predictor.py::test_worker_reports_fully_ignored_push_without_score PASSED [ 60%]
http_service/tests/test_push_schedules.py::test_queue_job_valid PASSED   [ 61%]
http_service/tests/test_push_schedules.py::test_no_api_key PASSED        [ 63%]
http_service/tests/test_readthrough_cache.py::test_doesnt_cache_unless_accessed_within_ttl PASSED [ 65%]
http_service/tests/test_readthrough_cache.py::test_cache_purges_after_ttl PASSED [ 67%]
http_service/tests/test_readthrough_cache.py::test_cache_ttl_refreshes_after_get PASSED [ 69%]
http_service/tests/test_readthrough_cache.py::test_force_store PASSED    [ 70%]
http_service/tests/test_readthrough_cache.py::test_cache_thread PASSED   [ 72%]
http_service/tests/test_schedule_tests.py::test_simple_schedule[labels_to_choose0-groups_to_choose0-reduced_labels0-config_groups0] PASSED [ 74%]
http_service/tests/test_schedule_tests.py::test_simple_schedule[labels_to_choose1-groups_to_choose1-reduced_labels1-config_groups1] PASSED [ 76%]
http_service/tests/test_schedule_tests.py::test_simple_schedule[labels_to_choose2-groups_to_choose2-reduced_labels2-config_groups2] PASSED [ 78%]
http_service/tests/test_schedule_tests.py::test_simple_schedule[labels_to_choose3-groups_to_choose3-reduced_labels3-config_groups3] PASSED [ 80%]
http_service/tests/test_schedule_tests.py::test_simple_schedule[labels_to_choose4-groups_to_choose4-reduced_labels4-config_groups4] PASSED [ 81%]
http_service/tests/test_schedule_tests.py::test_schedule_with_confidence_thresholds PASSED [ 83%]
http_service/tests/test_schedule_tests.py::test_normalize_group[test-group1-test-group1] PASSED [ 85%]
http_service/tests/test_schedule_tests.py::test_normalize_group[test-group1:test-group-parent-test-group1] PASSED [ 87%]
http_service/tests/test_schedule_tests.py::test_normalize_group[/fetch/api/request-testing/web-platform/tests/fetch/api/request] PASSED [ 89%]
http_service/tests/test_schedule_tests.py::test_normalize_group[:/fetch/api/request-testing/web-platform/tests/fetch/api/request] PASSED [ 90%]
http_service/tests/test_schedule_tests.py::test_normalize_group[/_mozilla/fetch/api/request-testing/web-platform/mozilla/tests/fetch/api/request] PASSED [ 92%]
http_service/tests/test_schedule_tests.py::test_get_recent_failures PASSED [ 94%]
http_service/tests/test_schedule_tests.py::test_schedule_backout PASSED  [ 96%]
http_service/tests/test_schedule_tests.py::test_schedule_backout_try PASSED [ 98%]
http_service/tests/test_schedule_tests.py::test_schedule_backout_treeherder_failure PASSED [100%]

=============================== warnings summary ===============================
http_service/bugbug_http/readthrough_cache.py:74
test_readthrough_cache.py::test_cache_thread
  /bugbug/http_service/bugbug_http/readthrough_cache.py:74: DeprecationWarning: setDaemon() is deprecated, set the daemon attribute instead
    thread.setDaemon(True)

test_schedule_tests.py: 18 warnings
  /bugbug/bugbug/repository.py:916: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC).
    pushdate = datetime.utcnow()

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
================================ tests coverage ================================
_______________ coverage: platform linux, python 3.14.10-final-0 _______________

Name                                                    Stmts   Miss  Cover
---------------------------------------------------------------------------
http_service/bugbug_http/__init__.py                        4      0   100%
http_service/bugbug_http/app.py                           503     52    90%
http_service/bugbug_http/boot.py                          126    126     0%
http_service/bugbug_http/download_models.py                18     18     0%
http_service/bugbug_http/listener.py                       59     59     0%
http_service/bugbug_http/models.py                        326    101    69%
http_service/bugbug_http/readthrough_cache.py              44      0   100%
http_service/bugbug_http/sentry.py                          9      4    56%
http_service/bugbug_http/worker.py                         21     21     0%
http_service/tests/__init__.py                              0      0   100%
http_service/tests/conftest.py                            229      5    98%
http_service/tests/test_bug_classification.py             170      1    99%
http_service/tests/test_get_config_specific_groups.py      10      0   100%
http_service/tests/test_integration.py                     38     28    26%
http_service/tests/test_patch_schedules.py                 66      3    95%
http_service/tests/test_perf_regression_predictor.py      136      3    98%
http_service/tests/test_push_schedules.py                  24      1    96%
http_service/tests/test_readthrough_cache.py              112      6    95%
http_service/tests/test_schedule_tests.py                 133      1    99%
---------------------------------------------------------------------------
TOTAL                                                    2028    429    79%
======================= 55 passed, 20 warnings in 30.97s =======================
+ bash /dev/fd/63
++ curl -s https://codecov.io/bash

  _____          _
 / ____|        | |
| |     ___   __| | ___  ___ _____   __
| |    / _ \ / _` |/ _ \/ __/ _ \ \ / /
| |___| (_) | (_| |  __/ (_| (_) \ V /
 \_____\___/ \__,_|\___|\___\___/ \_/
                              Bash-1.0.6


==> git version 2.47.3 found
==> curl 8.14.1 (x86_64-pc-linux-gnu) libcurl/8.14.1 OpenSSL/3.5.7 zlib/1.3.1 brotli/1.1.0 zstd/1.5.7 libidn2/2.3.8 libpsl/0.21.2 libssh2/1.11.1 nghttp2/1.64.0 nghttp3/1.8.0 librtmp/2.3 OpenLDAP/2.6.10
Release-Date: 2025-06-04, security patched: 8.14.1-2+deb13u7
Protocols: dict file ftp ftps gopher gophers http https imap imaps ipfs ipns ldap ldaps mqtt pop3 pop3s rtmp rtsp scp sftp smb smbs smtp smtps telnet tftp ws wss
Features: alt-svc AsynchDNS brotli GSS-API HSTS HTTP2 HTTP3 HTTPS-proxy IDN IPv6 Kerberos Largefile libz NTLM PSL SPNEGO SSL threadsafe TLS-SRP UnixSockets zstd
x> No CI provider detected.
    Testing inside Docker? http://docs.codecov.io/docs/testing-with-docker
    Testing with Tox? https://docs.codecov.io/docs/python#section-testing-with-tox
    current dir:  /bugbug
    project root: .
--> token set from env
    Yaml found at: .codecov.yml
curl: option : blank argument where content is expected
curl: try 'curl --help' or 'curl --manual' for more information
curl: option : blank argument where content is expected
curl: try 'curl --help' or 'curl --manual' for more information
curl: option : blank argument where content is expected
curl: try 'curl --help' or 'curl --manual' for more information
==> Running gcov in . (disable via -X gcov)
==> Python coveragepy not found
==> Searching for coverage reports in:
    + .
--> No coverage report found.
    Please visit http://docs.codecov.io/docs/supported-languages
[taskcluster 2026-10-27T19:39:01.907Z]                        Exit Code: 0
[taskcluster 2026-10-27T19:39:01.907Z]                        User Time: 53.952ms
[taskcluster 2026-10-27T19:39:01.907Z]                      Kernel Time: 65.514ms
[taskcluster 2026-10-27T19:39:01.907Z]                        Wall Time: 1m37.297126148s
[taskcluster 2026-10-27T19:39:01.907Z]  Average Available System Memory: 6.16 GiB
[taskcluster 2026-10-27T19:39:01.907Z]       Average System Memory Used: 1.59 GiB
[taskcluster 2026-10-27T19:39:01.907Z]          Peak System Memory Used: 1.85 GiB
[taskcluster 2026-10-27T19:39:01.907Z]              Total System Memory: 7.75 GiB
[taskcluster 2026-10-27T19:39:01.907Z]                           Result: SUCCEEDED
[taskcluster 2026-10-27T19:39:01.907Z] === Task Finished ===
[taskcluster 2026-10-27T19:39:01.907Z] Task Duration: 1m37.297759007s