sepiatones_xyz/ansible/deploy.yml
Elm de0c724112 Build on server instead of locally to fix ICU library mismatch
The binary was being built locally on Arch (with ICU 78) and then
deployed to Debian, causing shared library errors. Now the deployment
installs Bun on the server and builds the binary there, ensuring
compatibility with the target system's libraries.
2026-03-05 08:39:54 -06:00

142 lines
3.4 KiB
YAML

---
- name: Deploy sepiatones_xyz project
hosts: all
become: yes
vars:
app_user: "sepiatones_xyz"
app_home: "/home/{{ app_user }}"
tasks:
- name: Ensure user exists
user:
name: "{{ app_user }}"
shell: /bin/bash
create_home: yes
home: "{{ app_home }}"
- name: Create data directory
file:
path: "{{ app_home }}/data"
state: directory
owner: "{{ app_user }}"
group: "{{ app_user }}"
- name: Create templates directory
file:
path: "{{ app_home }}/templates"
state: directory
owner: "{{ app_user }}"
group: "{{ app_user }}"
- name: Install Bun
shell: curl -fsSL https://bun.sh/install | bash
args:
creates: /home/{{ app_user }}/.bun/bin/bun
become_user: "{{ app_user }}"
- name: Create source directory
file:
path: "{{ app_home }}/src"
state: directory
owner: "{{ app_user }}"
group: "{{ app_user }}"
- name: Copy package.json
copy:
src: ../package.json
dest: "{{ app_home }}/package.json"
owner: "{{ app_user }}"
group: "{{ app_user }}"
- name: Copy bun.lockb
copy:
src: ../bun.lockb
dest: "{{ app_home }}/bun.lockb"
owner: "{{ app_user }}"
group: "{{ app_user }}"
- name: Copy source files
synchronize:
src: ../src/
dest: "{{ app_home }}/src/"
recursive: yes
owner: no
group: no
archive: yes
delete: yes
- name: Install dependencies
shell: /home/{{ app_user }}/.bun/bin/bun install --frozen-lockfile
args:
chdir: "{{ app_home }}"
become_user: "{{ app_user }}"
- name: Build binary
shell: /home/{{ app_user }}/.bun/bin/bun build --compile --minify --target bun --outfile ./sepiatones_xyz ./src/index.tsx
args:
chdir: "{{ app_home }}"
become_user: "{{ app_user }}"
- name: Copy data directory
synchronize:
src: ../data/
dest: "{{ app_home }}/data/"
recursive: yes
owner: no
group: no
archive: yes
delete: yes
- name: Copy templates directory
synchronize:
src: ../templates/
dest: "{{ app_home }}/templates/"
recursive: yes
owner: no
group: no
archive: yes
delete: yes
- name: Ensure Caddy directory exists
file:
path: /etc/caddy/sites
state: directory
- name: Copy Caddy configuration
copy:
src: sepiatones_xyz.caddy
dest: /etc/caddy/sites/sepiatones_xyz.caddy
owner: root
group: root
mode: "0644"
register: caddy_config_copy
- name: Restart Caddy service if config changed
systemd:
name: caddy
state: restarted
daemon_reload: yes
when: caddy_config_copy.changed
- name: Ensure Supervisor directory exists
file:
path: /etc/supervisor/conf.d
state: directory
- name: Copy Supervisor configuration
copy:
src: sepiatones_xyz.supervisor
dest: /etc/supervisor/conf.d/sepiatones_xyz.conf
owner: root
group: root
mode: "0644"
- name: Reload Supervisor
supervisorctl:
name: sepiatones_xyz
state: present
- name: Restart the service
supervisorctl:
name: sepiatones_xyz
state: restarted