--- # Pre-pull Docker images that CI runners need to avoid pulling them on # every CI run. The runner container image (ci-full) is large (~3.3GB) # and pulling it on every run causes timeouts and disk pressure. # # The healthcheck script's disk-space prune only removes dangling images # (not tagged ones), so pre-pulled images persist between CI runs. # # Set gitea_runner_pre_pull_images to a list of image refs to pull, or # empty list to skip pre-pulling. # # IMPORTANT: Do NOT use this mechanism for: # - CI runner container images (e.g. ci-full) — these are already # cached by the runner setup task and pulling them here is redundant. # - Images that molecule tests pull themselves — molecule prepare/converge # steps handle their own image pulls; pre-pulling them here wastes time # and disk space. # This mechanism is intended only for images that are needed by the runner # itself but not pulled by any molecule scenario or runner setup step. - name: Pre-pull Docker images for CI runner ansible.builtin.command: "docker pull {{ item }}" become: true become_user: "{{ gitea_runner_service_user }}" environment: DOCKER_HOST: "unix:///run/user/{{ gitea_runner_uid }}/docker.sock" XDG_RUNTIME_DIR: "/run/user/{{ gitea_runner_uid }}" DBUS_SESSION_BUS_ADDRESS: "unix:path=/run/user/{{ gitea_runner_uid | default(0) }}/bus" register: gitea_runner_pre_pull_result changed_when: "'Status: Downloaded' in gitea_runner_pre_pull_result.stdout or 'Status: Downloaded' in gitea_runner_pre_pull_result.stderr" retries: 3 delay: 5 until: gitea_runner_pre_pull_result is success loop: "{{ gitea_runner_pre_pull_images }}" when: - gitea_runner_docker_rootless_setup - gitea_runner_pre_pull_images | length > 0