141 lines
4.3 KiB
YAML
141 lines
4.3 KiB
YAML
---
|
|
- name: Ensure OpenApply group exists
|
|
ansible.builtin.group:
|
|
name: "{{ openapply_app_service_group }}"
|
|
state: present
|
|
|
|
- name: Ensure OpenApply service user exists
|
|
ansible.builtin.user:
|
|
name: "{{ openapply_app_service_user }}"
|
|
group: "{{ openapply_app_service_group }}"
|
|
home: /home/{{ openapply_app_service_user }}
|
|
shell: /usr/sbin/nologin
|
|
create_home: true
|
|
system: true
|
|
state: present
|
|
|
|
- name: Ensure OpenApply root directory exists
|
|
ansible.builtin.file:
|
|
path: "{{ openapply_app_root }}"
|
|
state: directory
|
|
owner: "{{ openapply_app_service_user }}"
|
|
group: "{{ openapply_app_service_group }}"
|
|
mode: "0755"
|
|
|
|
- name: Check whether OpenApply directory is already a git repository
|
|
ansible.builtin.stat:
|
|
path: "{{ openapply_app_root }}/.git"
|
|
register: openapply_git_metadata
|
|
|
|
- name: Reset OpenApply directory when not a git repository
|
|
ansible.builtin.file:
|
|
path: "{{ openapply_app_root }}"
|
|
state: absent
|
|
when: not openapply_git_metadata.stat.exists
|
|
|
|
- name: Recreate OpenApply root directory after reset
|
|
ansible.builtin.file:
|
|
path: "{{ openapply_app_root }}"
|
|
state: directory
|
|
owner: "{{ openapply_app_service_user }}"
|
|
group: "{{ openapply_app_service_group }}"
|
|
mode: "0755"
|
|
when: not openapply_git_metadata.stat.exists
|
|
|
|
- name: Sync OpenApply source code
|
|
ansible.builtin.git:
|
|
repo: "{{ openapply_app_repo_url }}"
|
|
version: "{{ openapply_app_repo_version }}"
|
|
dest: "{{ openapply_app_root }}"
|
|
update: true
|
|
force: true
|
|
accept_hostkey: true
|
|
key_file: "{{ openapply_app_git_ssh_key_file | default(omit, true) }}"
|
|
become: true
|
|
become_user: "{{ openapply_app_service_user }}"
|
|
register: openapply_repo_checkout
|
|
|
|
- name: Render OpenApply environment file
|
|
ansible.builtin.template:
|
|
src: openapply.env.j2
|
|
dest: "{{ openapply_app_root }}/.env"
|
|
owner: "{{ openapply_app_service_user }}"
|
|
group: "{{ openapply_app_service_group }}"
|
|
mode: "0640"
|
|
|
|
- name: Check node_modules presence
|
|
ansible.builtin.stat:
|
|
path: "{{ openapply_app_root }}/node_modules"
|
|
register: openapply_node_modules
|
|
|
|
- name: Install OpenApply dependencies via pnpm
|
|
ansible.builtin.command:
|
|
cmd: pnpm install --frozen-lockfile
|
|
chdir: "{{ openapply_app_root }}"
|
|
become: true
|
|
become_user: "{{ openapply_app_service_user }}"
|
|
when:
|
|
- openapply_repo_checkout.changed or openapply_app_force_rebuild | bool or not openapply_node_modules.stat.exists
|
|
changed_when: true
|
|
|
|
- name: Check which build directories exist
|
|
ansible.builtin.stat:
|
|
path: "{{ openapply_app_root }}/{{ item }}"
|
|
register: openapply_build_dir_stats
|
|
loop: "{{ openapply_app_build_subdirs }}"
|
|
|
|
- name: Build OpenApply subprojects
|
|
ansible.builtin.command:
|
|
cmd: pnpm run build
|
|
chdir: "{{ openapply_app_root }}/{{ item.item }}"
|
|
become: true
|
|
become_user: "{{ openapply_app_service_user }}"
|
|
loop: "{{ openapply_build_dir_stats.results }}"
|
|
when:
|
|
- item.stat.exists
|
|
- openapply_repo_checkout.changed or openapply_app_force_rebuild | bool
|
|
changed_when: true
|
|
|
|
- name: Check Astro dist directory
|
|
ansible.builtin.stat:
|
|
path: "{{ openapply_app_root }}/astro/dist"
|
|
register: openapply_astro_dist
|
|
|
|
- name: Check SPA dist directory
|
|
ansible.builtin.stat:
|
|
path: "{{ openapply_app_root }}/spa/dist"
|
|
register: openapply_spa_dist
|
|
|
|
- name: Publish SPA build under /app path for Astro runtime
|
|
ansible.builtin.shell: |
|
|
rm -rf "{{ openapply_app_root }}/astro/dist/app"
|
|
mkdir -p "{{ openapply_app_root }}/astro/dist/app"
|
|
cp -a "{{ openapply_app_root }}/spa/dist/." "{{ openapply_app_root }}/astro/dist/app/"
|
|
args:
|
|
executable: /bin/bash
|
|
become: true
|
|
become_user: "{{ openapply_app_service_user }}"
|
|
when:
|
|
- openapply_astro_dist.stat.isdir | default(false)
|
|
- openapply_spa_dist.stat.isdir | default(false)
|
|
- openapply_repo_checkout.changed or openapply_app_force_rebuild | bool
|
|
changed_when: true
|
|
|
|
- name: Install OpenApply systemd unit
|
|
ansible.builtin.template:
|
|
src: openapply.service.j2
|
|
dest: "/etc/systemd/system/{{ openapply_app_service_name }}.service"
|
|
owner: root
|
|
group: root
|
|
mode: "0644"
|
|
notify:
|
|
- Reload systemd
|
|
- Restart OpenApply service
|
|
|
|
- name: Ensure OpenApply service is enabled and started
|
|
ansible.builtin.systemd:
|
|
name: "{{ openapply_app_service_name }}"
|
|
enabled: true
|
|
state: started
|
|
daemon_reload: true
|