| @@ -22,6 +22,7 @@ List of roles where self-building the Docker image is currently possible: | |||||
| - `matrix-mailer` | - `matrix-mailer` | ||||
| - `matrix-bridge-appservice-irc` | - `matrix-bridge-appservice-irc` | ||||
| - `matrix-bridge-appservice-slack` | - `matrix-bridge-appservice-slack` | ||||
| - `matrix-bridge-appservice-webhooks` | |||||
| - `matrix-bridge-mautrix-facebook` | - `matrix-bridge-mautrix-facebook` | ||||
| - `matrix-bridge-mautrix-hangouts` | - `matrix-bridge-mautrix-hangouts` | ||||
| - `matrix-bridge-mautrix-telegram` | - `matrix-bridge-mautrix-telegram` | ||||
| @@ -104,6 +104,8 @@ matrix_appservice_discord_database_password: "{{ matrix_synapse_macaroon_secret_ | |||||
| # We don't enable bridges by default. | # We don't enable bridges by default. | ||||
| matrix_appservice_webhooks_enabled: false | matrix_appservice_webhooks_enabled: false | ||||
| matrix_appservice_webhooks_container_image_self_build: "{{ matrix_architecture != 'amd64' }}" | |||||
| # Normally, matrix-nginx-proxy is enabled and nginx can reach matrix-appservice-webhooks over the container network. | # Normally, matrix-nginx-proxy is enabled and nginx can reach matrix-appservice-webhooks over the container network. | ||||
| # If matrix-nginx-proxy is not enabled, or you otherwise have a need for it, you can expose | # If matrix-nginx-proxy is not enabled, or you otherwise have a need for it, you can expose | ||||
| # matrix-appservice-webhooks' client-server port to the local host. | # matrix-appservice-webhooks' client-server port to the local host. | ||||
| @@ -3,13 +3,20 @@ | |||||
| matrix_appservice_webhooks_enabled: true | matrix_appservice_webhooks_enabled: true | ||||
| matrix_appservice_webhooks_container_image_self_build: false | |||||
| matrix_appservice_webhooks_container_image_self_build_repo: "https://github.com/turt2live/matrix-appservice-webhooks" | |||||
| matrix_appservice_webhooks_container_image_self_build_repo_version: "{{ 'master' if matrix_appservice_webhooks_version == 'latest' else matrix_appservice_webhooks_version }}" | |||||
| matrix_appservice_webhooks_container_image_self_build_repo_dockerfile_path: "Dockerfile" | |||||
| matrix_appservice_webhooks_version: latest | matrix_appservice_webhooks_version: latest | ||||
| matrix_appservice_webhooks_docker_image: "{{ matrix_container_global_registry_prefix }}turt2live/matrix-appservice-webhooks:{{ matrix_appservice_webhooks_version }}" | |||||
| matrix_appservice_webhooks_docker_image: "{{ matrix_appservice_webhooks_docker_image_name_prefix }}turt2live/matrix-appservice-webhooks:{{ matrix_appservice_webhooks_version }}" | |||||
| matrix_appservice_webhooks_docker_image_name_prefix: "{{ 'localhost/' if matrix_appservice_webhooks_container_image_self_build else matrix_container_global_registry_prefix }}" | |||||
| matrix_appservice_webhooks_docker_image_force_pull: "{{ matrix_appservice_webhooks_docker_image.endswith(':latest') }}" | matrix_appservice_webhooks_docker_image_force_pull: "{{ matrix_appservice_webhooks_docker_image.endswith(':latest') }}" | ||||
| matrix_appservice_webhooks_base_path: "{{ matrix_base_data_path }}/appservice-webhooks" | matrix_appservice_webhooks_base_path: "{{ matrix_base_data_path }}/appservice-webhooks" | ||||
| matrix_appservice_webhooks_config_path: "{{ matrix_appservice_webhooks_base_path }}/config" | matrix_appservice_webhooks_config_path: "{{ matrix_appservice_webhooks_base_path }}/config" | ||||
| matrix_appservice_webhooks_data_path: "{{ matrix_appservice_webhooks_base_path }}/data" | matrix_appservice_webhooks_data_path: "{{ matrix_appservice_webhooks_base_path }}/data" | ||||
| matrix_appservice_webhooks_docker_src_files_path: "{{ matrix_appservice_webhooks_base_path }}/docker-src" | |||||
| # If nginx-proxy is disabled, the bridge itself expects its endpoint to be on its own domain (e.g. "localhost:6789") | # If nginx-proxy is disabled, the bridge itself expects its endpoint to be on its own domain (e.g. "localhost:6789") | ||||
| matrix_appservice_webhooks_public_endpoint: /appservice-webhooks | matrix_appservice_webhooks_public_endpoint: /appservice-webhooks | ||||
| @@ -1,23 +1,47 @@ | |||||
| --- | --- | ||||
| - name: Ensure Appservice webhooks image is pulled | |||||
| docker_image: | |||||
| name: "{{ matrix_appservice_webhooks_docker_image }}" | |||||
| source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}" | |||||
| force_source: "{{ matrix_appservice_webhooks_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_appservice_webhooks_docker_image_force_pull }}" | |||||
| - name: Ensure AppService webhooks paths exist | - name: Ensure AppService webhooks paths exist | ||||
| file: | file: | ||||
| path: "{{ item }}" | |||||
| path: "{{ item.path }}" | |||||
| state: directory | state: directory | ||||
| mode: 0750 | mode: 0750 | ||||
| owner: "{{ matrix_user_username }}" | owner: "{{ matrix_user_username }}" | ||||
| group: "{{ matrix_user_groupname }}" | group: "{{ matrix_user_groupname }}" | ||||
| with_items: | with_items: | ||||
| - "{{ matrix_appservice_webhooks_base_path }}" | |||||
| - "{{ matrix_appservice_webhooks_config_path }}" | |||||
| - "{{ matrix_appservice_webhooks_data_path }}" | |||||
| - { path: "{{ matrix_appservice_webhooks_base_path }}", when: true } | |||||
| - { path: "{{ matrix_appservice_webhooks_config_path }}", when: true } | |||||
| - { path: "{{ matrix_appservice_webhooks_data_path }}", when: true } | |||||
| - { path: "{{ matrix_appservice_webhooks_docker_src_files_path }}", when: "{{ matrix_appservice_webhooks_container_image_self_build }}"} | |||||
| when: "item.when|bool" | |||||
| - name: Ensure Appservice webhooks image is pulled | |||||
| docker_image: | |||||
| name: "{{ matrix_appservice_webhooks_docker_image }}" | |||||
| source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}" | |||||
| force_source: "{{ matrix_appservice_webhooks_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_appservice_webhooks_docker_image_force_pull }}" | |||||
| when: "not matrix_appservice_webhooks_container_image_self_build|bool" | |||||
| - block: | |||||
| - name: Ensure Appservice webhooks repository is present on self-build | |||||
| git: | |||||
| repo: "{{ matrix_appservice_webhooks_container_image_self_build_repo }}" | |||||
| dest: "{{ matrix_appservice_webhooks_docker_src_files_path }}" | |||||
| version: "{{ matrix_appservice_webhooks_container_image_self_build_repo_version }}" | |||||
| force: "yes" | |||||
| register: matrix_appservice_webhooks_git_pull_results | |||||
| - name: Ensure Appservice webhooks Docker image is built | |||||
| docker_image: | |||||
| name: "{{ matrix_appservice_webhooks_docker_image }}" | |||||
| source: build | |||||
| force_source: "{{ matrix_appservice_webhooks_git_pull_results.changed 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_appservice_webhooks_git_pull_results.changed }}" | |||||
| build: | |||||
| dockerfile: "{{ matrix_appservice_webhooks_container_image_self_build_repo_dockerfile_path }}" | |||||
| path: "{{ matrix_appservice_webhooks_docker_src_files_path }}" | |||||
| pull: yes | |||||
| when: "matrix_appservice_webhooks_container_image_self_build|bool" | |||||
| - name: Ensure Matrix Appservice webhooks config is installed | - name: Ensure Matrix Appservice webhooks config is installed | ||||
| copy: | copy: | ||||