(PE-42498) Update to support Bolt v5 #329
Workflow file for this run
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 | |
| 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-migration: | |
| name: PE ${{ matrix.version }} ${{ matrix.architecture }} on ${{ matrix.image }} | |
| PE upgrade? ${{ matrix.new_pe_version }} | |
| runs-on: ubuntu-latest | |
| env: | |
| BOLT_GEM: true | |
| BOLT_DISABLE_ANALYTICS: true | |
| LANG: en_US.UTF-8 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| architecture: | |
| - standard | |
| - standard-with-dr | |
| - large | |
| - extra-large | |
| - large-with-dr | |
| - extra-large-with-dr | |
| version: [2021.7.9, 2023.8.6, 2025.6.0] | |
| image: [almalinux-cloud/almalinux-8] | |
| include: | |
| - architecture: standard | |
| version: 2023.8.6 | |
| image: almalinux-cloud/almalinux-8 | |
| new_pe_version: 2025.6.0 | |
| - architecture: large | |
| version: 2023.8.6 | |
| image: almalinux-cloud/almalinux-8 | |
| new_pe_version: 2025.6.0 | |
| - architecture: extra-large | |
| version: 2023.8.6 | |
| image: almalinux-cloud/almalinux-8 | |
| new_pe_version: 2025.6.0 | |
| # excluding the following combinations as due to their long running nature they always fail due to | |
| # the test nodes in GCP that litmus provisions becoming unreachable after a time. If we address PE-40902 | |
| # to change how we provision test nodes in CI then we will hopefully be able to include these | |
| exclude: | |
| - architecture: extra-large-with-dr | |
| version: 2023.8.6 | |
| image: almalinux-cloud/almalinux-8 | |
| - architecture: extra-large-with-dr | |
| version: 2025.6.0 | |
| image: almalinux-cloud/almalinux-8 | |
| steps: | |
| - name: Checkout Source | |
| uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ github.head_ref }} | |
| - name: Activate Ruby 3.1 | |
| uses: ruby/setup-ruby@v1 | |
| with: | |
| ruby-version: '3.1' | |
| bundler-cache: true | |
| - name: Print bundle environment | |
| if: ${{ github.repository_owner == 'puppetlabs' }} | |
| run: | | |
| echo ::group::info:bundler | |
| bundle env | |
| echo ::endgroup:: | |
| - 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 }}-migration \ | |
| --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:: | |
| echo ::group::certnames | |
| bundle exec bolt plan run peadm_spec::add_inventory_hostnames \ | |
| --inventory spec/fixtures/litmus_inventory.yaml \ | |
| --modulepath spec/fixtures/modules \ | |
| --no-host-key-check \ | |
| inventory_file=spec/fixtures/litmus_inventory.yaml | |
| echo ::endgroup:: | |
| - name: Output contents of litmus_inventory.yaml | |
| run: | | |
| cat spec/fixtures/litmus_inventory.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.yaml \ | |
| --modulepath spec/fixtures/modules \ | |
| architecture=${{ matrix.architecture }} \ | |
| version=${{ matrix.version }} \ | |
| console_password=${{ secrets.CONSOLE_PASSWORD }} \ | |
| code_manager_auto_configure=true | |
| - name: Perform migration | |
| 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:: | |
| bundle exec bolt plan run peadm_spec::test_migration \ | |
| --inventoryfile spec/fixtures/litmus_inventory.yaml \ | |
| --modulepath spec/fixtures/modules \ | |
| primary_host=$(yq -r '.groups[].targets[] | select(.vars.role == "primary") | .name // ""' spec/fixtures/litmus_inventory.yaml) \ | |
| new_primary_host=$(yq -r '.groups[].targets[] | select(.vars.role == "new-primary") | .name // ""' spec/fixtures/litmus_inventory.yaml) \ | |
| new_replica_host=$(yq -r '.groups[].targets[] | select(.vars.role == "new-replica") | .name // ""' spec/fixtures/litmus_inventory.yaml) \ | |
| new_primary_postgresql_host=$(yq -r '.groups[].targets[] | select(.vars.role == "new-primary-pdb-postgresql") | .name // ""' spec/fixtures/litmus_inventory.yaml) \ | |
| new_replica_postgresql_host=$(yq -r '.groups[].targets[] | select(.vars.role == "new-replica-pdb-postgresql") | .name // ""' spec/fixtures/litmus_inventory.yaml) \ | |
| upgrade_version=${{ matrix.new_pe_version }} \ | |
| --no-host-key-check | |
| - name: Tear down PE ${{ matrix.architecture }} test cluster | |
| if: ${{ always() }} | |
| continue-on-error: true | |
| run: |- | |
| if [ -f spec/fixtures/litmus_inventory.yaml ]; then | |
| echo ::group::tear_down | |
| bundle exec rake 'litmus:tear_down' | |
| echo ::endgroup:: | |
| echo ::group::info:request | |
| cat request.json || true; echo | |
| echo ::endgroup:: | |
| fi |