
We had been testing the gerrit upgrade from 3.9 to 3.11. Now that we are running 3.10 we really should test the 3.10 to 3.11 upgrade. Fix that. While we are at it catch the default test gerrit version up to 3.10 as well (it was 3.8 but I don't think we use the default anywhere so this is mostly a noop). Change-Id: Idafbddf3b9af54b45e6b7e06fda1ede6aa0a995e
144 lines
4.8 KiB
YAML
144 lines
4.8 KiB
YAML
# Note this playbook is in the zuul/ dir because it is very test specific
|
|
# currently. We could potentially rewrite things so that this can be used
|
|
# in production but it isn't currently ready for that.
|
|
#
|
|
# In particular it bootstraps users and test changes assuming a test env.
|
|
|
|
- name: Ensure initial gerrit state without starting Gerrit
|
|
import_playbook: ../service-review.yaml
|
|
vars:
|
|
gerrit_container_image: docker.io/opendevorg/gerrit:3.10
|
|
gerrit_run_init: false
|
|
gerrit_run_reindex: false
|
|
gerrit_run_compose_up: false
|
|
|
|
- hosts: "review:!disabled"
|
|
name: "Record pre Gerrit deployment configuration state"
|
|
tasks:
|
|
# This allows us to check that our config file isn't modified by newer
|
|
# Gerrit versions.
|
|
- name: Backup config files pre deploy
|
|
block:
|
|
- name: Find .config files
|
|
find:
|
|
paths: /home/gerrit2/review_site/etc
|
|
patterns: '*.config'
|
|
register: _config_files_pre_deploy
|
|
|
|
- name: 'Backup config file'
|
|
copy:
|
|
src: '{{ item }}'
|
|
dest: '{{ item }}.pre-deploy'
|
|
remote_src: true
|
|
loop: "{{ _config_files_pre_deploy.files | map(attribute='path') | list }}"
|
|
|
|
- name: Start Gerrit on the old version of Gerrit
|
|
import_playbook: ../service-review.yaml
|
|
vars:
|
|
gerrit_container_image: docker.io/opendevorg/gerrit:3.10
|
|
|
|
- hosts: "review:!disabled"
|
|
name: "Wait for gerrit to be up and running"
|
|
tasks:
|
|
- name: Pause for a few seconds to give gerrit time to start
|
|
wait_for:
|
|
timeout: 30
|
|
|
|
- name: Bootstrap gerrit to be semi useable
|
|
# This is necessary to perform actions on the old side pre upgrade
|
|
import_playbook: ./bootstrap-test-review.yaml
|
|
|
|
- hosts: "review:!disabled"
|
|
name: "Prepare Gerrit for Upgrade"
|
|
tasks:
|
|
- name: Stop gerrit before we upgrade
|
|
shell:
|
|
cmd: docker-compose down
|
|
chdir: /etc/gerrit-compose/
|
|
|
|
# This allows us to check that our config file isn't modified by newer
|
|
# Gerrit versions.
|
|
- name: Backup config files pre upgrade
|
|
block:
|
|
- name: Find .config files
|
|
find:
|
|
paths: /home/gerrit2/review_site/etc
|
|
patterns: '*.config'
|
|
register: _config_files_pre_upgrade
|
|
|
|
- name: 'Backup config file'
|
|
copy:
|
|
src: '{{ item }}'
|
|
dest: '{{ item }}.pre-upgrade'
|
|
remote_src: true
|
|
loop: "{{ _config_files_pre_upgrade.files | map(attribute='path') | list }}"
|
|
|
|
# Record h2 cache files. We will use this to highlight any new caches
|
|
# under the new Gerrit version.
|
|
- name: Record Gerrit old cache files
|
|
find:
|
|
paths: /home/gerrit2/review_site/cache
|
|
patterns: '*.h2.db'
|
|
register: _old_cache_files
|
|
|
|
- name: Perform gerrit upgrade
|
|
import_playbook: ../service-review.yaml
|
|
vars:
|
|
gerrit_container_image: docker.io/opendevorg/gerrit:3.11
|
|
gerrit_run_init: true
|
|
# Gerrit 3.10 -> 3.11 upgrade does not require an offline reindex
|
|
gerrit_run_reindex: false
|
|
|
|
- hosts: "review:!disabled"
|
|
name: "Post upgrade config check"
|
|
tasks:
|
|
- name: Diff config files pre deploy to pre upgrade
|
|
shell: |
|
|
set -o pipefail
|
|
diff -u {{ item }}.pre-deploy {{ item }}.pre-upgrade | tee {{ item }}.deploy.diff
|
|
args:
|
|
executable: /bin/bash
|
|
loop: "{{ _config_files_pre_upgrade.files | map(attribute='path') | list }}"
|
|
register: _diff_output_deploy
|
|
|
|
- name: Diff config files pre upgrade to post upgrade
|
|
shell: |
|
|
set -o pipefail
|
|
diff -u {{ item }}.pre-upgrade {{ item }} | tee {{ item }}.upgrade.diff
|
|
args:
|
|
executable: /bin/bash
|
|
loop: "{{ _config_files_pre_upgrade.files | map(attribute='path') | list }}"
|
|
register: _diff_output_upgrade
|
|
|
|
- name: Check the config diffs after deployment
|
|
fail:
|
|
msg: 'Difference detected in file {{ item.item }} '
|
|
when: item.rc != 0
|
|
loop: '{{ _diff_output_deploy.results }}'
|
|
|
|
- name: Check the config diffs after upgrade
|
|
fail:
|
|
msg: 'Difference detected in file {{ item.item }} '
|
|
when: item.rc != 0
|
|
loop: '{{ _diff_output_upgrade.results }}'
|
|
|
|
- name: Record Gerrit new cache files
|
|
find:
|
|
paths: /home/gerrit2/review_site/cache
|
|
patterns: '*.h2.db'
|
|
register: _new_cache_files
|
|
|
|
- name: Manipulate find data for caches
|
|
set_fact:
|
|
_old_cache_paths: "{{ _old_cache_files.files | map(attribute='path') | list }}"
|
|
_new_cache_paths: "{{ _new_cache_files.files | map(attribute='path') | list }}"
|
|
|
|
- name: Find delta between cache listings
|
|
set_fact:
|
|
_gerrit_cache_difference: "{{ _old_cache_paths | symmetric_difference(_new_cache_paths) }}"
|
|
|
|
- name: Check for new cache files
|
|
debug:
|
|
msg: "The new Gerrit version produces new on disk caches: {{ _gerrit_cache_difference }}"
|
|
when: _gerrit_cache_difference | length > 0
|