--- - name: Upgrade FoundKey hosts: - allison vars: user: misskey service: misskey source_repository: https://akkoma.dev/Michcio/FoundKey-0x7f deploys_root: /var/lib/misskey/deploys config_yml: /var/lib/misskey/default.yml tasks: - name: Checking which environment is currently prod ansible.builtin.stat: path: "{{ deploys_root }}/current" get_attributes: false get_checksum: false get_mime: false follow: false register: previous_current become: true become_user: "{{ user }}" - name: Picking staging environment that is not currently prod ansible.builtin.set_fact: deploy_dir: "{{ deploys_root }}/{{ previous_current.stat.lnk_source.endswith('sunrise') | ternary('sunset', 'sunrise') }}" run_once: true - name: Print the chosen deployment directory ansible.builtin.debug: var: deploy_dir run_once: true - name: Build become: true become_user: "{{ user }}" environment: NODE_ENV: production block: - name: Create deployment directory ansible.builtin.file: path: "{{ deploy_dir }}" state: directory - name: Clone source repository ansible.builtin.git: repo: "{{ source_repository }}" dest: "{{ deploy_dir }}" single_branch: true - name: Link configuration in ansible.builtin.file: dest: "{{ deploy_dir }}/.config/default.yml" src: "{{ config_yml }}" state: link - name: Install Yarn dependencies ansible.builtin.command: yarn install changed_when: true args: chdir: "{{ deploy_dir }}" - name: Build FoundKey ansible.builtin.command: yarn build changed_when: true args: chdir: "{{ deploy_dir }}" - name: Deploy block: - name: Link previous deploy become: true become_user: "{{ user }}" ansible.builtin.file: dest: "{{ deploys_root }}/previous" src: "{{ previous_current.stat.lnk_source }}" state: link force: true - name: Link new deploy become: true become_user: "{{ user }}" ansible.builtin.file: dest: "{{ deploys_root }}/current" src: "{{ deploy_dir }}" state: link force: true - name: Restart systemd service become: true ansible.builtin.systemd: name: "{{ service }}" state: restarted