PMM Upgrade Full Matrix (e2e tests) #20
This file contains 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: "PMM Upgrade Full Matrix (e2e 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 | |
repository: | |
description: 'Upgrade to:' | |
required: true | |
default: 'dev-latest' | |
type: choice | |
options: | |
- release | |
- release candidate | |
- dev-latest | |
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 }} | |
version_matrix: ${{ steps.get-matrix.outputs.result }} | |
steps: | |
- 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 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 | |
- name: Get versions matrix | |
id: get-matrix | |
shell: bash | |
run: | | |
array=$(wget -q https://registry.hub.docker.com/v2/repositories/percona/pmm-client/tags?page_size=50 -O - | jq -r .results[].name | grep -v latest | sort -V | grep -E '[[:digit:]]\.[[:digit:]]+\.[[:digit:]]' | tail -10) | |
jq -c -n '$ARGS.positional' --args ${array[@]} | |
echo "result=$(jq -c -n '$ARGS.positional' --args '2.11.0' ${array[@]})" >> "$GITHUB_OUTPUT" | |
configuration: | |
name: 'Configuration / Settings' | |
uses: ./.github/workflows/upgrade-tests-pipeline.yml | |
secrets: inherit | |
needs: push_versions | |
strategy: | |
fail-fast: false | |
matrix: | |
old_version: ${{ fromJSON(needs.push_versions.outputs.version_matrix) }} | |
upgrade_type: ["UI way", "Docker way"] | |
with: | |
pmm_ui_tests_branch: ${{ inputs.pmm_ui_tests_branch || 'main' }} | |
pre_upgrade_tests: '@config-pre-upgrade' | |
post_upgrade_tests: '@config-post-upgrade' | |
pmm_server_start_version: ${{ matrix.old_version }} | |
pmm_client_start_version: ${{ matrix.old_version }} | |
upgrade_type: ${{ matrix.upgrade_type }} | |
pmm_qa_branch: ${{ inputs.pmm_qa_branch || 'main' }} | |
services_list: '' | |
repository: ${{ inputs.repository || 'dev-latest'}} | |
version_string_from: ${{needs.push_versions.outputs.start_version}} | |
version_string_to: ${{needs.push_versions.outputs.finish_version}} | |
rbac: | |
name: "RBAC / User Roles" | |
uses: ./.github/workflows/upgrade-tests-pipeline.yml | |
secrets: inherit | |
needs: push_versions | |
strategy: | |
fail-fast: false | |
matrix: | |
old_version: ${{ fromJSON(needs.push_versions.outputs.version_matrix) }} | |
upgrade_type: ["UI way", "Docker way"] | |
with: | |
pmm_ui_tests_branch: ${{ inputs.pmm_ui_tests_branch || 'main' }} | |
pre_upgrade_tests: '@rbac-pre-upgrade' | |
post_upgrade_tests: '@rbac-post-upgrade' | |
pmm_server_start_version: ${{ matrix.old_version }} | |
pmm_client_start_version: ${{ matrix.old_version }} | |
upgrade_type: ${{ matrix.upgrade_type }} | |
pmm_qa_branch: ${{ inputs.pmm_qa_branch || 'main' }} | |
services_list: '--addclient=ps,1 --addclient=pdpgsql,1' | |
repository: ${{ inputs.repository || 'dev-latest'}} | |
version_string_from: ${{needs.push_versions.outputs.start_version}} | |
version_string_to: ${{needs.push_versions.outputs.finish_version}} | |
# TODO: add / in the job names for good sub-jobs grouping | |
# 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}} |