Skip to content

PMM Upgrade UI Tests #8

PMM Upgrade UI Tests

PMM Upgrade UI Tests #8

name: PMM Upgrade UI Tests
on:
schedule:
- cron: '0 0 * * *'
workflow_dispatch:
inputs:
pmm_ui_tests_branch:
description: 'pmm-ui-tests repository branch'
default: 'main'
required: true
pmm_qa_branch:
description: 'pmm-qa repository branch(for setup)'
default: 'main'
required: true
pmm_server_start_version:
description: 'PMM Server version to upgrade (latest|dev-latest|x.xx.x|x.xx.x-rc)'
default: 'latest'
required: true
pmm_client_start_version:
description: 'PMM Client version to upgrade from (dev-latest|pmm2-latest|pmm2-rc|x.xx.x)'
default: 'pmm2-latest'
required: true
upgrade_type:
description: 'Upgrade way:'
required: true
default: 'UI way'
type: choice
options:
- UI way
- Docker way
- Side container
repository:
description: 'Upgrade to:'
required: true
default: 'dev-latest'
type: choice
options:
- release
- release candidate
- dev-latest
workflow_call:
inputs:
pmm_ui_tests_branch:
description: 'pmm-ui-tests repository branch'
default: 'main'
type: string
required: true
pmm_qa_branch:
description: 'pmm-qa repository branch(for setup)'
default: 'main'
type: string
required: true
pmm_server_start_version:
description: 'PMM Server version to upgrade (latest|dev-latest|x.xx.x|x.xx.x-rc)'
default: 'latest'
type: string
required: true
pmm_client_start_version:
description: 'PMM Client version to upgrade from (dev-latest|pmm2-latest|pmm2-rc|x.xx.x)'
default: 'pmm2-latest'
type: string
required: true
upgrade_type:
description: 'Upgrade way:'
required: true
default: 'UI way'
type: string
repository:
description: 'Upgrade to:'
required: true
default: 'dev-latest'
type: string
jobs:
push_versions:
name: Push repo versions
runs-on: ubuntu-latest
timeout-minutes: 1
outputs:
start_version: ${{ steps.get-start.outputs.result }}
finish_version: ${{ steps.get-finish.outputs.result }}
steps:
- name: Prevent upgrade to the same version
shell: bash
run: |
if [[ "${{ inputs.pmm_server_start_version }}" = "latest" && "${{ inputs.repository }}" = "release" ]]; then
echo "Upgrade to the same version is forbidden!"
exit 1
fi
if [[ "${{ inputs.pmm_server_start_version }}" = "dev-latest" && "${{ inputs.repository }}" = "dev-latest" ]]; then
echo "Upgrade to the same version is forbidden!"
exit 1
fi
- name: Discover latest versions
shell: bash
run: |
r_latest=$(wget -q https://registry.hub.docker.com/v2/repositories/percona/pmm-client/tags -O - | jq -r .results[].name | grep -v latest | sort -V | tail -n1)
rc_latest=$(wget -q "https://registry.hub.docker.com/v2/repositories/perconalab/pmm-client/tags?page_size=25&name=rc" -O - | jq -r .results[].name | grep 2.*.*-rc$ | sort -V | tail -n1)
rc_minor=$(echo $rc_latest | awk -F. '{print $2}')
d_latest="2.$((++rc_minor)).0"
echo "release_latest=$r_latest" >> $GITHUB_ENV
echo "rc_latest=$rc_latest" >> $GITHUB_ENV
echo "dev_latest=$d_latest" >> $GITHUB_ENV
- name: Get start version string
id: get-start
shell: bash
run: |
if [[ "${{ inputs.pmm_server_start_version }}" = "latest" ]]; then
echo "result=$release_latest" >> "$GITHUB_OUTPUT"
fi
if [[ "${{ inputs.pmm_server_start_version }}" = "dev-latest" ]]; then
echo "result=$dev_latest" >> "$GITHUB_OUTPUT"
fi
- name: Get finish version string
id: get-finish
shell: bash
run: |
if [[ "${{ inputs.repository }}" = "dev-latest" ]]; then
echo "result=$dev_latest" >> "$GITHUB_OUTPUT"
fi
if [[ "${{ inputs.repository }}" = "release candidate" ]]; then
echo "result=$rc_latest" >> "$GITHUB_OUTPUT"
fi
if [[ "${{ inputs.repository }}" = "release" ]]; then
echo "result=$release_latest" >> "$GITHUB_OUTPUT"
fi
configuration:
name: 'Configuration / Settings'
uses: ./.github/workflows/upgrade-tests-pipeline.yml
secrets: inherit
needs: push_versions
with:
pmm_ui_tests_branch: ${{ inputs.pmm_ui_tests_branch }}
pre_upgrade_tests: '@config-pre-upgrade'
post_upgrade_tests: '@config-post-upgrade'
pmm_server_start_version: ${{ inputs.pmm_server_start_version }}
pmm_client_start_version: ${{ inputs.pmm_client_start_version }}
upgrade_type: ${{ inputs.upgrade_type }}
pmm_qa_branch: ${{ inputs.pmm_qa_branch }}
services_list: ''
repository: ${{ inputs.repository }}
version_string_from: ${{needs.push_versions.outputs.start_version}}
version_string_to: ${{needs.push_versions.outputs.finish_version}}
rbac:
name: RBAC
uses: ./.github/workflows/upgrade-tests-pipeline.yml
secrets: inherit
needs: push_versions
with:
pmm_ui_tests_branch: ${{ inputs.pmm_ui_tests_branch }}
pre_upgrade_tests: '@rbac-pre-upgrade'
post_upgrade_tests: '@rbac-post-upgrade'
pmm_server_start_version: ${{ inputs.pmm_server_start_version }}
pmm_client_start_version: ${{ inputs.pmm_client_start_version }}
upgrade_type: ${{ inputs.upgrade_type }}
pmm_qa_branch: ${{ inputs.pmm_qa_branch }}
services_list: '--addclient=ps,1 --addclient=pdpgsql,1'
repository: ${{ inputs.repository }}
version_string_from: ${{needs.push_versions.outputs.start_version}}
version_string_to: ${{needs.push_versions.outputs.finish_version}}
# portal:
# name: Portal
# uses: ./.github/workflows/upgrade-tests-pipeline.yml
# secrets: inherit
# needs: push_versions
# with:
# pmm_ui_tests_branch: ${{ inputs.pmm_ui_tests_branch }}
# pre_upgrade_tests: '@pre-pmm-portal-upgrade'
# post_upgrade_tests: '@post-pmm-portal-upgrade'
# pmm_server_start_version: ${{ inputs.pmm_server_start_version }}
# pmm_client_start_version: ${{ inputs.pmm_client_start_version }}
# upgrade_type: ${{ inputs.upgrade_type }}
# pmm_qa_branch: ${{ inputs.pmm_qa_branch }}
# services_list: ''
# repository: ${{ inputs.repository }}
# version_string_from: ${{needs.push_versions.outputs.start_version}}
# version_string_to: ${{needs.push_versions.outputs.finish_version}}
#
# inventory:
# name: 'Inventory'
# uses: ./.github/workflows/upgrade-tests-pipeline.yml
# secrets: inherit
# needs: push_versions
# with:
# pmm_ui_tests_branch: ${{ inputs.pmm_ui_tests_branch }}
# pre_upgrade_tests: '@inventory-pre-upgrade'
# post_upgrade_tests: '@inventory-post-upgrade'
# pmm_server_start_version: ${{ inputs.pmm_server_start_version }}
# pmm_client_start_version: ${{ inputs.pmm_client_start_version }}
# upgrade_type: ${{ inputs.upgrade_type }}
# pmm_qa_branch: ${{ inputs.pmm_qa_branch }}
# services_list: '--addclient=modb,1'
# repository: ${{ inputs.repository }}
# version_string_from: ${{needs.push_versions.outputs.start_version}}
# version_string_to: ${{needs.push_versions.outputs.finish_version}}