# 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.7 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.7 - 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.8 gerrit_run_init: true # Gerrit 3.7 -> 3.8 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