From b1a2d75572a24c937701ef36bc3374afcca88b6d Mon Sep 17 00:00:00 2001 From: Norman Ziegner Date: Thu, 19 Oct 2023 14:20:59 +0200 Subject: [PATCH 1/2] refactor: wait for background migrations task never changes anything Signed-off-by: Norman Ziegner --- tasks/install.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasks/install.yml b/tasks/install.yml index ed4ed96..ddea8eb 100644 --- a/tasks/install.yml +++ b/tasks/install.yml @@ -99,7 +99,7 @@ retries: 10 delay: 10 check_mode: no - changed_when: remaining.rc != 0 + changed_when: false when: - file.stat.exists - file.stat.executable From 30059fa553870b0f1759396aeea2042f58ad8383 Mon Sep 17 00:00:00 2001 From: Norman Ziegner Date: Fri, 27 Oct 2023 14:15:14 +0200 Subject: [PATCH 2/2] feat: wait for background migration on GitLab upgrades only Signed-off-by: Norman Ziegner --- tasks/install.yml | 45 +++++++++++++++++++++++++++++---------------- tasks/main.yml | 8 ++++---- 2 files changed, 33 insertions(+), 20 deletions(-) diff --git a/tasks/install.yml b/tasks/install.yml index ddea8eb..623ecc7 100644 --- a/tasks/install.yml +++ b/tasks/install.yml @@ -85,26 +85,39 @@ update_cache: true check_mode: false -- name: Ensure gitlab-rails file exist +- name: Check if VERSION file exists ansible.builtin.stat: - path: "/usr/bin/gitlab-rails" - register: file + path: "/var/opt/gitlab/gitlab-rails/VERSION" + register: gitlab_version_file -- name: Wait until all previous background migrations are processed. - become: yes - ansible.builtin.command: - cmd: gitlab-rails runner -e production 'puts Gitlab::BackgroundMigration.remaining' - register: remaining - until: remaining.stdout == "0" - retries: 10 - delay: 10 - check_mode: no - changed_when: false +- name: Wait for background migrations on primary node when: - - file.stat.exists - - file.stat.executable - - gitlab_is_primary is defined - gitlab_is_primary + - gitlab_version_file.stat.exists + - gitlab_rails_binary.stat.exists + - gitlab_rails_binary.stat.executable + block: + - name: Get the currently installed GitLab version + ansible.builtin.slurp: + path: "/var/opt/gitlab/gitlab-rails/VERSION" + register: gitlab_version_base64 + + - name: Set fact about installed GitLab version + ansible.builtin.set_fact: + gitlab_installed_version: "{{ gitlab_version_base64['content'] | b64decode }}" + check_mode: no + + - name: Wait until all previous background migrations are processed. + become: yes + ansible.builtin.command: + cmd: gitlab-rails runner -e production 'puts Gitlab::BackgroundMigration.remaining' + register: remaining + until: remaining.stdout == "0" + retries: 10 + delay: 10 + check_mode: no + changed_when: false + when: gitlab_version == '' or gitlab_installed_version is version(gitlab_version, operator='lt', strict=True) - name: "Install GitLab and add helper to detect failed reconfigures" block: diff --git a/tasks/main.yml b/tasks/main.yml index 7e50772..94ce12e 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -8,14 +8,14 @@ - name: Set OS distribution dependent variables ansible.builtin.include_vars: "{{ ansible_facts['distribution'] }}.yml" -- name: Check whether gitlab-ctl binary is installed +- name: Check whether gitlab-rails binary is installed ansible.builtin.stat: - path: "/usr/bin/gitlab-ctl" - register: gitlab_ctl + path: "/usr/bin/gitlab-rails" + register: gitlab_rails_binary - name: Determine if this is an initial dry-run ansible.builtin.set_fact: - is_initial_dryrun: "{{ ansible_check_mode and not gitlab_ctl.stat.exists }}" + is_initial_dryrun: "{{ ansible_check_mode and not gitlab_rails_binary.stat.exists }}" - name: Check if a previous reconfigure had failed ansible.builtin.stat: