PE 40162 approach to CI peter #17
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| --- | |
| name: Test migration for failed database | |
| on: | |
| pull_request: | |
| paths: | |
| - .github/workflows/**/* | |
| - spec/**/* | |
| - lib/**/* | |
| - tasks/**/* | |
| - functions/**/* | |
| - types/**/* | |
| - plans/**/* | |
| - hiera/**/* | |
| - manifests/**/* | |
| - templates/**/* | |
| - files/**/* | |
| - metadata.json | |
| - Rakefile | |
| - Gemfile | |
| - provision.yaml | |
| - .rspec | |
| - .rubocop.yml | |
| - .puppet-lint.rc | |
| - .fixtures.yml | |
| branches: [main] | |
| workflow_dispatch: {} | |
| jobs: | |
| test-migrate-failed-db: | |
| name: PE ${{ matrix.version }} ${{ matrix.architecture }} on ${{ matrix.image }} | |
| runs-on: ubuntu-20.04 | |
| env: | |
| BOLT_GEM: true | |
| BOLT_DISABLE_ANALYTICS: true | |
| LANG: en_US.UTF-8 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| architecture: [extra-large-with-dr] | |
| version: [2023.8.0] # can change to test multiple versions once this one works | |
| image: [almalinux-cloud/almalinux-8] | |
| steps: | |
| - name: Checkout Source | |
| uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ github.head_ref }} | |
| - name: Activate Ruby 2.7 | |
| uses: ruby/setup-ruby@v1 | |
| with: | |
| ruby-version: '2.7' | |
| bundler-cache: true | |
| - name: Print bundle environment | |
| if: ${{ github.repository_owner == 'puppetlabs' }} | |
| run: | | |
| echo ::group::info:bundler | |
| bundle env | |
| echo ::endgroup:: | |
| - name: Run migration | |
| run: | | |
| bundle exec bolt plan show | |
| bundle exec bolt plan run peadm::replace_failed_postgresql \ | |
| --modulepath=spec/fixtures/modules \ | |
| primary_host=primary \ | |
| replica_host=replica \ | |
| working_postgresql_host=primary-pdb-postgresql \ | |
| failed_postgresql_host=replica-pdb-postgresql \ | |
| replacement_postgresql_host=primary-pdb-postgresql \ | |
| --no-host-key-check | |
| - name: Provision test cluster | |
| timeout-minutes: 15 | |
| run: | | |
| echo ::group::prepare | |
| mkdir -p $HOME/.ssh | |
| echo 'Host *' > $HOME/.ssh/config | |
| echo ' ServerAliveInterval 150' >> $HOME/.ssh/config | |
| echo ' ServerAliveCountMax 2' >> $HOME/.ssh/config | |
| bundle exec rake spec_prep | |
| echo ::endgroup:: | |
| echo ::group::provision | |
| bundle exec bolt plan run peadm_spec::provision_test_cluster \ | |
| --modulepath spec/fixtures/modules \ | |
| provider=provision_service \ | |
| image=${{ matrix.image }} \ | |
| architecture=${{ matrix.architecture }} \ | |
| --log-level trace | |
| echo ::endgroup:: | |
| echo ::group::info:request | |
| cat request.json || true; echo | |
| echo ::endgroup:: | |
| echo ::group::info:inventory | |
| sed -e 's/password: .*/password: "[redacted]"/' < spec/fixtures/litmus_inventory.yaml || true | |
| echo ::endgroup:: | |
| - name: Change PE inventory name | |
| run: | | |
| mv spec/fixtures/litmus_inventory.yaml spec/fixtures/litmus_inventory_PE_XL_DR.yaml | |
| - name: Install PE on test cluster | |
| timeout-minutes: 120 | |
| run: | | |
| bundle exec bolt plan run peadm_spec::install_test_cluster \ | |
| --inventoryfile spec/fixtures/litmus_inventory_PE_XL_DR.yaml \ | |
| --modulepath spec/fixtures/modules \ | |
| architecture=${{ matrix.architecture }} \ | |
| version=${{ matrix.version }} \ | |
| console_password=${{ secrets.CONSOLE_PASSWORD }} | |
| - name: Provision single node | |
| timeout-minutes: 15 | |
| run: | | |
| echo ::group::prepare | |
| mkdir -p $HOME/.ssh | |
| echo 'Host *' > $HOME/.ssh/config | |
| echo ' ServerAliveInterval 150' >> $HOME/.ssh/config | |
| echo ' ServerAliveCountMax 2' >> $HOME/.ssh/config | |
| bundle exec rake spec_prep | |
| echo ::endgroup:: | |
| echo ::group::provision | |
| bundle exec bolt plan run peadm_spec::provision_test_cluster \ | |
| --modulepath spec/fixtures/modules \ | |
| provider=provision_service \ | |
| image=almalinux-cloud/almalinux-8 \ | |
| architecture=standard \ | |
| --log-level trace | |
| echo ::endgroup:: | |
| echo ::group::info:request | |
| cat request.json || true; echo | |
| echo ::endgroup:: | |
| echo ::group::info:inventory | |
| sed -e 's/password: .*/password: "[redacted]"/' < spec/fixtures/litmus_inventory.yaml || true | |
| echo ::endgroup:: | |
| - name: Change single node inventory name | |
| run: | | |
| mv spec/fixtures/litmus_inventory.yaml spec/fixtures/litmus_inventory_single_node.yaml | |
| # - name: Run migration | |
| # run: | | |
| # bundle exec bolt plan run peadm::replace_failed_postgresql \ | |
| # --inventoryfile=spec/fixtures/litmus_inventory_PE_XL_DR.yaml \ | |
| # --modulepath=spec/fixtures/modules \ | |
| # primary_host=primary \ | |
| # replica_host=replica \ | |
| # working_postgresql_host=primary-pdb-postgresql \ | |
| # failed_postgresql_host=replica-pdb-postgresql \ | |
| # replacement_postgresql_host=$(yq '.groups[].targets[] | select(.vars.role == "primary") | .uri' spec/fixtures/litmus_inventory_single_node.yaml) \ | |
| # --no-host-key-check | |
| - name: Tear down PE XL DR test cluster | |
| if: ${{ always() }} | |
| continue-on-error: true | |
| run: |- | |
| if [ -f spec/fixtures/litmus_inventory_PE_XL_DR.yaml ]; then | |
| mv spec/fixtures/litmus_inventory_PE_XL_DR.yaml spec/fixtures/litmus_inventory.yaml | |
| echo ::group::tear_down | |
| bundle exec rake 'litmus:tear_down' | |
| echo ::endgroup:: | |
| echo ::group::info:request | |
| cat request.json || true; echo | |
| echo ::endgroup:: | |
| rm -f spec/fixtures/litmus_inventory.yaml | |
| fi | |
| - name: Tear down single node | |
| if: ${{ always() }} | |
| continue-on-error: true | |
| run: |- | |
| if [ -f spec/fixtures/litmus_inventory_single_node.yaml ]; then | |
| mv spec/fixtures/litmus_inventory_single_node.yaml spec/fixtures/litmus_inventory.yaml | |
| echo ::group::tear_down | |
| bundle exec rake 'litmus:tear_down' | |
| echo ::endgroup:: | |
| echo ::group::info:request | |
| cat request.json || true; echo | |
| echo ::endgroup:: | |
| rm -f spec/fixtures/litmus_inventory.yaml | |
| fi |