653d1d7924
This reverts commit 2a25b63bb6
.
Looking at other roles, we trigger building regardless of this.
It's better to always trigger it, because it's less fragile.
If the build fails and we only trigger it on "git changes"
then we won't trigger it for a while. That's not good.
Triggering it each and every time may seem like a waste,
but it supposedly runs quickly due to Docker caching.
165 lines
7.0 KiB
YAML
165 lines
7.0 KiB
YAML
---
|
|
|
|
- name: Ensure ma1sd paths exist
|
|
file:
|
|
path: "{{ item.path }}"
|
|
state: directory
|
|
mode: 0750
|
|
owner: "{{ matrix_user_username }}"
|
|
group: "{{ matrix_user_groupname }}"
|
|
with_items:
|
|
- { path: "{{ matrix_ma1sd_config_path }}", when: true }
|
|
- { path: "{{ matrix_ma1sd_data_path }}", when: true }
|
|
- { path: "{{ matrix_ma1sd_docker_src_files_path }}", when: "{{ matrix_ma1sd_container_image_self_build }}"}
|
|
when: "item.when|bool"
|
|
|
|
- import_tasks: "{{ role_path }}/tasks/migrate_mxisd.yml"
|
|
|
|
|
|
# These (SQLite -> Postgres) migration tasks are usually at the top,
|
|
# but we'd like to run them after `migrate_mxisd.yml`, which requires the ma1sd paths to exist.
|
|
- set_fact:
|
|
matrix_ma1sd_requires_restart: false
|
|
|
|
- block:
|
|
- name: Check if an SQLite database already exists
|
|
stat:
|
|
path: "{{ matrix_ma1sd_sqlite_database_path_local }}"
|
|
register: matrix_ma1sd_sqlite_database_path_local_stat_result
|
|
|
|
- block:
|
|
- set_fact:
|
|
matrix_postgres_db_migration_request:
|
|
src: "{{ matrix_ma1sd_sqlite_database_path_local }}"
|
|
dst: "{{ matrix_ma1sd_database_connection_string }}"
|
|
caller: "{{ role_path|basename }}"
|
|
engine_variable_name: 'matrix_ma1sd_database_engine'
|
|
engine_old: 'sqlite'
|
|
systemd_services_to_stop: ['matrix-ma1sd.service']
|
|
pgloader_options: ['--with "quote identifiers"']
|
|
|
|
- import_tasks: "{{ role_path }}/../matrix-postgres/tasks/util/migrate_db_to_postgres.yml"
|
|
|
|
- set_fact:
|
|
matrix_ma1sd_requires_restart: true
|
|
when: "matrix_ma1sd_sqlite_database_path_local_stat_result.stat.exists|bool"
|
|
when: "matrix_ma1sd_database_engine == 'postgres'"
|
|
|
|
- name: Ensure ma1sd image is pulled
|
|
docker_image:
|
|
name: "{{ matrix_ma1sd_docker_image }}"
|
|
source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}"
|
|
force_source: "{{ matrix_ma1sd_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}"
|
|
force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_ma1sd_docker_image_force_pull }}"
|
|
when: "not matrix_ma1sd_container_image_self_build|bool"
|
|
|
|
- block:
|
|
- name: Ensure gradle is installed for self-building (Debian)
|
|
apt:
|
|
name:
|
|
- gradle
|
|
state: present
|
|
update_cache: yes
|
|
when: (ansible_os_family == 'Debian')
|
|
|
|
- name: Ensure gradle is installed for self-building (CentOS)
|
|
fail:
|
|
msg: "Installing gradle on CentOS is currently not supported, so self-building ma1sd cannot happen at this time"
|
|
when: ansible_distribution == 'CentOS'
|
|
|
|
- name: Ensure gradle is installed for self-building (Archlinux)
|
|
pacman:
|
|
name:
|
|
- gradle
|
|
state: latest
|
|
update_cache: yes
|
|
when: ansible_distribution == 'Archlinux'
|
|
|
|
- name: Ensure ma1sd repository is present on self-build
|
|
git:
|
|
repo: "{{ matrix_ma1sd_container_image_self_build_repo }}"
|
|
dest: "{{ matrix_ma1sd_docker_src_files_path }}"
|
|
version: "{{ matrix_ma1sd_docker_image.split(':')[1].split('-')[0] }}"
|
|
force: "yes"
|
|
register: matrix_ma1sd_git_pull_results
|
|
|
|
- name: Ensure ma1sd Docker image is built
|
|
shell: "./gradlew dockerBuild"
|
|
args:
|
|
chdir: "{{ matrix_ma1sd_docker_src_files_path }}"
|
|
|
|
- name: Ensure ma1sd Docker image is tagged correctly
|
|
docker_image:
|
|
# The build script always tags the image with something like `ma1uta/ma1sd:2.4.0`.
|
|
# Remove the `-{{ matrix_ma1sd_architecture }}` suffix and our `localhost/` prefix (applied when self-building)
|
|
# to get to what has actually been built, so we can retag it as `{{ matrix_ma1sd_docker_image }}`.
|
|
name: "{{ matrix_ma1sd_docker_image.split('-')[0].replace('localhost/', '') }}"
|
|
repository: "{{ matrix_ma1sd_docker_image }}"
|
|
force_tag: yes
|
|
source: local
|
|
when: "matrix_ma1sd_container_image_self_build|bool"
|
|
|
|
- name: Ensure ma1sd config installed
|
|
copy:
|
|
content: "{{ matrix_ma1sd_configuration|to_nice_yaml }}"
|
|
dest: "{{ matrix_ma1sd_config_path }}/ma1sd.yaml"
|
|
mode: 0644
|
|
owner: "{{ matrix_user_username }}"
|
|
group: "{{ matrix_user_groupname }}"
|
|
|
|
- name: Ensure custom view templates are installed, if any
|
|
copy:
|
|
content: "{{ item.value }}"
|
|
dest: "{{ matrix_ma1sd_config_path }}/{{ item.location }}"
|
|
mode: 0644
|
|
owner: "{{ matrix_user_username }}"
|
|
group: "{{ matrix_user_groupname }}"
|
|
with_items:
|
|
- {value: "{{ matrix_ma1sd_view_session_custom_onTokenSubmit_success_template }}", location: 'tokenSubmitSuccess.html'}
|
|
- {value: "{{ matrix_ma1sd_view_session_custom_onTokenSubmit_failure_template }}", location: 'tokenSubmitFailure.html'}
|
|
when: "matrix_ma1sd_view_session_custom_templates_enabled|bool and item.value"
|
|
|
|
- name: Ensure custom email templates are installed, if any
|
|
copy:
|
|
content: "{{ item.value }}"
|
|
dest: "{{ matrix_ma1sd_config_path }}/{{ item.location }}"
|
|
mode: 0644
|
|
owner: "{{ matrix_user_username }}"
|
|
group: "{{ matrix_user_groupname }}"
|
|
with_items:
|
|
- {value: "{{ matrix_ma1sd_threepid_medium_email_custom_invite_template }}", location: 'invite-template.eml'}
|
|
- {value: "{{ matrix_ma1sd_threepid_medium_email_custom_session_validation_template }}", location: 'validate-template.eml'}
|
|
- {value: "{{ matrix_ma1sd_threepid_medium_email_custom_session_unbind_notification_template }}", location: 'unbind-notification.eml'}
|
|
- {value: "{{ matrix_ma1sd_threepid_medium_email_custom_matrixid_template }}", location: 'mxid-template.eml'}
|
|
when: "matrix_ma1sd_threepid_medium_email_custom_templates_enabled|bool and item.value"
|
|
|
|
# Only cleaning up for people who define the respective templates
|
|
- name: (Cleanup) Ensure custom email templates are not in data/ anymore (we've put them in config/)
|
|
file:
|
|
path: "{{ matrix_ma1sd_data_path }}/{{ item.location }}"
|
|
state: absent
|
|
with_items:
|
|
- {value: "{{ matrix_ma1sd_threepid_medium_email_custom_invite_template }}", location: 'invite-template.eml'}
|
|
- {value: "{{ matrix_ma1sd_threepid_medium_email_custom_session_validation_template }}", location: 'validate-template.eml'}
|
|
- {value: "{{ matrix_ma1sd_threepid_medium_email_custom_session_unbind_notification_template }}", location: 'unbind-notification.eml'}
|
|
- {value: "{{ matrix_ma1sd_threepid_medium_email_custom_matrixid_template }}", location: 'mxid-template.eml'}
|
|
when: "matrix_ma1sd_threepid_medium_email_custom_templates_enabled|bool and item.value"
|
|
|
|
- name: Ensure matrix-ma1sd.service installed
|
|
template:
|
|
src: "{{ role_path }}/templates/systemd/matrix-ma1sd.service.j2"
|
|
dest: "{{ matrix_systemd_path }}/matrix-ma1sd.service"
|
|
mode: 0644
|
|
register: matrix_ma1sd_systemd_service_result
|
|
|
|
- name: Ensure systemd reloaded after matrix-ma1sd.service installation
|
|
service:
|
|
daemon_reload: yes
|
|
when: "matrix_ma1sd_systemd_service_result.changed|bool"
|
|
|
|
- name: Ensure matrix-ma1sd.service restarted, if necessary
|
|
service:
|
|
name: "matrix-ma1sd.service"
|
|
state: restarted
|
|
when: "matrix_ma1sd_requires_restart|bool"
|