From 06f561f0dd03568a5a195a501e803884d1880eaf Mon Sep 17 00:00:00 2001 From: Slavi Pantaleev Date: Fri, 5 Jan 2024 07:04:19 +0200 Subject: [PATCH] Build latest/main branch of rust-synapse-compress-state for non-amd64 users The latest tagged release (v0.1.3) does not pin any versions in its Dockerfile and as such fails to build right now. The `main` branch of rust-synapse-compress-state has already addressed this and is buildable, but there's no tagged release yet. Reported here: https://github.com/matrix-org/rust-synapse-compress-state/issues/134 --- .../defaults/main.yml | 2 +- .../tasks/install.yml | 53 +++++++++++-------- 2 files changed, 33 insertions(+), 22 deletions(-) diff --git a/roles/custom/matrix-synapse-auto-compressor/defaults/main.yml b/roles/custom/matrix-synapse-auto-compressor/defaults/main.yml index 9b5bf0930..4ad7887bd 100644 --- a/roles/custom/matrix-synapse-auto-compressor/defaults/main.yml +++ b/roles/custom/matrix-synapse-auto-compressor/defaults/main.yml @@ -6,7 +6,7 @@ matrix_synapse_auto_compressor_enabled: true # renovate: datasource=docker depName=registry.gitlab.com/etke.cc/rust-synapse-compress-state -matrix_synapse_auto_compressor_version: v0.1.3 +matrix_synapse_auto_compressor_version: "{{ 'latest' if matrix_synapse_auto_compressor_container_image_self_build else 'v0.1.3' }}" matrix_synapse_auto_compressor_base_path: "{{ matrix_base_data_path }}/synapse-auto-compressor" matrix_synapse_auto_compressor_container_src_files_path: "{{ matrix_synapse_auto_compressor_base_path }}/container-src" diff --git a/roles/custom/matrix-synapse-auto-compressor/tasks/install.yml b/roles/custom/matrix-synapse-auto-compressor/tasks/install.yml index be4d5aadb..7e1bbf55f 100644 --- a/roles/custom/matrix-synapse-auto-compressor/tasks/install.yml +++ b/roles/custom/matrix-synapse-auto-compressor/tasks/install.yml @@ -34,28 +34,39 @@ delay: "{{ devture_playbook_help_container_retries_delay }}" until: result is not failed -- name: Ensure synapse-auto-compressor repository is present on self-build - ansible.builtin.git: - repo: "{{ matrix_synapse_auto_compressor_container_image_self_build_repo }}" - version: "{{ matrix_synapse_auto_compressor_container_image_self_build_version }}" - dest: "{{ matrix_synapse_auto_compressor_container_src_files_path }}" - force: "yes" - become: true - become_user: "{{ matrix_user_username }}" - register: matrix_synapse_auto_compressor_git_pull_results - when: "matrix_synapse_auto_compressor_container_image_self_build | bool" -- name: Ensure synapse-auto-compressor image is built - community.docker.docker_image: - name: "{{ matrix_synapse_auto_compressor_container_image }}" - source: build - force_source: "{{ matrix_synapse_auto_compressor_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_mailer_git_pull_results.changed }}" - build: - dockerfile: Dockerfile - path: "{{ matrix_synapse_auto_compressor_container_src_files_path }}" - pull: true - when: "matrix_synapse_auto_compressor_container_image_self_build | bool" +- when: "matrix_synapse_auto_compressor_container_image_self_build | bool" + block: + - name: Ensure synapse-auto-compressor repository is present on self-build + ansible.builtin.git: + repo: "{{ matrix_synapse_auto_compressor_container_image_self_build_repo }}" + version: "{{ matrix_synapse_auto_compressor_container_image_self_build_version }}" + dest: "{{ matrix_synapse_auto_compressor_container_src_files_path }}" + force: "yes" + become: true + become_user: "{{ matrix_user_username }}" + register: matrix_synapse_auto_compressor_git_pull_results + + - name: Check if synapse-auto-compressor image exists + ansible.builtin.command: "{{ devture_systemd_docker_base_host_command_docker }} images --quiet --filter 'reference={{ matrix_synapse_auto_compressor_container_image }}'" + register: matrix_synapse_auto_compressor_container_image_check_result + changed_when: false + + # Invoking the `docker build` command here, instead of calling the `docker_image` Ansible module, + # because the latter does not support BuildKit. + # See: https://github.com/ansible-collections/community.general/issues/514 + - name: Ensure synapse-auto-compressor image is built + ansible.builtin.shell: + chdir: "{{ matrix_synapse_auto_compressor_container_src_files_path }}" + cmd: | + {{ devture_systemd_docker_base_host_command_docker }} build \ + -t "{{ matrix_synapse_auto_compressor_container_image }}" \ + -f Dockerfile \ + . + environment: + DOCKER_BUILDKIT: 1 + changed_when: true + when: "matrix_synapse_auto_compressor_git_pull_results.changed | bool or matrix_synapse_auto_compressor_container_image_check_result.stdout == ''" - name: Ensure matrix-synapse-auto-compressor container network is created community.general.docker_network: