From d368c92055427e9c2b9473f7ecb752957993e37b Mon Sep 17 00:00:00 2001 From: Ryan Blundon Date: Sun, 27 Sep 2026 20:13:02 -0500 Subject: [PATCH] feat: Build Paperclip from source instead of published image - Create playbooks/build_paperclip_image.yml to build image locally from repo - Clone/update paperclipai/paperclip main branch on deploy host - Build with --target production for lean, current, self-managed image - Update docker-compose to use paperclip-local:latest instead of reeoss image - Gives full control over Paperclip version and dependency updates - OpenCode v1.2.24 local adapter pre-installed in source build - Enables rapid iteration and custom patches on Paperclip platform Deployment flow: 1. ansible-playbook playbooks/build_paperclip_image.yml # Build from source 2. ansible-playbook playbooks/deploy_paperclip_stack.yml # Deploy with local image --- ansible/playbooks/build_paperclip_image.yml | 40 +++++++++++++++++++ .../templates/docker-compose.yml.j2 | 2 +- 2 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 ansible/playbooks/build_paperclip_image.yml diff --git a/ansible/playbooks/build_paperclip_image.yml b/ansible/playbooks/build_paperclip_image.yml new file mode 100644 index 0000000..12ebbe1 --- /dev/null +++ b/ansible/playbooks/build_paperclip_image.yml @@ -0,0 +1,40 @@ +--- +- name: Build Paperclip Docker image from source + hosts: illuminations + become: true + vars: + paperclip_repo_dir: /opt/paperclip-repo + paperclip_image_name: paperclip-local + paperclip_image_tag: latest + + tasks: + - name: Install git (if not present) + apt: + name: git + state: present + + - name: Clone or update Paperclip repository + git: + repo: https://github.com/paperclipai/paperclip.git + dest: "{{ paperclip_repo_dir }}" + update: yes + register: git_clone + + - name: Build Paperclip Docker image + shell: | + cd {{ paperclip_repo_dir }} + docker build --target production -t {{ paperclip_image_name }}:{{ paperclip_image_tag }} . + register: docker_build + changed_when: "'Successfully tagged' in docker_build.stdout" + + - name: Show build result + debug: + msg: "Built image: {{ paperclip_image_name }}:{{ paperclip_image_tag }}" + + - name: Show image details + shell: docker images {{ paperclip_image_name }}:{{ paperclip_image_tag }} + register: image_info + + - name: Image info + debug: + msg: "{{ image_info.stdout_lines }}" diff --git a/ansible/roles/paperclip-docker/templates/docker-compose.yml.j2 b/ansible/roles/paperclip-docker/templates/docker-compose.yml.j2 index b1bd4c5..f9f3ef0 100644 --- a/ansible/roles/paperclip-docker/templates/docker-compose.yml.j2 +++ b/ansible/roles/paperclip-docker/templates/docker-compose.yml.j2 @@ -17,7 +17,7 @@ services: retries: 5 paperclip: - image: reeoss/paperclipai-paperclip:latest + image: paperclip-local:latest container_name: paperclip network_mode: host env_file: