From a26c90807c774291039d67fe35285468f9660ac0 Mon Sep 17 00:00:00 2001 From: Robusta Runner Date: Sun, 16 Jun 2024 15:01:25 +0300 Subject: [PATCH 1/7] Create build-and-test.yaml --- .github/workflows/build-and-test.yaml | 40 +++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 .github/workflows/build-and-test.yaml diff --git a/.github/workflows/build-and-test.yaml b/.github/workflows/build-and-test.yaml new file mode 100644 index 0000000..1bd62d9 --- /dev/null +++ b/.github/workflows/build-and-test.yaml @@ -0,0 +1,40 @@ +# this runs on every commit/PR to test that we are properly building binaries that work +# we test this on each commit/PR to catch build problems early +name: Build and test HolmesGPT + +on: [push, pull_request, workflow_dispatch] + +jobs: + build: + strategy: + matrix: + python-version: ["3.9", "3.10", "3.11", "3.12"] + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} + + - name: Install dependencies and build + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + pip install pyinstaller + sudo apt-get install -y binutils + pyinstaller holmes.py --add-data 'holmes/plugins/runbooks/*:holmes/plugins/runbooks' --add-data 'holmes/plugins/prompts/*:holmes/plugins/prompts' --add-data 'holmes/plugins/toolsets/*:holmes/plugins/toolsets' + ls dist + + - name: Test the binary + shell: bash + run: | + dist/holmes/holmes version + if [ $? -ne 0 ]; then + echo "Binary test failed" + exit 1 + fi + echo "Binary test passed" From 7830a22f2e19ca3313737a2d92f8c6b328c8334e Mon Sep 17 00:00:00 2001 From: Robusta Runner Date: Sun, 16 Jun 2024 15:06:50 +0300 Subject: [PATCH 2/7] possibly fix build --- .github/workflows/build-and-test.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-and-test.yaml b/.github/workflows/build-and-test.yaml index 1bd62d9..d2ad7a7 100644 --- a/.github/workflows/build-and-test.yaml +++ b/.github/workflows/build-and-test.yaml @@ -22,8 +22,10 @@ jobs: - name: Install dependencies and build run: | + curl -sSL https://install.python-poetry.org | python3 - --version 1.4.0 + poetry config virtualenvs.create false + poetry install --extras "all" python -m pip install --upgrade pip - pip install -r requirements.txt pip install pyinstaller sudo apt-get install -y binutils pyinstaller holmes.py --add-data 'holmes/plugins/runbooks/*:holmes/plugins/runbooks' --add-data 'holmes/plugins/prompts/*:holmes/plugins/prompts' --add-data 'holmes/plugins/toolsets/*:holmes/plugins/toolsets' From 8456e16ac05882cc5a08fa4a83c59fb49360bc97 Mon Sep 17 00:00:00 2001 From: Robusta Runner Date: Sun, 16 Jun 2024 16:13:53 +0300 Subject: [PATCH 3/7] another fix --- .github/workflows/build-and-test.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-and-test.yaml b/.github/workflows/build-and-test.yaml index d2ad7a7..67cf055 100644 --- a/.github/workflows/build-and-test.yaml +++ b/.github/workflows/build-and-test.yaml @@ -24,7 +24,7 @@ jobs: run: | curl -sSL https://install.python-poetry.org | python3 - --version 1.4.0 poetry config virtualenvs.create false - poetry install --extras "all" + poetry install --no-root python -m pip install --upgrade pip pip install pyinstaller sudo apt-get install -y binutils From b77d2afe628e3e45d88bb866e5701eb2eccfaaf2 Mon Sep 17 00:00:00 2001 From: Robusta Runner Date: Sun, 16 Jun 2024 16:22:28 +0300 Subject: [PATCH 4/7] Update build-and-test.yaml --- .github/workflows/build-and-test.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-and-test.yaml b/.github/workflows/build-and-test.yaml index 67cf055..b1adef7 100644 --- a/.github/workflows/build-and-test.yaml +++ b/.github/workflows/build-and-test.yaml @@ -22,11 +22,12 @@ jobs: - name: Install dependencies and build run: | + python -m pip install --upgrade pip setuptools pyinstaller + curl -sSL https://install.python-poetry.org | python3 - --version 1.4.0 poetry config virtualenvs.create false poetry install --no-root - python -m pip install --upgrade pip - pip install pyinstaller + sudo apt-get install -y binutils pyinstaller holmes.py --add-data 'holmes/plugins/runbooks/*:holmes/plugins/runbooks' --add-data 'holmes/plugins/prompts/*:holmes/plugins/prompts' --add-data 'holmes/plugins/toolsets/*:holmes/plugins/toolsets' ls dist From 1847414e46445a5a119286aa9eaaba07bb01f79b Mon Sep 17 00:00:00 2001 From: Robusta Runner Date: Sun, 16 Jun 2024 16:27:27 +0300 Subject: [PATCH 5/7] attempt to deliberately break build by importing package not in dependencies --- holmes.py | 1 + 1 file changed, 1 insertion(+) diff --git a/holmes.py b/holmes.py index eb11bfb..e399679 100644 --- a/holmes.py +++ b/holmes.py @@ -18,6 +18,7 @@ from holmes.plugins.prompts import load_prompt from holmes.plugins.sources.opsgenie import OPSGENIE_TEAM_INTEGRATION_KEY_HELP from holmes import get_version +from flask import * app = typer.Typer(add_completion=False, pretty_exceptions_show_locals=False) investigate_app = typer.Typer( From 612c25b49fc1a4b89413dd07a8b568be0ee345e0 Mon Sep 17 00:00:00 2001 From: Robusta Runner Date: Sun, 16 Jun 2024 16:30:12 +0300 Subject: [PATCH 6/7] remove deliberate breakage --- holmes.py | 1 - 1 file changed, 1 deletion(-) diff --git a/holmes.py b/holmes.py index e399679..eb11bfb 100644 --- a/holmes.py +++ b/holmes.py @@ -18,7 +18,6 @@ from holmes.plugins.prompts import load_prompt from holmes.plugins.sources.opsgenie import OPSGENIE_TEAM_INTEGRATION_KEY_HELP from holmes import get_version -from flask import * app = typer.Typer(add_completion=False, pretty_exceptions_show_locals=False) investigate_app = typer.Typer( From 411d4a161d6eea57353ee07afd8609b97a0e0f0f Mon Sep 17 00:00:00 2001 From: Robusta Runner Date: Sun, 16 Jun 2024 16:34:55 +0300 Subject: [PATCH 7/7] Remove requirements.txt It was out of sync with pyproject.toml We will only use pyproject.toml for now --- .../workflows/build-binaries-and-brew.yaml | 7 +- requirements.txt | 64 ------------------- 2 files changed, 4 insertions(+), 67 deletions(-) delete mode 100644 requirements.txt diff --git a/.github/workflows/build-binaries-and-brew.yaml b/.github/workflows/build-binaries-and-brew.yaml index 1ce850f..5cf61c7 100644 --- a/.github/workflows/build-binaries-and-brew.yaml +++ b/.github/workflows/build-binaries-and-brew.yaml @@ -25,9 +25,10 @@ jobs: - name: Install dependencies run: | - python -m pip install --upgrade pip - pip install -r requirements.txt - pip install pyinstaller + python -m pip install --upgrade pip setuptools pyinstaller + curl -sSL https://install.python-poetry.org | python3 - --version 1.4.0 + poetry config virtualenvs.create false + poetry install --no-root - name: Install dependencies (Linux) if: matrix.os == 'ubuntu-20.04' diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index c71c42e..0000000 --- a/requirements.txt +++ /dev/null @@ -1,64 +0,0 @@ -annotated-types==0.7.0 ; python_version >= "3.11" and python_version < "4.0" -anyio==4.4.0 ; python_version >= "3.11" and python_version < "4.0" -certifi==2024.2.2 ; python_version >= "3.11" and python_version < "4.0" -charset-normalizer==3.3.2 ; python_version >= "3.11" and python_version < "4.0" -click==8.1.7 ; python_version >= "3.11" and python_version < "4.0" -colorama==0.4.6 ; python_version >= "3.11" and python_version < "4.0" and sys_platform == "win32" or python_version >= "3.11" and python_version < "4.0" and platform_system == "Windows" -colorlog==6.8.2 ; python_version >= "3.11" and python_version < "4.0" -deprecation==2.1.0 ; python_version >= "3.11" and python_version < "4.0" -distro==1.9.0 ; python_version >= "3.11" and python_version < "4.0" -dnspython==2.6.1 ; python_version >= "3.11" and python_version < "4.0" -email-validator==2.1.1 ; python_version >= "3.11" and python_version < "4.0" -fastapi-cli==0.0.4 ; python_version >= "3.11" and python_version < "4.0" -fastapi==0.111.0 ; python_version >= "3.11" and python_version < "4.0" -gotrue==2.4.2 ; python_version >= "3.11" and python_version < "4.0" -h11==0.14.0 ; python_version >= "3.11" and python_version < "4.0" -httpcore==1.0.5 ; python_version >= "3.11" and python_version < "4.0" -httptools==0.6.1 ; python_version >= "3.11" and python_version < "4.0" -httpx==0.27.0 ; python_version >= "3.11" and python_version < "4.0" -humanize==4.9.0 ; python_version >= "3.11" and python_version < "4.0" -idna==3.7 ; python_version >= "3.11" and python_version < "4.0" -jinja2==3.1.4 ; python_version >= "3.11" and python_version < "4.0" -markdown-it-py==3.0.0 ; python_version >= "3.11" and python_version < "4.0" -markupsafe==2.1.5 ; python_version >= "3.11" and python_version < "4.0" -mdurl==0.1.2 ; python_version >= "3.11" and python_version < "4.0" -openai==1.30.5 ; python_version >= "3.11" and python_version < "4.0" -orjson==3.10.3 ; python_version >= "3.11" and python_version < "4.0" -packaging==24.0 ; python_version >= "3.11" and python_version < "4.0" -postgrest==0.16.4 ; python_version >= "3.11" and python_version < "4.0" -pydantic-core==2.18.3 ; python_version >= "3.11" and python_version < "4.0" -pydantic-settings==2.2.1 ; python_version >= "3.11" and python_version < "4.0" -pydantic==2.7.2 ; python_version >= "3.11" and python_version < "4.0" -pydash==8.0.1 ; python_version >= "3.11" and python_version < "4.0" -pygments==2.18.0 ; python_version >= "3.11" and python_version < "4.0" -python-benedict==0.33.2 ; python_version >= "3.11" and python_version < "4.0" -python-dateutil==2.9.0.post0 ; python_version >= "3.11" and python_version < "4.0" -python-dotenv==1.0.1 ; python_version >= "3.11" and python_version < "4.0" -python-fsutil==0.14.1 ; python_version >= "3.11" and python_version < "4.0" -python-multipart==0.0.9 ; python_version >= "3.11" and python_version < "4.0" -python-slugify==8.0.4 ; python_version >= "3.11" and python_version < "4.0" -pyyaml==6.0.1 ; python_version >= "3.11" and python_version < "4.0" -realtime==1.0.5 ; python_version >= "3.11" and python_version < "4.0" -requests==2.32.3 ; python_version >= "3.11" and python_version < "4.0" -rich==13.7.1 ; python_version >= "3.11" and python_version < "4.0" -shellingham==1.5.4 ; python_version >= "3.11" and python_version < "4.0" -six==1.16.0 ; python_version >= "3.11" and python_version < "4.0" -slack-bolt==1.18.1 ; python_version >= "3.11" and python_version < "4.0" -slack-sdk==3.27.2 ; python_version >= "3.11" and python_version < "4.0" -sniffio==1.3.1 ; python_version >= "3.11" and python_version < "4.0" -starlette==0.37.2 ; python_version >= "3.11" and python_version < "4.0" -storage3==0.7.4 ; python_version >= "3.11" and python_version < "4.0" -strenum==0.4.15 ; python_version >= "3.11" and python_version < "4.0" -supabase==2.5.0 ; python_version >= "3.11" and python_version < "4.0" -supafunc==0.4.5 ; python_version >= "3.11" and python_version < "4.0" -text-unidecode==1.3 ; python_version >= "3.11" and python_version < "4.0" -tqdm==4.66.4 ; python_version >= "3.11" and python_version < "4.0" -typer==0.12.3 ; python_version >= "3.11" and python_version < "4.0" -typing-extensions==4.12.0 ; python_version >= "3.11" and python_version < "4.0" -ujson==5.10.0 ; python_version >= "3.11" and python_version < "4.0" -urllib3==2.2.1 ; python_version >= "3.11" and python_version < "4.0" -uvicorn==0.30.0 ; python_version >= "3.11" and python_version < "4.0" -uvicorn[standard]==0.30.0 ; python_version >= "3.11" and python_version < "4.0" -uvloop==0.19.0 ; sys_platform != "win32" and sys_platform != "cygwin" and platform_python_implementation != "PyPy" and python_version >= "3.11" and python_version < "4.0" -watchfiles==0.22.0 ; python_version >= "3.11" and python_version < "4.0" -websockets==12.0 ; python_version >= "3.11" and python_version < "4.0"