feat(competitions): add host-add command - #1168
Merged
Merged
Google Cloud Build / kaggle-cli-branch-3-11-15 (kaggle-cicd)
succeeded
Aug 11, 2026 in 1m 27s
Summary
Build Information
| Trigger | kaggle-cli-branch-3-11-15 |
| Build | 64a815aa-fabf-41aa-89e4-1109c74b083b |
| Start | 2026-08-11T10:44:05-07:00 |
| Duration | 1m24.474s |
| Status | SUCCESS |
Steps
| Step | Status | Duration |
|---|---|---|
| check_substitutions | SUCCESS | 24.827s |
| build-hatch-image | SUCCESS | 1.404s |
| tests | SUCCESS | 50.679s |
| lint | SUCCESS | 42.858s |
| download-secrets | SUCCESS | 7.018s |
| integration-tests | SUCCESS | 28.11s |
Details
starting build "64a815aa-fabf-41aa-89e4-1109c74b083b"
FETCHSOURCE
From https://github.com/Kaggle/kaggle-cli
* branch 7f81d739d2fbca9f85c4ed617f502d48a8f05bc1 -> FETCH_HEAD
HEAD is now at 7f81d73 test(competitions): assert host-add confirmation prompt text
GitCommit:
7f81d739d2fbca9f85c4ed617f502d48a8f05bc1
BUILD
Starting Step #0 - "check_substitutions"
Starting Step #4 - "download-secrets"
Step #0 - "check_substitutions": Already have image (with digest): gcr.io/cloud-builders/docker
Step #4 - "download-secrets": Already have image (with digest): gcr.io/cloud-builders/gcloud
Step #0 - "check_substitutions": 3.11.15: Pulling from kaggle-cicd/tools/cli-builder
Step #0 - "check_substitutions": 1da3cb2f93f2: Pulling fs layer
Step #0 - "check_substitutions": 68b64c51cda3: Pulling fs layer
Step #0 - "check_substitutions": ec935196e6a0: Pulling fs layer
Step #0 - "check_substitutions": d74736caedd4: Pulling fs layer
Step #0 - "check_substitutions": a6d590218bc2: Pulling fs layer
Step #0 - "check_substitutions": a8f50fb62c65: Pulling fs layer
Step #0 - "check_substitutions": 435560346717: Pulling fs layer
Step #0 - "check_substitutions": 3de10a71c663: Pulling fs layer
Step #0 - "check_substitutions": 062c1ccc4694: Pulling fs layer
Step #0 - "check_substitutions": 435560346717: Waiting
Step #0 - "check_substitutions": 3de10a71c663: Waiting
Step #0 - "check_substitutions": 062c1ccc4694: Waiting
Step #0 - "check_substitutions": a6d590218bc2: Verifying Checksum
Step #0 - "check_substitutions": a6d590218bc2: Download complete
Step #0 - "check_substitutions": 435560346717: Verifying Checksum
Step #0 - "check_substitutions": 435560346717: Download complete
Step #0 - "check_substitutions": 68b64c51cda3: Verifying Checksum
Step #0 - "check_substitutions": 68b64c51cda3: Download complete
Step #0 - "check_substitutions": a8f50fb62c65: Verifying Checksum
Step #0 - "check_substitutions": a8f50fb62c65: Download complete
Step #0 - "check_substitutions": 3de10a71c663: Verifying Checksum
Step #0 - "check_substitutions": 3de10a71c663: Download complete
Step #0 - "check_substitutions": 1da3cb2f93f2: Verifying Checksum
Step #0 - "check_substitutions": 1da3cb2f93f2: Download complete
Step #0 - "check_substitutions": ec935196e6a0: Download complete
Step #0 - "check_substitutions": 062c1ccc4694: Verifying Checksum
Step #0 - "check_substitutions": 062c1ccc4694: Download complete
Step #0 - "check_substitutions": d74736caedd4: Verifying Checksum
Step #0 - "check_substitutions": d74736caedd4: Download complete
Step #0 - "check_substitutions": 1da3cb2f93f2: Pull complete
Finished Step #4 - "download-secrets"
Step #0 - "check_substitutions": 68b64c51cda3: Pull complete
Step #0 - "check_substitutions": ec935196e6a0: Pull complete
Step #0 - "check_substitutions": d74736caedd4: Pull complete
Step #0 - "check_substitutions": a6d590218bc2: Pull complete
Step #0 - "check_substitutions": a8f50fb62c65: Pull complete
Step #0 - "check_substitutions": 435560346717: Pull complete
Step #0 - "check_substitutions": 3de10a71c663: Pull complete
Step #0 - "check_substitutions": 062c1ccc4694: Pull complete
Step #0 - "check_substitutions": Digest: sha256:305f2e96dfec0fccb9419edae7f8ba2068bfa718106584660519c2cc98f68ac6
Step #0 - "check_substitutions": Status: Downloaded newer image for us-docker.pkg.dev/kaggle-cicd/tools/cli-builder:3.11.15
Step #0 - "check_substitutions": us-docker.pkg.dev/kaggle-cicd/tools/cli-builder:3.11.15
Finished Step #0 - "check_substitutions"
Starting Step #1 - "build-hatch-image"
Step #1 - "build-hatch-image": Already have image (with digest): gcr.io/cloud-builders/docker
Step #1 - "build-hatch-image": Sending build context to Docker daemon 6.656kB
Step #1 - "build-hatch-image": Step 1/5 : ARG PYTHON_VERSION
Step #1 - "build-hatch-image": Step 2/5 : FROM python:${PYTHON_VERSION}
Step #1 - "build-hatch-image": 3.11.15: Pulling from library/python
Step #1 - "build-hatch-image": 1da3cb2f93f2: Already exists
Step #1 - "build-hatch-image": 68b64c51cda3: Already exists
Step #1 - "build-hatch-image": ec935196e6a0: Already exists
Step #1 - "build-hatch-image": d74736caedd4: Already exists
Step #1 - "build-hatch-image": a6d590218bc2: Already exists
Step #1 - "build-hatch-image": a8f50fb62c65: Already exists
Step #1 - "build-hatch-image": 435560346717: Already exists
Step #1 - "build-hatch-image": Digest: sha256:d0199e2a90bf7a206a485b115323a75bc946f30b463d704c5435a454aca084dd
Step #1 - "build-hatch-image": Status: Downloaded newer image for python:3.11.15
Step #1 - "build-hatch-image": ---> a7c6a86c35ba
Step #1 - "build-hatch-image": Step 3/5 : RUN python -m pip install --upgrade pip
Step #1 - "build-hatch-image": ---> Using cache
Step #1 - "build-hatch-image": ---> 7b8a0b71deff
Step #1 - "build-hatch-image": Step 4/5 : RUN python -m pip install hatch==1.16.5
Step #1 - "build-hatch-image": ---> Using cache
Step #1 - "build-hatch-image": ---> 9cb7303c9e71
Step #1 - "build-hatch-image": Step 5/5 : ENTRYPOINT ["hatch"]
Step #1 - "build-hatch-image": ---> Using cache
Step #1 - "build-hatch-image": ---> 5a555e151568
Step #1 - "build-hatch-image": Successfully built 5a555e151568
Step #1 - "build-hatch-image": Successfully tagged us-docker.pkg.dev/kaggle-cicd/tools/cli-builder:3.11.15
Finished Step #1 - "build-hatch-image"
Starting Step #5 - "integration-tests"
Starting Step #3 - "lint"
Starting Step #2 - "tests"
Step #3 - "lint": Already have image (with digest): us-docker.pkg.dev/kaggle-cicd/tools/cli-builder:3.11.15
Step #5 - "integration-tests": Already have image (with digest): us-docker.pkg.dev/kaggle-cicd/tools/cli-builder:3.11.15
Step #2 - "tests": Already have image (with digest): us-docker.pkg.dev/kaggle-cicd/tools/cli-builder:3.11.15
Step #5 - "integration-tests": Creating environment: test
Step #2 - "tests": Creating environment: test
Step #3 - "lint": Creating environment: lint
Step #5 - "integration-tests": Installing project in development mode
Step #2 - "tests": Installing project in development mode
Step #3 - "lint": Checking dependencies
Step #3 - "lint": Syncing dependencies
Step #3 - "lint": cmd [1] | black --check --diff .
Step #3 - "lint": Skipping .ipynb files as Jupyter dependencies are not installed.
Step #3 - "lint": You can fix this by running ``pip install "black[jupyter]"``
Step #5 - "integration-tests": Checking dependencies
Step #5 - "integration-tests": Syncing dependencies
Step #2 - "tests": Checking dependencies
Step #2 - "tests": Syncing dependencies
Step #5 - "integration-tests": ============================= test session starts ==============================
Step #5 - "integration-tests": platform linux -- Python 3.11.15, pytest-9.1.1, pluggy-1.6.0
Step #5 - "integration-tests": rootdir: /workspace
Step #5 - "integration-tests": configfile: pyproject.toml
Step #5 - "integration-tests": plugins: cov-7.1.0
Step #5 - "integration-tests": collected 2 items
Step #5 - "integration-tests":
Step #5 - "integration-tests": tests/integration/test_models.py .. [100%]
Step #5 - "integration-tests":
Step #5 - "integration-tests": ============================== 2 passed in 1.35s ===============================
Finished Step #5 - "integration-tests"
Step #2 - "tests": ============================= test session starts ==============================
Step #2 - "tests": platform linux -- Python 3.11.15, pytest-9.1.1, pluggy-1.6.0
Step #2 - "tests": rootdir: /workspace
Step #2 - "tests": configfile: pyproject.toml
Step #2 - "tests": testpaths: tests/unit
Step #2 - "tests": plugins: cov-7.1.0
Step #2 - "tests": collected 1288 items
Step #2 - "tests":
Step #2 - "tests": tests/unit/test_authenticate.py ...... [ 0%]
Step #2 - "tests": tests/unit/test_benchmarks_cli.py ...................................... [ 3%]
Step #2 - "tests": ........................................................................ [ 9%]
Step #3 - "lint": All done! ✨ 🍰 ✨
Step #3 - "lint": 70 files would be left unchanged.
Step #3 - "lint": cmd [2] | mypy --install-types --non-interactive src/kaggle tests
Step #2 - "tests": ........................................................................ [ 14%]
Step #2 - "tests": ........................................................................ [ 20%]
Step #2 - "tests": .................................................. [ 24%]
Step #2 - "tests": tests/unit/test_benchmarks_leaderboard.py ............ [ 25%]
Step #2 - "tests": tests/unit/test_benchmarks_quota.py .......... [ 25%]
Step #2 - "tests": tests/unit/test_cli_benchmarks.py ................................ [ 28%]
Step #2 - "tests": tests/unit/test_cli_commands.py .............. [ 29%]
Step #3 - "lint": Collecting types-PySocks
Step #3 - "lint": Downloading types_pysocks-1.7.1.20260518-py3-none-any.whl.metadata (1.7 kB)
Step #3 - "lint": Collecting types-PyYAML
Step #3 - "lint": Downloading types_pyyaml-6.0.12.20260724-py3-none-any.whl.metadata (1.7 kB)
Step #3 - "lint": Collecting types-Pygments
Step #3 - "lint": Downloading types_pygments-2.20.0.20260728-py3-none-any.whl.metadata (2.1 kB)
Step #3 - "lint": Collecting types-bleach
Step #3 - "lint": Downloading types_bleach-6.4.0.20260728-py3-none-any.whl.metadata (1.8 kB)
Step #3 - "lint": Collecting types-pexpect
Step #3 - "lint": Downloading types_pexpect-4.9.0.20260518-py3-none-any.whl.metadata (1.7 kB)
Step #3 - "lint": Collecting types-protobuf
Step #3 - "lint": Downloading types_protobuf-7.34.1.20260518-py3-none-any.whl.metadata (2.2 kB)
Step #3 - "lint": Collecting types-python-dateutil
Step #3 - "lint": Downloading types_python_dateutil-2.9.0.20260807-py3-none-any.whl.metadata (1.9 kB)
Step #3 - "lint": Collecting types-six
Step #3 - "lint": Downloading types_six-1.17.0.20260724-py3-none-any.whl.metadata (1.7 kB)
Step #3 - "lint": Collecting types-html5lib (from types-bleach)
Step #3 - "lint": Downloading types_html5lib-1.1.11.20260518-py3-none-any.whl.metadata (1.8 kB)
Step #3 - "lint": Collecting types-webencodings (from types-html5lib->types-bleach)
Step #3 - "lint": Downloading types_webencodings-0.5.0.20260408-py3-none-any.whl.metadata (1.8 kB)
Step #3 - "lint": Downloading types_pysocks-1.7.1.20260518-py3-none-any.whl (9.6 kB)
Step #3 - "lint": Downloading types_pyyaml-6.0.12.20260724-py3-none-any.whl (20 kB)
Step #3 - "lint": Downloading types_pygments-2.20.0.20260728-py3-none-any.whl (29 kB)
Step #3 - "lint": Downloading types_bleach-6.4.0.20260728-py3-none-any.whl (12 kB)
Step #3 - "lint": Downloading types_pexpect-4.9.0.20260518-py3-none-any.whl (17 kB)
Step #3 - "lint": Downloading types_protobuf-7.34.1.20260518-py3-none-any.whl (85 kB)
Step #3 - "lint": Downloading types_python_dateutil-2.9.0.20260807-py3-none-any.whl (18 kB)
Step #3 - "lint": Downloading types_six-1.17.0.20260724-py3-none-any.whl (19 kB)
Step #3 - "lint": Downloading types_html5lib-1.1.11.20260518-py3-none-any.whl (24 kB)
Step #3 - "lint": Downloading types_webencodings-0.5.0.20260408-py3-none-any.whl (8.7 kB)
Step #3 - "lint": Installing collected packages: types-webencodings, types-six, types-PyYAML, types-python-dateutil, types-PySocks, types-Pygments, types-protobuf, types-pexpect, types-html5lib, types-bleach
Step #3 - "lint":
Step #3 - "lint": Successfully installed types-PySocks-1.7.1.20260518 types-PyYAML-6.0.12.20260724 types-Pygments-2.20.0.20260728 types-bleach-6.4.0.20260728 types-html5lib-1.1.11.20260518 types-pexpect-4.9.0.20260518 types-protobuf-7.34.1.20260518 types-python-dateutil-2.9.0.20260807 types-six-1.17.0.20260724 types-webencodings-0.5.0.20260408
Step #3 - "lint":
Step #3 - "lint": [notice] A new release of pip is available: 26.2 -> 26.2.1
Step #3 - "lint": [notice] To update, run: pip install --upgrade pip
Step #2 - "tests": tests/unit/test_cli_competitions.py .................................... [ 32%]
Step #2 - "tests": ......................... [ 34%]
Step #2 - "tests": tests/unit/test_cli_datasets.py ............................ [ 36%]
Step #2 - "tests": tests/unit/test_cli_errors.py .............. [ 37%]
Step #2 - "tests": tests/unit/test_cli_forums.py ....... [ 37%]
Step #3 - "lint": Installing missing stub packages:
Step #3 - "lint": /builder/home/lint/.local/share/hatch/env/virtual/kaggle/xS3fZVNL/lint/bin/python -m pip install types-PySocks types-PyYAML types-Pygments types-bleach types-pexpect types-protobuf types-python-dateutil types-six
Step #3 - "lint":
Step #3 - "lint":
Step #3 - "lint": Success: no issues found in 69 source files
Step #3 - "lint": src/kaggle/models/upload_file.py:128: note: By default the bodies of untyped functions are not checked, consider using --check-untyped-defs [annotation-unchecked]
Step #3 - "lint": src/kaggle/api/kaggle_api_extended.py:3266: note: By default the bodies of untyped functions are not checked, consider using --check-untyped-defs [annotation-unchecked]
Step #3 - "lint": src/kaggle/api/kaggle_api_extended.py:8016: note: By default the bodies of untyped functions are not checked, consider using --check-untyped-defs [annotation-unchecked]
Step #3 - "lint": src/kaggle/api/kaggle_api_extended.py:8491: note: By default the bodies of untyped functions are not checked, consider using --check-untyped-defs [annotation-unchecked]
Step #3 - "lint": tests/unit/test_upload_helpers.py:362: note: By default the bodies of untyped functions are not checked, consider using --check-untyped-defs [annotation-unchecked]
Step #3 - "lint": tests/unit/test_kernels_push.py:275: note: By default the bodies of untyped functions are not checked, consider using --check-untyped-defs [annotation-unchecked]
Step #3 - "lint": tests/backend/backend_tests.py:288: note: By default the bodies of untyped functions are not checked, consider using --check-untyped-defs [annotation-unchecked]
Finished Step #3 - "lint"
Step #2 - "tests": tests/unit/test_cli_kernels.py .............................. [ 40%]
Step #2 - "tests": tests/unit/test_cli_main.py .......... [ 40%]
Step #2 - "tests": tests/unit/test_cli_models.py .......................................... [ 44%]
Step #2 - "tests": . [ 44%]
Step #2 - "tests": tests/unit/test_cli_pagination.py ....... [ 44%]
Step #2 - "tests": tests/unit/test_cli_search.py ...... [ 45%]
Step #2 - "tests": tests/unit/test_competition_add_host.py ............ [ 46%]
Step #2 - "tests": tests/unit/test_competition_create.py ............ [ 47%]
Step #2 - "tests": tests/unit/test_competition_create_page.py ........ [ 47%]
Step #2 - "tests": tests/unit/test_competition_create_solution.py .......... [ 48%]
Step #2 - "tests": tests/unit/test_competition_data_update.py ................ [ 49%]
Step #2 - "tests": tests/unit/test_competition_delete_page.py ........ [ 50%]
Step #2 - "tests": tests/unit/test_competition_launch.py ......... [ 51%]
Step #2 - "tests": tests/unit/test_competition_list_hosts.py ........ [ 51%]
Step #2 - "tests": tests/unit/test_competition_settings_get.py ........ [ 52%]
Step #2 - "tests": tests/unit/test_competition_settings_update.py .................. [ 53%]
Step #2 - "tests": tests/unit/test_competition_solution_status.py ............ [ 54%]
Step #2 - "tests": tests/unit/test_competition_submission_download.py ......... [ 55%]
Step #2 - "tests": tests/unit/test_competition_submission_limits.py ........ [ 56%]
Step #2 - "tests": tests/unit/test_competition_submit.py ................ [ 57%]
Step #2 - "tests": tests/unit/test_competition_submit_wait.py ..................... [ 58%]
Step #2 - "tests": tests/unit/test_competition_update_page.py ............ [ 59%]
Step #2 - "tests": tests/unit/test_competitions_list.py ............. [ 60%]
Step #2 - "tests": tests/unit/test_dataset_create.py ............................ [ 63%]
Step #2 - "tests": tests/unit/test_dataset_delete.py .. [ 63%]
Step #2 - "tests": tests/unit/test_dataset_download.py ........ [ 63%]
Step #2 - "tests": tests/unit/test_dataset_list.py ................ [ 65%]
Step #2 - "tests": tests/unit/test_dataset_metadata_update.py ............ [ 65%]
Step #2 - "tests": tests/unit/test_dataset_status.py .............. [ 67%]
Step #2 - "tests": tests/unit/test_discussions_cli.py ..................................... [ 69%]
Step #2 - "tests": .......................................................... [ 74%]
Step #2 - "tests": tests/unit/test_download_resume.py .................. [ 75%]
Step #2 - "tests": tests/unit/test_help_version_auth.py .......... [ 76%]
Step #2 - "tests": tests/unit/test_http_client.py ... [ 76%]
Step #2 - "tests": tests/unit/test_ignore_patterns.py .... [ 77%]
Step #2 - "tests": tests/unit/test_kernel_parsing.py ....... [ 77%]
Step #2 - "tests": tests/unit/test_kernels_logs.py ....................... [ 79%]
Step #2 - "tests": tests/unit/test_kernels_pull.py ......... [ 80%]
Step #2 - "tests": tests/unit/test_kernels_push.py ................. [ 81%]
Step #2 - "tests": tests/unit/test_model_create.py ........................................ [ 84%]
Step #2 - "tests": ............. [ 85%]
Step #2 - "tests": tests/unit/test_model_delete.py ...... [ 86%]
Step #2 - "tests": tests/unit/test_model_download.py ........... [ 86%]
Step #2 - "tests": tests/unit/test_model_list.py ........... [ 87%]
Step #2 - "tests": tests/unit/test_parse_duration.py ................... [ 89%]
Step #2 - "tests": tests/unit/test_quota.py .......... [ 90%]
Step #2 - "tests": tests/unit/test_retry_after.py ....................... [ 91%]
Step #2 - "tests": tests/unit/test_search.py .................................... [ 94%]
Step #2 - "tests": tests/unit/test_tar_extraction_safety.py ... [ 94%]
Step #2 - "tests": tests/unit/test_team_submissions.py ........ [ 95%]
Step #2 - "tests": tests/unit/test_upload_helpers.py ...................................... [ 98%]
Step #2 - "tests": .................... [100%]
Step #2 - "tests":
Step #2 - "tests": =============================== warnings summary ===============================
Step #2 - "tests": tests/unit/test_benchmarks_cli.py:827
Step #2 - "tests": /workspace/tests/unit/test_benchmarks_cli.py:827: DeprecationWarning: invalid escape sequence '\('
Step #2 - "tests": with patch("time.sleep"), pytest.raises(ValueError, match="run\(s\) failed"):
Step #2 - "tests":
Step #2 - "tests": -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
Step #2 - "tests": ======================= 1288 passed, 1 warning in 23.84s =======================
Finished Step #2 - "tests"
PUSH
Pushing us-docker.pkg.dev/kaggle-cicd/tools/cli-builder:3.11.15
The push refers to repository [us-docker.pkg.dev/kaggle-cicd/tools/cli-builder]
d625ef4fc589: Preparing
be185d1c4105: Preparing
564572da079f: Preparing
a3febc6e4083: Preparing
a56591f400b5: Preparing
a471fb04aa22: Preparing
ff650be09e8c: Preparing
bfbbad6e30bd: Preparing
035cd7d3804a: Preparing
a471fb04aa22: Layer already exists
ff650be09e8c: Layer already exists
a56591f400b5: Layer already exists
a3febc6e4083: Layer already exists
035cd7d3804a: Layer already exists
d625ef4fc589: Layer already exists
be185d1c4105: Layer already exists
bfbbad6e30bd: Layer already exists
564572da079f: Layer already exists
3.11.15: digest: sha256:305f2e96dfec0fccb9419edae7f8ba2068bfa718106584660519c2cc98f68ac6 size: 2219
DONE
Loading