Upgrade PG-major HA test nightly #59
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
| --- | |
| # PE-44247: nightly HA PG-major upgrade (PG14 -> PG17) on the peadm::upgrade path. | |
| # | |
| # Installs an UPGRADE_FROM release on its default PG14 (standard-with-dr), then | |
| # upgrades to the latest main dev build with puppet_enterprise::postgres_version_override=17 | |
| # forced into the primary's pe.conf, so the cluster -- including the replica -- | |
| # crosses PG14 -> PG17. After the upgrade it asserts the replica's pe-puppetdb | |
| # database exists and the service is active, guarding the PE-44245 regression on | |
| # the modern path (the legacy `puppet infrastructure upgrade` path is guarded by | |
| # pe_acceptance_tests' 040_provision_replica_verify_puppetdb_database test, via | |
| # PE-44321). | |
| name: Upgrade PG-major HA test nightly | |
| on: | |
| schedule: | |
| - cron: 0 4 * * * | |
| workflow_dispatch: {} | |
| jobs: | |
| test-upgrade-pg-major-ha: | |
| name: PE ${{ matrix.version }} PG14->PG17 to nightly dev using ${{ matrix.architecture }} | |
| on ${{ matrix.image }} | |
| if: ${{ github.repository_owner == 'puppetlabs' }} | |
| runs-on: ubuntu-latest | |
| env: | |
| BOLT_GEM: true | |
| BOLT_DISABLE_ANALYTICS: true | |
| LANG: en_US.UTF-8 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| architecture: [standard-with-dr] | |
| version: [2023.8.10] | |
| image: [almalinux-cloud/almalinux-8] | |
| steps: | |
| - name: Checkout Source | |
| uses: actions/checkout@v4 | |
| - 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 }} | |
| 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: 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 }} | |
| - name: Verify replica is on PG14 before upgrade | |
| timeout-minutes: 15 | |
| run: | | |
| bundle exec bolt plan run peadm_spec::verify_replica_pe_puppetdb \ | |
| --inventoryfile spec/fixtures/litmus_inventory.yaml \ | |
| --modulepath spec/fixtures/modules \ | |
| expected_psql_version="14" | |
| - name: Activate twingate to obtain unreleased build | |
| uses: twingate/github-action@main | |
| with: | |
| service-key: ${{ secrets.TWINGATE_PUBLIC_REPO_KEY }} | |
| - name: Get latest build name | |
| id: latest | |
| run: | | |
| echo "::set-output name=ver::$(curl -q https://artifactory.delivery.puppetlabs.net/artifactory/generic_enterprise__local/main/ci-ready/LATEST)" | |
| - name: Upgrade PE on test cluster (forcing PG14 -> PG17) | |
| timeout-minutes: 120 | |
| run: | | |
| bundle exec bolt plan run peadm_spec::upgrade_test_cluster \ | |
| --inventoryfile spec/fixtures/litmus_inventory.yaml \ | |
| --modulepath spec/fixtures/modules \ | |
| permit_unsafe_versions=true \ | |
| download_mode="bolthost" \ | |
| architecture=${{ matrix.architecture }} \ | |
| postgres_version_override="17" \ | |
| pe_installer_source="https://artifactory.delivery.puppetlabs.net/artifactory/generic_enterprise__local/main/ci-ready/puppet-enterprise-${{ steps.latest.outputs.ver }}-el-8-x86_64.tar" | |
| - name: Verify pe-puppetdb on the replica is on PG17 (PE-44245 regression guard) | |
| timeout-minutes: 15 | |
| run: | | |
| bundle exec bolt plan run peadm_spec::verify_replica_pe_puppetdb \ | |
| --inventoryfile spec/fixtures/litmus_inventory.yaml \ | |
| --modulepath spec/fixtures/modules \ | |
| expected_psql_version="17" | |
| - name: Tear down 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 |