From 4279c522313fe09fb610726af5977ad1ab119f3a Mon Sep 17 00:00:00 2001 From: Sijis Aviles Date: Fri, 8 May 2026 14:23:37 -0500 Subject: [PATCH 1/4] feat: add LXC image build --- .github/workflows/lxc-build.yml | 52 +++++++++++++++++++++++++ tools/distrobuilder.yaml | 69 +++++++++++++++++++++++++++++++++ 2 files changed, 121 insertions(+) create mode 100644 .github/workflows/lxc-build.yml create mode 100644 tools/distrobuilder.yaml diff --git a/.github/workflows/lxc-build.yml b/.github/workflows/lxc-build.yml new file mode 100644 index 000000000..1f78d2536 --- /dev/null +++ b/.github/workflows/lxc-build.yml @@ -0,0 +1,52 @@ +name: build lxc image + +on: + push: + branches: + - master + pull_request: + branches: + - master + +permissions: + contents: read + +jobs: + build-lxc: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v6.0.2 + + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y debootstrap + sudo snap install distrobuilder --classic + + - name: Set up Python + uses: actions/setup-python@v6.2.0 + with: + python-version: "3.12" + + - name: Build Errbot Wheel + run: | + python -m pip install --upgrade pip build + python -m build --wheel + mkdir -p /tmp/errbot-build + cp dist/*.whl /tmp/errbot-build/ + + - name: Build LXC Image + run: | + mkdir -p out + sudo distrobuilder build-lxc tools/distrobuilder.yaml out/ \ + --bind=/tmp/errbot-build:/tmp/errbot-build + + - name: Upload LXC Artifacts + uses: actions/upload-artifact@v4 + with: + name: errbot-lxc-image + path: | + out/lxd.tar.xz + out/rootfs.squashfs + retention-days: 7 diff --git a/tools/distrobuilder.yaml b/tools/distrobuilder.yaml new file mode 100644 index 000000000..6e91fa481 --- /dev/null +++ b/tools/distrobuilder.yaml @@ -0,0 +1,69 @@ +image: + distribution: debian + release: bookworm + description: Errbot Chatbot + architecture: x86_64 + +source: + downloader: debootstrap + url: http://deb.debian.org/debian + keys: [] + +packages: + manager: apt + update: true + cleanup: true + sets: + - packages: + - python3 + - python3-pip + - python3-venv + - git + - build-essential + - libssl-dev + - libffi-dev + - systemd + - systemd-sysv + action: install + +actions: + - trigger: post-packages + action: |- + #!/bin/sh + set -e + useradd --create-home --shell /bin/bash errbot + + su - errbot -c "python3 -m venv /home/errbot/.venv" + + # If a wheel was injected into /tmp/errbot-build, install from it. + if ls /tmp/errbot-build/errbot-*.whl 1> /dev/null 2>&1; then + echo "Installing local Errbot build..." + # Install the wheel with extras + su - errbot -c "/home/errbot/.venv/bin/pip install --no-cache-dir /tmp/errbot-build/errbot-*.whl[irc,XMPP,telegram,slack]" + else + echo "Installing Errbot from PyPI..." + su - errbot -c "/home/errbot/.venv/bin/pip install --no-cache-dir errbot[irc,XMPP,telegram,slack]" + fi + + su - errbot -c "/home/errbot/.venv/bin/errbot --init" + + - trigger: post-packages + action: |- + #!/bin/sh + set -e + cat < /etc/systemd/system/errbot.service + [Unit] + Description=Errbot Chatbot + After=network.target + + [Service] + User=errbot + Group=errbot + WorkingDirectory=/home/errbot + ExecStart=/home/errbot/.venv/bin/errbot + Restart=always + + [Install] + WantedBy=multi-user.target + EOF + systemctl enable errbot.service From d482cb9310f3fc7b39f787eb8d9b40359d50c7b2 Mon Sep 17 00:00:00 2001 From: Sijis Aviles Date: Fri, 8 May 2026 14:30:31 -0500 Subject: [PATCH 2/4] fix: unknown flag error --- .github/workflows/lxc-build.yml | 7 ++----- tools/distrobuilder.yaml | 4 ++++ 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/workflows/lxc-build.yml b/.github/workflows/lxc-build.yml index 1f78d2536..d5d9bb48f 100644 --- a/.github/workflows/lxc-build.yml +++ b/.github/workflows/lxc-build.yml @@ -39,14 +39,11 @@ jobs: - name: Build LXC Image run: | mkdir -p out - sudo distrobuilder build-lxc tools/distrobuilder.yaml out/ \ - --bind=/tmp/errbot-build:/tmp/errbot-build + sudo distrobuilder build-lxc tools/distrobuilder.yaml out/ - name: Upload LXC Artifacts uses: actions/upload-artifact@v4 with: name: errbot-lxc-image - path: | - out/lxd.tar.xz - out/rootfs.squashfs + path: out/* retention-days: 7 diff --git a/tools/distrobuilder.yaml b/tools/distrobuilder.yaml index 6e91fa481..e2d4e908d 100644 --- a/tools/distrobuilder.yaml +++ b/tools/distrobuilder.yaml @@ -4,6 +4,10 @@ image: description: Errbot Chatbot architecture: x86_64 +files: + - path: /tmp/errbot-build + source: /tmp/errbot-build + source: downloader: debootstrap url: http://deb.debian.org/debian From 2eaef59f9a496a38e143850a0efb1497ad7bdd84 Mon Sep 17 00:00:00 2001 From: Sijis Aviles Date: Fri, 8 May 2026 14:33:01 -0500 Subject: [PATCH 3/4] fix: definition error --- tools/distrobuilder.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/distrobuilder.yaml b/tools/distrobuilder.yaml index e2d4e908d..5034c968a 100644 --- a/tools/distrobuilder.yaml +++ b/tools/distrobuilder.yaml @@ -7,6 +7,7 @@ image: files: - path: /tmp/errbot-build source: /tmp/errbot-build + generator: dump source: downloader: debootstrap From d40feb074ef016cc99d6b71d2305d3a8041e25a0 Mon Sep 17 00:00:00 2001 From: Sijis Aviles Date: Fri, 8 May 2026 14:36:12 -0500 Subject: [PATCH 4/4] fix: additional build errors --- .github/workflows/lxc-build.yml | 2 +- tools/distrobuilder.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/lxc-build.yml b/.github/workflows/lxc-build.yml index d5d9bb48f..9f902fa22 100644 --- a/.github/workflows/lxc-build.yml +++ b/.github/workflows/lxc-build.yml @@ -21,7 +21,7 @@ jobs: - name: Install dependencies run: | sudo apt-get update - sudo apt-get install -y debootstrap + sudo apt-get install -y debootstrap debian-archive-keyring sudo snap install distrobuilder --classic - name: Set up Python diff --git a/tools/distrobuilder.yaml b/tools/distrobuilder.yaml index 5034c968a..86e622504 100644 --- a/tools/distrobuilder.yaml +++ b/tools/distrobuilder.yaml @@ -2,7 +2,7 @@ image: distribution: debian release: bookworm description: Errbot Chatbot - architecture: x86_64 + architecture: amd64 files: - path: /tmp/errbot-build