--- - name: ensure build work dir exists become: yes file: path: "{{build_work_dir}}" state: "directory" owner: "{{ansible_user}}" group: "{{ansible_user}}" mode: "0755" # 26.04 ships elixir 1.15+, new enough for Pleroma; no more upstream zips. - name: install elixir build dependencies become: yes apt: name: - erlang - erlang-dev - elixir - build-essential - cmake - libmagic-dev - libvips-dev - name: install hex package manager command: mix local.hex --force # Keep the mix/hex caches on build_work_dir (the SSD) instead of the SD card. environment: MIX_HOME: "{{build_work_dir}}/.mix" HEX_HOME: "{{build_work_dir}}/.hex" changed_when: false - name: install rebar command: mix local.rebar --force environment: MIX_HOME: "{{build_work_dir}}/.mix" HEX_HOME: "{{build_work_dir}}/.hex" changed_when: false - name: unarchive pleroma source unarchive: remote_src: yes src: "{{pleroma_tar}}" dest: "{{build_work_dir}}/" creates: "{{pleroma_build_dir}}" - name: check if pleroma release exists stat: path: "{{pleroma_srv_dir}}/pleroma-{{pleroma_version}}.tar.gz" register: build_file - name: fetch mix dependencies command: mix deps.get --only prod args: chdir: "{{pleroma_build_dir}}" environment: MIX_ENV: prod MIX_HOME: "{{build_work_dir}}/.mix" HEX_HOME: "{{build_work_dir}}/.hex" when: not build_file.stat.exists - name: build pleroma release command: mix release args: chdir: "{{pleroma_build_dir}}" environment: MIX_ENV: prod MIX_HOME: "{{build_work_dir}}/.mix" HEX_HOME: "{{build_work_dir}}/.hex" when: not build_file.stat.exists - name: create build server dir become: yes file: path: "{{pleroma_srv_dir}}" mode: "0755" state: "directory" - name: copy release to staging directory copy: remote_src: yes src: "{{pleroma_build_dir}}/_build/prod/rel/pleroma/" dest: "{{pleroma_build_dir}}/release/" when: not build_file.stat.exists - name: create gz archive of pleroma release become: yes archive: path: "{{pleroma_build_dir}}/release" dest: "{{pleroma_srv_dir}}/pleroma-{{pleroma_version}}.tar.gz" format: "gz" when: not build_file.stat.exists