diff --git a/.github/workflows/test-upgrade-debug.yaml b/.github/workflows/test-upgrade-debug.yaml new file mode 100644 index 00000000..bafa6797 --- /dev/null +++ b/.github/workflows/test-upgrade-debug.yaml @@ -0,0 +1,139 @@ +--- +name: Upgrade test debug +on: + workflow_dispatch: + inputs: + image: + description: GCP image for test cluster + required: true + default: almalinux-cloud/almalinux-8 + architecture: + type: choice + required: true + default: standard + description: PE architecture to test + options: + - standard + - standard-with-dr + - large + - large-with-dr + - extra-large + - extra-large-with-dr + version: + description: PE version to install initially + required: true + default: 2021.7.9 + upgrade_version: + description: PE version to upgrade to + required: true + default: 2023.8.6 + ssh-debugging: + description: Boolean; whether or not to pause for ssh debugging + required: true + default: 'false' +jobs: + test-upgrade-debug: + name: PE ${{ matrix.version }} ${{ matrix.architecture }} on ${{ matrix.image }} + runs-on: ubuntu-latest + env: + BOLT_GEM: true + BOLT_DISABLE_ANALYTICS: true + LANG: en_US.UTF-8 + strategy: + fail-fast: false + matrix: + download_mode: [direct] + architecture: ['${{ github.event.inputs.architecture }}'] + version: ['${{ github.event.inputs.version }}'] + version_to_upgrade: ['${{ github.event.inputs.upgrade_version }}'] + image: ['${{ github.event.inputs.image }}'] + 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: Echo Install PE on test cluster command + timeout-minutes: 120 + run: | + echo 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: Start SSH session + if: ${{ github.event.inputs.ssh-debugging == 'true' }} + uses: luchihoratiu/debug-via-ssh@main + with: + NGROK_AUTH_TOKEN: ${{ secrets.NGROK_AUTH_TOKEN }} + SSH_PASS: ${{ secrets.SSH_PASS2 }} + - 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: Wait as long as the file ${HOME}/pause file is present + if: ${{ always() && github.event.inputs.ssh-debugging == 'true' }} + run: | + while [ -f "${HOME}/pause" ] ; do + echo "${HOME}/pause present, sleeping for 60 seconds..." + sleep 60 + done + echo "${HOME}/pause absent, continuing workflow." + - name: Upgrade PE on test cluster + timeout-minutes: 120 + run: | + bundle exec bolt plan run peadm_spec::upgrade_test_cluster \ + --inventoryfile spec/fixtures/litmus_inventory.yaml \ + --modulepath spec/fixtures/modules \ + architecture=${{ matrix.architecture }} \ + download_mode=${{ matrix.download_mode }} \ + version=${{ matrix.version_to_upgrade }} + - 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