LEAPP Release CTC-2 candidate 1 (8.10/9.5)

- Fix broken leapp db queries on rerun
- Port all code to be Python-3.12 compatible.
- Resolves: RHEL-40363
This commit is contained in:
Toshio Kuratomi 2024-07-24 19:18:17 -07:00
parent 853180dbcf
commit 1be26899be
18 changed files with 1816 additions and 2 deletions

View File

@ -1,7 +1,7 @@
From 91b309ac8c4cf6a709694144cb1e451ff1fa72f7 Mon Sep 17 00:00:00 2001 From 91b309ac8c4cf6a709694144cb1e451ff1fa72f7 Mon Sep 17 00:00:00 2001
From: David Kubek <dkubek@redhat.com> From: David Kubek <dkubek@redhat.com>
Date: Mon, 13 May 2024 18:07:26 +0200 Date: Mon, 13 May 2024 18:07:26 +0200
Subject: [PATCH 7/7] Extend information from leapp saved to leappdb (#847) Subject: [PATCH 07/23] Extend information from leapp saved to leappdb (#847)
This commit combines multiple additions to the leapp database. This commit combines multiple additions to the leapp database.

View File

@ -0,0 +1,31 @@
From 98a5d07dfafd26a37d486cd9fcfdb4c9c9540c23 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Fri, 24 May 2024 09:02:08 +0200
Subject: [PATCH 08/23] Update peter-evans/create-or-update-comment digest to
v4 (#860)
* Update .github/workflows/pr-welcome-msg.yml
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
.github/workflows/pr-welcome-msg.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/pr-welcome-msg.yml b/.github/workflows/pr-welcome-msg.yml
index 143c54b..af5d543 100644
--- a/.github/workflows/pr-welcome-msg.yml
+++ b/.github/workflows/pr-welcome-msg.yml
@@ -14,7 +14,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Create comment
- uses: peter-evans/create-or-update-comment@a35cf36e5301d70b76f316e867e7788a55a31dae
+ uses: peter-evans/create-or-update-comment@v4
with:
issue-number: ${{ github.event.pull_request.number }}
body: |
--
2.42.0

View File

@ -0,0 +1,53 @@
From bcd3cea72e86b693efbfe1177deff65b2b47c045 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Fri, 10 May 2024 14:55:14 +0000
Subject: [PATCH 09/23] Update dependency ubuntu to v22
---
.github/workflows/reuse-copr-build.yml | 2 +-
.github/workflows/reuse-tests-7to8.yml | 2 +-
.github/workflows/reuse-tests-8to9.yml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/.github/workflows/reuse-copr-build.yml b/.github/workflows/reuse-copr-build.yml
index 7ccd282..06124d2 100644
--- a/.github/workflows/reuse-copr-build.yml
+++ b/.github/workflows/reuse-copr-build.yml
@@ -16,7 +16,7 @@ jobs:
reusable_workflow_copr_build_job:
# This job only runs for '/rerun' pull request comments by owner, member, or collaborator of the repo/organization.
name: Build copr builds for tft tests
- runs-on: ubuntu-20.04
+ runs-on: ubuntu-22.04
outputs:
artifacts: ${{ steps.gen_artifacts.outputs.artifacts }}
if: |
diff --git a/.github/workflows/reuse-tests-7to8.yml b/.github/workflows/reuse-tests-7to8.yml
index cfdfb35..cfa8f41 100644
--- a/.github/workflows/reuse-tests-7to8.yml
+++ b/.github/workflows/reuse-tests-7to8.yml
@@ -42,7 +42,7 @@ on:
jobs:
reusable_workflow_job:
name: Schedule regression tests on Testing Farm
- runs-on: ubuntu-20.04
+ runs-on: ubuntu-22.04
steps:
- name: Schedule regression testing for 7to8
id: run_test_7to8
diff --git a/.github/workflows/reuse-tests-8to9.yml b/.github/workflows/reuse-tests-8to9.yml
index 5d2e9d5..2315e70 100644
--- a/.github/workflows/reuse-tests-8to9.yml
+++ b/.github/workflows/reuse-tests-8to9.yml
@@ -43,7 +43,7 @@ jobs:
reusable_workflow_job:
# This job only runs for '/rerun' pull request comments by owner, member, or collaborator of the repo/organization.
name: Schedule regression tests on Testing Farm
- runs-on: ubuntu-20.04
+ runs-on: ubuntu-22.04
steps:
- name: Schedule regression testing for 8to9
id: run_test_8to9
--
2.42.0

View File

@ -0,0 +1,34 @@
From 765f040e97bda245099f66768d3192745eb8a17a Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Thu, 9 May 2024 10:35:11 +0000
Subject: [PATCH 10/23] Update actions/github-script action to v7
---
.github/workflows/reuse-copr-build.yml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/reuse-copr-build.yml b/.github/workflows/reuse-copr-build.yml
index 06124d2..3327874 100644
--- a/.github/workflows/reuse-copr-build.yml
+++ b/.github/workflows/reuse-copr-build.yml
@@ -102,7 +102,7 @@ jobs:
- name: Add comment with copr build url
# TODO: Create comment when copr build fails.
id: link_copr
- uses: actions/github-script@v4
+ uses: actions/github-script@v7
with:
script: |
github.issues.createComment({
@@ -160,7 +160,7 @@ jobs:
# TODO: Create comment when copr build fails.
id: link_copr_leapp_repository
if: ${{ steps.leapp_repository_pr_regex_match.outputs.match != '' }}
- uses: actions/github-script@v4
+ uses: actions/github-script@v7
with:
script: |
github.issues.createComment({
--
2.42.0

View File

@ -0,0 +1,48 @@
From 03c651c4ada21442dc3604f18c8149f55d66e0f5 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Thu, 9 May 2024 10:35:07 +0000
Subject: [PATCH 11/23] Update actions/checkout action to v4
---
.github/workflows/reuse-copr-build.yml | 4 ++--
.github/workflows/unit-tests.yml | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/.github/workflows/reuse-copr-build.yml b/.github/workflows/reuse-copr-build.yml
index 3327874..a935c7e 100644
--- a/.github/workflows/reuse-copr-build.yml
+++ b/.github/workflows/reuse-copr-build.yml
@@ -49,7 +49,7 @@ jobs:
# TODO: The correct way to checkout would be to use simmilar approach as in get_commit_by_timestamp function of
# the github gluetool module (i.e. do not use HEAD but the last commit before comment).
id: checkout
- uses: actions/checkout@v2
+ uses: actions/checkout@v4
with:
ref: "refs/pull/${{ steps.pr_nr.outputs.pr_nr }}/head"
@@ -121,7 +121,7 @@ jobs:
- name: Checkout leapp-repository
id: checkout_leapp_repository
if: ${{ steps.leapp_repository_pr_regex_match.outputs.match != '' }}
- uses: actions/checkout@v2
+ uses: actions/checkout@v4
with:
repository: "oamg/leapp-repository"
ref: "refs/pull/${{ steps.leapp_repository_pr.outputs.leapp_repository_pr }}/head"
diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml
index 123a73e..e2376b7 100644
--- a/.github/workflows/unit-tests.yml
+++ b/.github/workflows/unit-tests.yml
@@ -27,7 +27,7 @@ jobs:
steps:
- name: Checkout code
- uses: actions/checkout@v2
+ uses: actions/checkout@v4
with:
fetch-depth: '0'
- name: Set master to origin/master
--
2.42.0

View File

@ -0,0 +1,34 @@
From bf4fd611f95a4484e376ba04f55c6626c18bb48c Mon Sep 17 00:00:00 2001
From: Petr Stodulka <pstodulk@redhat.com>
Date: Wed, 3 Jul 2024 14:55:52 +0200
Subject: [PATCH 12/23] Packit: drop epel-7-ppc64le chroot
CentOS 7 is EOM and based on that additional changes have to be made
in COPR. Use x86_64 arch for epel7 now only.
---
.packit.yaml | 2 --
1 file changed, 2 deletions(-)
diff --git a/.packit.yaml b/.packit.yaml
index 4e9c239..eb3a8f9 100644
--- a/.packit.yaml
+++ b/.packit.yaml
@@ -12,7 +12,6 @@ jobs:
owner: "@oamg"
project: leapp
targets:
- - epel-7-ppc64le
- epel-7-x86_64
- epel-8-x86_64
- fedora-all-aarch64
@@ -31,7 +30,6 @@ jobs:
owner: "@oamg"
project: leapp
targets:
- - epel-7-ppc64le
- epel-7-x86_64
- epel-8-x86_64
- fedora-all-aarch64
--
2.42.0

View File

@ -0,0 +1,831 @@
From c397a0d142ed9915ba3b1e4276b7fbf8856b37da Mon Sep 17 00:00:00 2001
From: Petr Stodulka <pstodulk@redhat.com>
Date: Tue, 16 Jul 2024 18:32:07 +0200
Subject: [PATCH 13/23] Packit: Bring all changes from leapp-repository
- replace the sanity tag by 'tier0' (RHELMISC-3211)
- Update ENV variables for RHUI tests
- Enable upgrade path to 8.10 on AWS
- adjust post_install_script for RHEL 7.9 (moved to TF)
- Use frozen branch for rhel7 downstream testing as RHEL 7 is EOM
---
.packit.yaml | 542 +++++++++++++++++++++++++++++++++------------------
1 file changed, 352 insertions(+), 190 deletions(-)
diff --git a/.packit.yaml b/.packit.yaml
index eb3a8f9..318abd4 100644
--- a/.packit.yaml
+++ b/.packit.yaml
@@ -45,7 +45,8 @@ jobs:
# NOTE: to see what envars, targets, .. can be set in tests, see
# the configuration of tests here:
-# https://gitlab.cee.redhat.com/oamg/leapp-tests/-/blob/main/config.yaml
+# 7toX path https://gitlab.cee.redhat.com/oamg/leapp-tests/-/blob/rhel7/config.yaml
+# >7tox path https://gitlab.cee.redhat.com/oamg/leapp-tests/-/blob/main/config.yaml
# Available only to RH Employees.
# ###################################################################### #
@@ -59,7 +60,7 @@ jobs:
job: tests
trigger: ignore
fmf_url: "https://gitlab.cee.redhat.com/oamg/leapp-tests"
- fmf_ref: "main"
+ fmf_ref: "rhel7"
use_internal_tf: True
labels:
- sanity
@@ -68,26 +69,6 @@ jobs:
distros: [RHEL-7.9-ZStream]
identifier: sanity-abstract-7to8
tmt_plan: ""
- tf_extra_params:
- test:
- tmt:
- plan_filter: 'tag:tier0 & enabled:true'
- environments:
- - artifacts:
- - type: "repository"
- id: "https://download.copr.fedorainfracloud.org/results/@oamg/leapp/epel-7-x86_64/"
- packages:
- - leapp-repository
- - python2-leapp
- - leapp-upgrade-el7toel8-deps
- order: 40
- tmt:
- context:
- distro: "rhel-7.9"
- settings:
- provisioning:
- tags:
- BusinessUnit: sst_upgrades@leapp_upstream_test
- &sanity-abstract-7to8-aws
<<: *sanity-abstract-7to8
@@ -98,12 +79,35 @@ jobs:
epel-7-x86_64:
distros: [RHEL-7.9-rhui]
identifier: sanity-abstract-7to8-aws
- # NOTE(ivasilev) Unfortunately to use yaml templates we need to rewrite the whole tf_extra_params dict
- # to use plan_filter (can't just specify one section test.tmt.plan_filter, need to specify environments.* as well)
+
+# On-demand minimal beaker tests
+- &beaker-minimal-7to8-abstract-ondemand
+ <<: *sanity-abstract-7to8
+ manual_trigger: True
+ labels:
+ - beaker-minimal
+ identifier: beaker-minimal-7to8-abstract-ondemand
+
+# On-demand kernel-rt tests
+- &kernel-rt-abstract-7to8-ondemand
+ <<: *beaker-minimal-7to8-abstract-ondemand
+ labels:
+ - kernel-rt
+ identifier: sanity-7to8-kernel-rt-abstract-ondemand
+
+# ###################################################################### #
+# ######################### Individual tests ########################### #
+# ###################################################################### #
+
+# Tests: 7.9 -> 8.8
+- &sanity-79to88-aws
+ <<: *sanity-abstract-7to8-aws
+ trigger: pull_request
+ identifier: sanity-7.9to8.8-aws
tf_extra_params:
test:
tmt:
- plan_filter: 'tag:upgrade_happy_path & enabled:true'
+ plan_filter: 'tag:7to8 & tag:upgrade_happy_path & enabled:true'
environments:
- artifacts:
- type: "repository"
@@ -113,26 +117,31 @@ jobs:
- python2-leapp
- leapp-upgrade-el7toel8-deps
order: 40
- tmt:
+ - tmt:
context:
distro: "rhel-7.9"
+ distro_target: "rhel-8.8"
settings:
provisioning:
- post_install_script: "#!/bin/sh\nsudo sed -i s/.*ssh-rsa/ssh-rsa/ /root/.ssh/authorized_keys; yum-config-manager --enable rhel-7-server-rhui-optional-rpms"
+ post_install_script: "#!/bin/sh\nsudo sed -i s/.*ssh-rsa/ssh-rsa/ /root/.ssh/authorized_keys"
tags:
BusinessUnit: sst_upgrades@leapp_upstream_test
+ env:
+ SOURCE_RELEASE: "7.9"
+ TARGET_RELEASE: "8.8"
+ RHUI: "aws"
+ LEAPPDATA_BRANCH: "upstream"
+ LEAPP_NO_RHSM: "1"
+ USE_CUSTOM_REPOS: rhui
-# On-demand minimal beaker tests
-- &beaker-minimal-7to8-abstract-ondemand
+- &sanity-79to88
<<: *sanity-abstract-7to8
- manual_trigger: True
- labels:
- - beaker-minimal
- identifier: beaker-minimal-7to8-abstract-ondemand
+ trigger: pull_request
+ identifier: sanity-7.9to8.8
tf_extra_params:
test:
tmt:
- plan_filter: 'tag:partitioning & tag:7to8 & enabled:true'
+ plan_filter: 'tag:7to8 & tag:sanity & enabled:true'
environments:
- artifacts:
- type: "repository"
@@ -142,24 +151,30 @@ jobs:
- python2-leapp
- leapp-upgrade-el7toel8-deps
order: 40
- tmt:
+ - tmt:
context:
distro: "rhel-7.9"
+ distro_target: "rhel-8.8"
settings:
provisioning:
tags:
BusinessUnit: sst_upgrades@leapp_upstream_test
+ env:
+ SOURCE_RELEASE: "7.9"
+ TARGET_RELEASE: "8.8"
-# On-demand kernel-rt tests
-- &kernel-rt-abstract-7to8-ondemand
+- &beaker-minimal-79to88
<<: *beaker-minimal-7to8-abstract-ondemand
+ trigger: pull_request
labels:
- - kernel-rt
- identifier: sanity-7to8-kernel-rt-abstract-ondemand
+ - beaker-minimal
+ - beaker-minimal-7.9to8.8
+ - 7.9to8.8
+ identifier: sanity-7.9to8.8-beaker-minimal-ondemand
tf_extra_params:
test:
tmt:
- plan_filter: 'tag:kernel-rt & tag:7to8 & enabled:true'
+ plan_filter: 'tag:7to8 & tag:partitioning & enabled:true'
environments:
- artifacts:
- type: "repository"
@@ -169,53 +184,17 @@ jobs:
- python2-leapp
- leapp-upgrade-el7toel8-deps
order: 40
- tmt:
+ - tmt:
context:
distro: "rhel-7.9"
+ distro_target: "rhel-8.8"
settings:
provisioning:
tags:
BusinessUnit: sst_upgrades@leapp_upstream_test
-
-
-# ###################################################################### #
-# ######################### Individual tests ########################### #
-# ###################################################################### #
-
-# Tests: 7.9 -> 8.8
-- &sanity-79to88-aws
- <<: *sanity-abstract-7to8-aws
- trigger: pull_request
- identifier: sanity-7.9to8.8-aws
- env:
- SOURCE_RELEASE: "7.9"
- TARGET_RELEASE: "8.8"
- RHUI: "aws"
- LEAPPDATA_BRANCH: "upstream"
- LEAPP_NO_RHSM: "1"
- USE_CUSTOM_REPOS: rhui
-
-- &sanity-79to88
- <<: *sanity-abstract-7to8
- trigger: pull_request
- identifier: sanity-7.9to8.8
env:
SOURCE_RELEASE: "7.9"
TARGET_RELEASE: "8.8"
- LEAPPDATA_BRANCH: "upstream"
-
-- &beaker-minimal-79to88
- <<: *beaker-minimal-7to8-abstract-ondemand
- trigger: pull_request
- labels:
- - beaker-minimal
- - beaker-minimal-7.9to8.8
- - 7.9to8.8
- identifier: sanity-7.9to8.8-beaker-minimal-ondemand
- env:
- SOURCE_RELEASE: "7.9"
- TARGET_RELEASE: "8.8"
- LEAPPDATA_BRANCH: "upstream"
- &kernel-rt-79to88
<<: *kernel-rt-abstract-7to8-ondemand
@@ -225,33 +204,94 @@ jobs:
- kernel-rt-7.9to8.8
- 7.9to8.8
identifier: sanity-7.9to8.8-kernel-rt-ondemand
+ tf_extra_params:
+ test:
+ tmt:
+ plan_filter: 'tag:7to8 & tag:kernel-rt & enabled:true'
+ environments:
+ - artifacts:
+ - type: "repository"
+ id: "https://download.copr.fedorainfracloud.org/results/@oamg/leapp/epel-7-x86_64/"
+ packages:
+ - leapp-repository
+ - python2-leapp
+ - leapp-upgrade-el7toel8-deps
+ order: 40
+ - tmt:
+ context:
+ distro: "rhel-7.9"
+ distro_target: "rhel-8.8"
+ settings:
+ provisioning:
+ tags:
+ BusinessUnit: sst_upgrades@leapp_upstream_test
env:
SOURCE_RELEASE: "7.9"
TARGET_RELEASE: "8.8"
- LEAPPDATA_BRANCH: "upstream"
# Tests: 7.9 -> 8.10
- &sanity-79to810
<<: *sanity-abstract-7to8
trigger: pull_request
identifier: sanity-7.9to8.10
+ tf_extra_params:
+ test:
+ tmt:
+ plan_filter: 'tag:7to8 & tag:sanity & enabled:true'
+ environments:
+ - artifacts:
+ - type: "repository"
+ id: "https://download.copr.fedorainfracloud.org/results/@oamg/leapp/epel-7-x86_64/"
+ packages:
+ - leapp-repository
+ - python2-leapp
+ - leapp-upgrade-el7toel8-deps
+ order: 40
+ - tmt:
+ context:
+ distro: "rhel-7.9"
+ distro_target: "rhel-8.10"
+ settings:
+ provisioning:
+ tags:
+ BusinessUnit: sst_upgrades@leapp_upstream_test
env:
SOURCE_RELEASE: "7.9"
TARGET_RELEASE: "8.10"
- LEAPPDATA_BRANCH: "upstream"
-# NOTE(mkluson) RHEL 8.10 content is not publicly available (via RHUI)
-#- &sanity-79to810-aws
-# <<: *sanity-abstract-7to8-aws
-# trigger: pull_request
-# identifier: sanity-7.9to8.10-aws
-# env:
-# SOURCE_RELEASE: "7.9"
-# TARGET_RELEASE: "8.10"
-# RHUI: "aws"
-# LEAPPDATA_BRANCH: "upstream"
-# LEAPP_NO_RHSM: "1"
-# USE_CUSTOM_REPOS: rhui
+- &sanity-79to810-aws
+ <<: *sanity-abstract-7to8-aws
+ trigger: pull_request
+ identifier: sanity-7.9to8.10-aws
+ tf_extra_params:
+ test:
+ tmt:
+ plan_filter: 'tag:7to8 & tag:upgrade_happy_path & enabled:true'
+ environments:
+ - artifacts:
+ - type: "repository"
+ id: "https://download.copr.fedorainfracloud.org/results/@oamg/leapp/epel-7-x86_64/"
+ packages:
+ - leapp-repository
+ - python2-leapp
+ - leapp-upgrade-el7toel8-deps
+ order: 40
+ - tmt:
+ context:
+ distro: "rhel-7.9"
+ distro_target: "rhel-8.10"
+ settings:
+ provisioning:
+ post_install_script: "#!/bin/sh\nsudo sed -i s/.*ssh-rsa/ssh-rsa/ /root/.ssh/authorized_keys"
+ tags:
+ BusinessUnit: sst_upgrades@leapp_upstream_test
+ env:
+ SOURCE_RELEASE: "7.9"
+ TARGET_RELEASE: "8.10"
+ RHUI: "aws"
+ LEAPPDATA_BRANCH: "upstream"
+ LEAPP_NO_RHSM: "1"
+ USE_CUSTOM_REPOS: rhui
- &beaker-minimal-79to810
<<: *beaker-minimal-7to8-abstract-ondemand
@@ -261,10 +301,30 @@ jobs:
- beaker-minimal-7.9to8.10
- 7.9to8.10
identifier: sanity-7.9to8.10-beaker-minimal-ondemand
+ tf_extra_params:
+ test:
+ tmt:
+ plan_filter: 'tag:7to8 & tag:partitioning & enabled:true'
+ environments:
+ - artifacts:
+ - type: "repository"
+ id: "https://download.copr.fedorainfracloud.org/results/@oamg/leapp/epel-7-x86_64/"
+ packages:
+ - leapp-repository
+ - python2-leapp
+ - leapp-upgrade-el7toel8-deps
+ order: 40
+ - tmt:
+ context:
+ distro: "rhel-7.9"
+ distro_target: "rhel-8.10"
+ settings:
+ provisioning:
+ tags:
+ BusinessUnit: sst_upgrades@leapp_upstream_test
env:
SOURCE_RELEASE: "7.9"
TARGET_RELEASE: "8.10"
- LEAPPDATA_BRANCH: "upstream"
- &kernel-rt-79to810
<<: *kernel-rt-abstract-7to8-ondemand
@@ -274,14 +334,34 @@ jobs:
- kernel-rt-7.9to8.10
- 7.9to8.10
identifier: sanity-7.9to8.10-kernel-rt-ondemand
+ tf_extra_params:
+ test:
+ tmt:
+ plan_filter: 'tag:7to8 & tag:kernel-rt & enabled:true'
+ environments:
+ - artifacts:
+ - type: "repository"
+ id: "https://download.copr.fedorainfracloud.org/results/@oamg/leapp/epel-7-x86_64/"
+ packages:
+ - leapp-repository
+ - python2-leapp
+ - leapp-upgrade-el7toel8-deps
+ order: 40
+ - tmt:
+ context:
+ distro: "rhel-7.9"
+ distro_target: "rhel-8.10"
+ settings:
+ provisioning:
+ tags:
+ BusinessUnit: sst_upgrades@leapp_upstream_test
env:
SOURCE_RELEASE: "7.9"
TARGET_RELEASE: "8.10"
- LEAPPDATA_BRANCH: "upstream"
# ###################################################################### #
-# ############################## 8 TO 10 ############################### #
+# ############################## 8 TO 9 ################################ #
# ###################################################################### #
# ###################################################################### #
@@ -304,26 +384,6 @@ jobs:
epel-8-x86_64:
distros: [RHEL-8.10.0-Nightly]
identifier: sanity-abstract-8to9
- tf_extra_params:
- test:
- tmt:
- plan_filter: 'tag:tier0 & tag:8to9 & enabled:true'
- environments:
- - artifacts:
- - type: "repository"
- id: "https://download.copr.fedorainfracloud.org/results/@oamg/leapp/epel-8-x86_64/"
- packages:
- - leapp-repository
- - python3-leapp
- - leapp-upgrade-el8toel9-deps
- order: 40
- tmt:
- context:
- distro: "rhel-8.10"
- settings:
- provisioning:
- tags:
- BusinessUnit: sst_upgrades@leapp_upstream_test
- &sanity-abstract-8to9-aws
<<: *sanity-abstract-8to9
@@ -334,27 +394,6 @@ jobs:
epel-8-x86_64:
distros: [RHEL-8.10-rhui]
identifier: sanity-abstract-8to9-aws
- tf_extra_params:
- test:
- tmt:
- plan_filter: 'tag:upgrade_happy_path & enabled:true'
- environments:
- - artifacts:
- - type: "repository"
- id: "https://download.copr.fedorainfracloud.org/results/@oamg/leapp/epel-8-x86_64/"
- packages:
- - leapp-repository
- - python3-leapp
- - leapp-upgrade-el8toel9-deps
- order: 40
- tmt:
- context:
- distro: "rhel-8.10"
- settings:
- provisioning:
- post_install_script: "#!/bin/sh\nsudo sed -i s/.*ssh-rsa/ssh-rsa/ /root/.ssh/authorized_keys"
- tags:
- BusinessUnit: sst_upgrades@leapp_upstream_test
- &beaker-minimal-8to9-abstract-ondemand
<<: *sanity-abstract-8to9
@@ -365,45 +404,16 @@ jobs:
epel-8-x86_64:
distros: [RHEL-8.10.0-Nightly]
identifier: beaker-minimal-8to9-abstract-ondemand
- tf_extra_params:
- test:
- tmt:
- plan_filter: 'tag:partitioning & tag:8to9 & enabled:true'
- environments:
- - artifacts:
- - type: "repository"
- id: "https://download.copr.fedorainfracloud.org/results/@oamg/leapp/epel-8-x86_64/"
- packages:
- - leapp-repository
- - python3-leapp
- - leapp-upgrade-el8toel9-deps
- order: 40
- tmt:
- context:
- distro: "rhel-8.10"
- settings:
- provisioning:
- tags:
- BusinessUnit: sst_upgrades@leapp_upstream_test
-
- &kernel-rt-abstract-8to9-ondemand
<<: *beaker-minimal-8to9-abstract-ondemand
labels:
- kernel-rt
identifier: sanity-8to9-kernel-rt-abstract-ondemand
- tf_extra_params:
- test:
- tmt:
- plan_filter: 'tag:kernel-rt & tag:8to9 & enabled:true'
- environments:
- - tmt:
- context:
- distro: "rhel-8.10"
- settings:
- provisioning:
- tags:
- BusinessUnit: sst_upgrades@leapp_upstream_test
+
+# ###################################################################### #
+# ######################### Individual tests ########################### #
+# ###################################################################### #
# Tests: 8.8 -> 9.2
- &sanity-88to92
@@ -416,7 +426,7 @@ jobs:
tf_extra_params:
test:
tmt:
- plan_filter: 'tag:tier0 & tag:8to9 & enabled:true'
+ plan_filter: 'tag:8to9 & tag:tier0 & enabled:true'
environments:
- artifacts:
- type: "repository"
@@ -429,6 +439,7 @@ jobs:
tmt:
context:
distro: "rhel-8.8"
+ distro_target: "rhel-9.2"
settings:
provisioning:
tags:
@@ -437,8 +448,6 @@ jobs:
SOURCE_RELEASE: "8.8"
TARGET_RELEASE: "9.2"
RHSM_REPOS_EUS: "eus"
- LEAPPDATA_BRANCH: "upstream"
- LEAPP_DEVEL_TARGET_RELEASE: "9.2"
- &sanity-88to92-aws
<<: *sanity-abstract-8to9-aws
@@ -447,11 +456,10 @@ jobs:
epel-8-x86_64:
distros: [RHEL-8.8-rhui]
identifier: sanity-8.8to9.2-aws
- # NOTE(mkluson) Unfortunately to use yaml templates we need to rewrite the whole tf_extra_params dict
tf_extra_params:
test:
tmt:
- plan_filter: 'tag:upgrade_happy_path & enabled:true'
+ plan_filter: 'tag:8to9 & tag:rhui-tier[0] & enabled:true'
environments:
- artifacts:
- type: "repository"
@@ -464,6 +472,7 @@ jobs:
tmt:
context:
distro: "rhel-8.8"
+ distro_target: "rhel-9.2"
settings:
provisioning:
post_install_script: "#!/bin/sh\nsudo sed -i s/.*ssh-rsa/ssh-rsa/ /root/.ssh/authorized_keys"
@@ -472,11 +481,7 @@ jobs:
env:
SOURCE_RELEASE: "8.8"
TARGET_RELEASE: "9.2"
- RHSM_REPOS: "rhel-8-for-x86_64-appstream-eus-rpms,rhel-8-for-x86_64-baseos-eus-rpms"
- RHUI: "aws"
- LEAPPDATA_BRANCH: "upstream"
- LEAPP_NO_RHSM: "1"
- USE_CUSTOM_REPOS: rhui
+ RHUI_HYPERSCALER: aws
- &beaker-minimal-88to92
<<: *beaker-minimal-8to9-abstract-ondemand
@@ -492,7 +497,7 @@ jobs:
tf_extra_params:
test:
tmt:
- plan_filter: 'tag:partitioning & tag:8to9 & enabled:true'
+ plan_filter: 'tag:8to9 &tag:partitioning & enabled:true'
environments:
- artifacts:
- type: "repository"
@@ -505,6 +510,7 @@ jobs:
tmt:
context:
distro: "rhel-8.8"
+ distro_target: "rhel-9.2"
settings:
provisioning:
post_install_script: "#!/bin/sh\nsudo sed -i s/.*ssh-rsa/ssh-rsa/ /root/.ssh/authorized_keys"
@@ -513,8 +519,7 @@ jobs:
env:
SOURCE_RELEASE: "8.8"
TARGET_RELEASE: "9.2"
- LEAPPDATA_BRANCH: "upstream"
- LEAPP_DEVEL_TARGET_RELEASE: "9.2"
+ RHSM_REPOS_EUS: "eus"
- &kernel-rt-88to92
<<: *kernel-rt-abstract-8to9-ondemand
@@ -530,7 +535,7 @@ jobs:
tf_extra_params:
test:
tmt:
- plan_filter: 'tag:kernel-rt & tag:8to9 & enabled:true'
+ plan_filter: 'tag:8to9 & tag:kernel-rt & enabled:true'
environments:
- artifacts:
- type: "repository"
@@ -543,6 +548,7 @@ jobs:
tmt:
context:
distro: "rhel-8.8"
+ distro_target: "rhel-9.2"
settings:
provisioning:
tags:
@@ -550,8 +556,7 @@ jobs:
env:
SOURCE_RELEASE: "8.8"
TARGET_RELEASE: "9.2"
- LEAPPDATA_BRANCH: "upstream"
- LEAPP_DEVEL_TARGET_RELEASE: "9.2"
+ RHSM_REPOS_EUS: "eus"
# Tests: 8.10 -> 9.4
@@ -559,11 +564,30 @@ jobs:
<<: *sanity-abstract-8to9
trigger: pull_request
identifier: sanity-8.10to9.4
+ tf_extra_params:
+ test:
+ tmt:
+ plan_filter: 'tag:8to9 & tag:tier0 & enabled:true'
+ environments:
+ - artifacts:
+ - type: "repository"
+ id: "https://download.copr.fedorainfracloud.org/results/@oamg/leapp/epel-8-x86_64/"
+ packages:
+ - leapp-repository
+ - python3-leapp
+ - leapp-upgrade-el8toel9-deps
+ order: 40
+ - tmt:
+ context:
+ distro: "rhel-8.10"
+ distro_target: "rhel-9.4"
+ settings:
+ provisioning:
+ tags:
+ BusinessUnit: sst_upgrades@leapp_upstream_test
env:
SOURCE_RELEASE: "8.10"
TARGET_RELEASE: "9.4"
- RHSM_REPOS: "rhel-8-for-x86_64-appstream-beta-rpms,rhel-8-for-x86_64-baseos-beta-rpms"
- LEAPPDATA_BRANCH: "upstream"
# On-demand minimal beaker tests
- &beaker-minimal-810to94
@@ -574,10 +598,30 @@ jobs:
- beaker-minimal-8.10to9.4
- 8.10to9.4
identifier: sanity-8.10to9.4-beaker-minimal-ondemand
+ tf_extra_params:
+ test:
+ tmt:
+ plan_filter: 'tag:8to9 & tag:partitioning & enabled:true'
+ environments:
+ - artifacts:
+ - type: "repository"
+ id: "https://download.copr.fedorainfracloud.org/results/@oamg/leapp/epel-8-x86_64/"
+ packages:
+ - leapp-repository
+ - python3-leapp
+ - leapp-upgrade-el8toel9-deps
+ order: 40
+ - tmt:
+ context:
+ distro: "rhel-8.10"
+ distro_target: "rhel-9.4"
+ settings:
+ provisioning:
+ tags:
+ BusinessUnit: sst_upgrades@leapp_upstream_test
env:
SOURCE_RELEASE: "8.10"
TARGET_RELEASE: "9.4"
- LEAPPDATA_BRANCH: "upstream"
# On-demand kernel-rt tests
- &kernel-rt-810to94
@@ -588,8 +632,126 @@ jobs:
- kernel-rt-8.10to9.4
- 8.10to9.4
identifier: sanity-8.10to9.4-kernel-rt-ondemand
+ tf_extra_params:
+ test:
+ tmt:
+ plan_filter: 'tag:8to9 & tag:kernel-rt & enabled:true'
+ environments:
+ - artifacts:
+ - type: "repository"
+ id: "https://download.copr.fedorainfracloud.org/results/@oamg/leapp/epel-8-x86_64/"
+ packages:
+ - leapp-repository
+ - python3-leapp
+ - leapp-upgrade-el8toel9-deps
+ order: 40
+ - tmt:
+ context:
+ distro: "rhel-8.10"
+ distro_target: "rhel-9.4"
+ settings:
+ provisioning:
+ tags:
+ BusinessUnit: sst_upgrades@leapp_upstream_test
env:
SOURCE_RELEASE: "8.10"
TARGET_RELEASE: "9.4"
- RHSM_REPOS: "rhel-8-for-x86_64-appstream-beta-rpms,rhel-8-for-x86_64-baseos-beta-rpms"
- LEAPPDATA_BRANCH: "upstream"
+
+
+# Tests: 8.10 -> 9.5
+- &sanity-810to95
+ <<: *sanity-abstract-8to9
+ trigger: pull_request
+ identifier: sanity-8.10to9.5
+ tf_extra_params:
+ test:
+ tmt:
+ plan_filter: 'tag:8to9 & tag:tier0 & enabled:true'
+ environments:
+ - artifacts:
+ - type: "repository"
+ id: "https://download.copr.fedorainfracloud.org/results/@oamg/leapp/epel-8-x86_64/"
+ packages:
+ - leapp-repository
+ - python3-leapp
+ - leapp-upgrade-el8toel9-deps
+ order: 40
+ - tmt:
+ context:
+ distro: "rhel-8.10"
+ distro_target: "rhel-9.5"
+ settings:
+ provisioning:
+ tags:
+ BusinessUnit: sst_upgrades@leapp_upstream_test
+ env:
+ SOURCE_RELEASE: "8.10"
+ TARGET_RELEASE: "9.5"
+
+# On-demand minimal beaker tests
+- &beaker-minimal-810to95
+ <<: *beaker-minimal-8to9-abstract-ondemand
+ trigger: pull_request
+ labels:
+ - beaker-minimal
+ - beaker-minimal-8.10to9.5
+ - 8.10to9.5
+ identifier: sanity-8.10to9.5-beaker-minimal-ondemand
+ tf_extra_params:
+ test:
+ tmt:
+ plan_filter: 'tag:8to9 & tag:partitioning & enabled:true'
+ environments:
+ - artifacts:
+ - type: "repository"
+ id: "https://download.copr.fedorainfracloud.org/results/@oamg/leapp/epel-8-x86_64/"
+ packages:
+ - leapp-repository
+ - python3-leapp
+ - leapp-upgrade-el8toel9-deps
+ order: 40
+ - tmt:
+ context:
+ distro: "rhel-8.10"
+ distro_target: "rhel-9.5"
+ settings:
+ provisioning:
+ tags:
+ BusinessUnit: sst_upgrades@leapp_upstream_test
+ env:
+ SOURCE_RELEASE: "8.10"
+ TARGET_RELEASE: "9.5"
+
+# On-demand kernel-rt tests
+- &kernel-rt-810to95
+ <<: *kernel-rt-abstract-8to9-ondemand
+ trigger: pull_request
+ labels:
+ - kernel-rt
+ - kernel-rt-8.10to9.5
+ - 8.10to9.5
+ identifier: sanity-8.10to9.5-kernel-rt-ondemand
+ tf_extra_params:
+ test:
+ tmt:
+ plan_filter: 'tag:8to9 & tag:kernel-rt & enabled:true'
+ environments:
+ - artifacts:
+ - type: "repository"
+ id: "https://download.copr.fedorainfracloud.org/results/@oamg/leapp/epel-8-x86_64/"
+ packages:
+ - leapp-repository
+ - python3-leapp
+ - leapp-upgrade-el8toel9-deps
+ order: 40
+ - tmt:
+ context:
+ distro: "rhel-8.10"
+ distro_target: "rhel-9.5"
+ settings:
+ provisioning:
+ tags:
+ BusinessUnit: sst_upgrades@leapp_upstream_test
+ env:
+ SOURCE_RELEASE: "8.10"
+ TARGET_RELEASE: "9.5"
--
2.42.0

View File

@ -0,0 +1,40 @@
From 4e8ba88e0ebe78cd208d9501738c7a9ec2656a64 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Tue, 16 Jul 2024 16:09:34 +0000
Subject: [PATCH 14/23] Update sclorg/testing-farm-as-github-action action to
v3
---
.github/workflows/reuse-tests-7to8.yml | 2 +-
.github/workflows/reuse-tests-8to9.yml | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/reuse-tests-7to8.yml b/.github/workflows/reuse-tests-7to8.yml
index cfa8f41..920372b 100644
--- a/.github/workflows/reuse-tests-7to8.yml
+++ b/.github/workflows/reuse-tests-7to8.yml
@@ -46,7 +46,7 @@ jobs:
steps:
- name: Schedule regression testing for 7to8
id: run_test_7to8
- uses: sclorg/testing-farm-as-github-action@v1.2.10
+ uses: sclorg/testing-farm-as-github-action@v3.0.0
with:
# required
api_url: ${{ secrets.TF_ENDPOINT }}
diff --git a/.github/workflows/reuse-tests-8to9.yml b/.github/workflows/reuse-tests-8to9.yml
index 2315e70..c0b7f06 100644
--- a/.github/workflows/reuse-tests-8to9.yml
+++ b/.github/workflows/reuse-tests-8to9.yml
@@ -47,7 +47,7 @@ jobs:
steps:
- name: Schedule regression testing for 8to9
id: run_test_8to9
- uses: sclorg/testing-farm-as-github-action@v1.2.10
+ uses: sclorg/testing-farm-as-github-action@v3.0.0
with:
# required
api_url: ${{ secrets.TF_ENDPOINT }}
--
2.42.0

View File

@ -0,0 +1,56 @@
From 480d9b5cc0e4cb02992b2319e180bbeacf6a5f2d Mon Sep 17 00:00:00 2001
From: Matej Matuska <mmatuska@redhat.com>
Date: Wed, 17 Jul 2024 15:10:16 +0200
Subject: [PATCH 15/23] Add .readthedocs.yaml fixing builds on RTD
The builds in Read the Docs have been broken for a few months now,
because the .readthedocs.yaml is required.
---
.readthedocs.yaml | 35 +++++++++++++++++++++++++++++++++++
1 file changed, 35 insertions(+)
create mode 100644 .readthedocs.yaml
diff --git a/.readthedocs.yaml b/.readthedocs.yaml
new file mode 100644
index 0000000..5b892d8
--- /dev/null
+++ b/.readthedocs.yaml
@@ -0,0 +1,35 @@
+# Read the Docs configuration file for Sphinx projects
+# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
+
+# Required
+version: 2
+
+# Set the OS, Python version and other tools you might need
+build:
+ os: ubuntu-22.04
+ tools:
+ python: "2.7"
+ # You can also specify other tool versions:
+ # nodejs: "20"
+ # rust: "1.70"
+ # golang: "1.20"
+
+# Build documentation in the "docs/" directory with Sphinx
+sphinx:
+ configuration: docs/source/conf.py
+ # You can configure Sphinx to use a different builder, for instance use the dirhtml builder for simpler URLs
+ # builder: "dirhtml"
+ # Fail on all warnings to avoid broken references
+ # fail_on_warning: true
+
+# Optionally build your docs in additional formats such as PDF and ePub
+# formats:
+# - pdf
+# - epub
+
+# Optional but recommended, declare the Python requirements required
+# to build your documentation
+# See https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html
+python:
+ install:
+ - requirements: requirements-docs.txt
--
2.42.0

View File

@ -0,0 +1,27 @@
From 3c3112e1ea10707620fa2102c89fac91cc3c7495 Mon Sep 17 00:00:00 2001
From: Matej Matuska <mmatuska@redhat.com>
Date: Wed, 17 Jul 2024 16:02:39 +0200
Subject: [PATCH 16/23] docs: Pin sphinx-rtd-theme version fixing build error
Previously the 0.4.3 version was correctly used. There are still some
warnings during build, but those were also present previously (verified
by checking old RTD build).
---
requirements-docs.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/requirements-docs.txt b/requirements-docs.txt
index 96e66ba..54d5ba1 100644
--- a/requirements-docs.txt
+++ b/requirements-docs.txt
@@ -2,6 +2,6 @@
CommonMark==0.7.5
sphinx>=1.5,<1.6
-sphinx_rtd_theme
+sphinx_rtd_theme==0.4.3
sphinx-autobuild
git+https://github.com/leapp-to/recommonmark.git@master
--
2.42.0

View File

@ -0,0 +1,297 @@
From d23f1c92b8e647e678538edcbe9389283a6b647d Mon Sep 17 00:00:00 2001
From: Petr Stodulka <pstodulk@redhat.com>
Date: Tue, 2 Apr 2024 14:49:33 +0200
Subject: [PATCH 17/23] Starting initial draft commit for building for EL 9
(Python3.12)
This is initial commit delivering some ground work needed for leapp
to be able to work with Python3.12 on EL 9 systems and prepare
testing.
Most of the work has been delivered by Matej Matuska (thanks!!)
Summary of changes:
* Add el9 build container
* Add fake RHEL 10 container for local containerized tests
As RHEL 10 UBI isn't available yet, use RHEL 9 UBI with Python 3.12
virtualenv.
The container manually updates the pytest and six modules after
installing requirements as the currently used pytest version is too old
for Python 3.12.
setup() functions defined at module level are unsupported in the newer
pytest versions, these are replaced by autouse=True fixtures.
* Makefile: include new EL and Fedora containers for tests and builds
* Packit: build automatically for epel-9-x86_64
Co-authored-by: Matej Matuska <mmatuska@redhat.com>
---
.packit.yaml | 2 ++
Makefile | 29 ++++++++++++-------
res/container-builds/Containerfile.ubi9 | 12 ++++++++
res/container-tests/Containerfile.ubi10 | 38 +++++++++++++++++++++++++
res/container-tests/Containerfile.ubi9 | 9 +++---
tests/scripts/test_audit.py | 6 ++++
tests/scripts/test_exit_status.py | 4 +++
7 files changed, 85 insertions(+), 15 deletions(-)
create mode 100644 res/container-builds/Containerfile.ubi9
create mode 100644 res/container-tests/Containerfile.ubi10
diff --git a/.packit.yaml b/.packit.yaml
index 318abd4..2aead86 100644
--- a/.packit.yaml
+++ b/.packit.yaml
@@ -14,6 +14,7 @@ jobs:
targets:
- epel-7-x86_64
- epel-8-x86_64
+ - epel-9-x86_64
- fedora-all-aarch64
- fedora-all-x86_64
actions:
@@ -32,6 +33,7 @@ jobs:
targets:
- epel-7-x86_64
- epel-8-x86_64
+ - epel-9-x86_64
- fedora-all-aarch64
- fedora-all-x86_64
actions:
diff --git a/Makefile b/Makefile
index 2653896..677c748 100644
--- a/Makefile
+++ b/Makefile
@@ -25,7 +25,7 @@ _TEST_CONTAINER=$${TEST_CONTAINER:-rhel8}
# someone will call copr_build without additional parameters
MASTER_BRANCH=master
-# In case the PR or MR is defined or in case build is not comming from the
+# In case the PR or MR is defined or in case build is not coming from the
# MATER_BRANCH branch, N_REL=0; (so build is not update of the approved
# upstream solution). For upstream builds N_REL=100;
N_REL=`_NR=$${PR:+0}; if test "$${_NR:-100}" == "100"; then _NR=$${MR:+0}; fi; git rev-parse --abbrev-ref HEAD | grep -q "^$(MASTER_BRANCH)$$" || _NR=0; echo $${_NR:-100}`
@@ -76,13 +76,13 @@ help:
@echo " test_container runs linter and unit tests in a container"
@echo " - by default rhel8 container is used"
@echo " - can be changed by setting TEST_CONTAINER env variable"
- @echo " - available containers are: rhel7, rhel8, rhel9"
+ @echo " - available containers are:" rhel{7..10}
@echo " test_container_all runs linter and tests in all available containers"
@echo " lint runs just the linter"
@echo " build create the RPM"
@echo " build_container create the RPM in container"
@echo " - set BUILD_CONTAINER to select the container"
- @echo " - available containers are: el7, el8, f35, f36, rawhide"
+ @echo " - available containers are:" el{7..9} f{35..40} rawhide
@echo " - this can't be used to build in parallel,"
@echo " as build containers operate on the same files"
@echo " clean_containers clean container images used for building"
@@ -154,10 +154,10 @@ build_container:
el7) \
_CONT_FILE="Containerfile.centos7"; \
;; \
- el8) \
- _CONT_FILE="Containerfile.ubi8"; \
+ el[8-9]) \
+ _CONT_FILE="Containerfile.ubi"$${BUILD_CONTAINER: -1}; \
;; \
- f3[56]|rawhide) \
+ f3[5-9]|f40|rawhide) \
[ $$BUILD_CONTAINER = rawhide ] && VERSION=latest || VERSION=$${BUILD_CONTAINER: -2}; \
_CONT_FILE=".Containerfile.$${BUILD_CONTAINER}"; \
cp res/container-builds/Containerfile.fedora_generic res/container-builds/$$_CONT_FILE && \
@@ -168,7 +168,7 @@ build_container:
exit 1; \
;; \
*) \
- echo "Available containers are el7, el8, f35, f36, rawhide"; \
+ echo "Available containers are: el{7..9} f{35..40} rawhide"; \
exit 1; \
;; \
esac && \
@@ -182,6 +182,7 @@ print_release:
@echo $(RELEASE)
install-deps:
+ @ $(ENTER_VENV) \
pip install -r requirements.txt
install:
@@ -200,10 +201,11 @@ else
pip install -r requirements-tests.txt
endif
-test: lint
+test: lint
@ $(ENTER_VENV) \
pytest -vv --cov-report term-missing --cov=leapp tests/scripts
+# TODO(pstodulk): create ticket to add rhel10 for testing.... py: 3.12
test_container:
@case $(_TEST_CONTAINER) in \
rhel7) \
@@ -218,8 +220,13 @@ test_container:
export _VENV=python3.9; \
export _CONT_FILE="res/container-tests/Containerfile.ubi9"; \
;; \
+ # TODO the container is currently built on top of RHEL 9 UBI with python3.12 virtualenv \
+ rhel10) \
+ export _VENV=python3.12; \
+ export _CONT_FILE="res/container-tests/Containerfile.ubi10"; \
+ ;; \
*) \
- echo "Available test containers are rhel7, rhel8, rhel9"; \
+ echo "Available test containers are: rhel{7..10}"; \
exit 1; \
;; \
esac; \
@@ -229,12 +236,12 @@ test_container:
$(_CONTAINER_TOOL) run --rm -v $${PWD}:/payload:Z -e PYTHON_VENV=$$_VENV $$TEST_IMAGE
test_container_all:
- @for container in "rhel"{7,8,9}; do \
+ @for container in "rhel"{7..10}; do \
TEST_CONTAINER=$$container $(MAKE) test_container; \
done
clean_containers:
- @for i in "leapp-build-"{el7,el8,f35,f36,rawhide} "leapp-tests-rhel"{7,8,9}; do \
+ @for i in "leapp-build-"{el7,el8,el9,f35,f36,rawhide} "leapp-tests-rhel"{7..10}; do \
[ -z $$($(_CONTAINER_TOOL) images -q "$$i") ] || \
$(_CONTAINER_TOOL) rmi "$$i" > /dev/null 2>&1 || :; \
done
diff --git a/res/container-builds/Containerfile.ubi9 b/res/container-builds/Containerfile.ubi9
new file mode 100644
index 0000000..7c63339
--- /dev/null
+++ b/res/container-builds/Containerfile.ubi9
@@ -0,0 +1,12 @@
+FROM registry.access.redhat.com/ubi9/ubi:latest
+
+VOLUME /payload
+
+ENV DIST_VERSION 9
+
+RUN dnf update -y && \
+ dnf install -y python3 make git rpm-build python3-devel
+ #yum install -y python3-pip && \ python3 -m pip install --upgrade pip==20.3.4
+
+WORKDIR /payload
+ENTRYPOINT make build
diff --git a/res/container-tests/Containerfile.ubi10 b/res/container-tests/Containerfile.ubi10
new file mode 100644
index 0000000..22d5a8f
--- /dev/null
+++ b/res/container-tests/Containerfile.ubi10
@@ -0,0 +1,38 @@
+FROM registry.access.redhat.com/ubi9/ubi:latest
+
+VOLUME /payload
+
+RUN dnf update -y && \
+ dnf install python3 python312 python3-pip make -y && \
+ python3 -m pip install --upgrade pip==20.3.4
+
+RUN pip install virtualenv
+
+WORKDIR /payload
+ENTRYPOINT virtualenv testenv -p "/usr/bin/$PYTHON_VENV" && \
+ source testenv/bin/activate && \
+ pip install -U setuptools && \
+ pip install -U funcsigs && \
+ pip install -U -r requirements-tests.txt && \
+ pip install -U pytest && \
+ pip install -U six && \
+ pip install -U . && \
+ export LINTABLES=$(find . -name '*.py' | grep -E -e '^\./leapp\/' -e '^\./tests/scripts/' | sort -u ) && \
+ echo '==================================================' && \
+ echo '==================================================' && \
+ echo '=============== Running pylint ===============' && \
+ echo '==================================================' && \
+ echo '==================================================' && \
+ echo $LINTABLES | xargs pylint && echo '===> pylint PASSED' && \
+ echo '==================================================' && \
+ echo '==================================================' && \
+ echo '=============== Running flake8 ===============' && \
+ echo '==================================================' && \
+ echo '==================================================' && \
+ flake8 $LINTABLES && echo '===> flake8 PASSED' && \
+ echo '==================================================' && \
+ echo '==================================================' && \
+ echo '=============== Running tests ===============' && \
+ echo '==================================================' && \
+ echo '==================================================' && \
+ py.test -vv --cov-report term-missing --cov=leapp tests/scripts/*.py
diff --git a/res/container-tests/Containerfile.ubi9 b/res/container-tests/Containerfile.ubi9
index 359d46b..b1b5b71 100644
--- a/res/container-tests/Containerfile.ubi9
+++ b/res/container-tests/Containerfile.ubi9
@@ -1,12 +1,13 @@
-FROM registry.access.redhat.com/ubi8/ubi:latest
+FROM registry.access.redhat.com/ubi9/ubi:latest
VOLUME /payload
-RUN yum update -y && \
- yum install python3 python39 python3-virtualenv make -y && \
- yum -y install python3-pip && \
+RUN dnf update -y && \
+ dnf install python3 python39 make python3-pip -y && \
python3 -m pip install --upgrade pip==20.3.4
+RUN pip install virtualenv
+
WORKDIR /payload
ENTRYPOINT virtualenv testenv -p "/usr/bin/$PYTHON_VENV" && \
source testenv/bin/activate && \
diff --git a/tests/scripts/test_audit.py b/tests/scripts/test_audit.py
index fae01c3..98a1998 100644
--- a/tests/scripts/test_audit.py
+++ b/tests/scripts/test_audit.py
@@ -4,6 +4,8 @@ import os
import sqlite3
import uuid
+import pytest
+
from leapp.utils.audit import get_connection, Execution, Host, MessageData, \
DataSource, Message, Audit, get_messages, checkpoint, get_checkpoints, create_audit_entry, get_audit_entry
from leapp.config import get_config
@@ -95,10 +97,14 @@ def setup_module():
get_config().set('database', 'path', '/tmp/leapp-test.db')
+@pytest.fixture(autouse=True)
def setup():
path = get_config().get('database', 'path')
if os.path.isfile(path):
os.unlink(path)
+ yield
+ if os.path.isfile(path):
+ os.unlink(path)
def test_migrations_are_applied():
diff --git a/tests/scripts/test_exit_status.py b/tests/scripts/test_exit_status.py
index 11e8583..0596ab3 100644
--- a/tests/scripts/test_exit_status.py
+++ b/tests/scripts/test_exit_status.py
@@ -29,10 +29,14 @@ def setup_module():
get_config().set('database', 'path', '/tmp/leapp-test.db')
+@pytest.fixture(autouse=True)
def setup():
path = get_config().get('database', 'path')
if os.path.isfile(path):
os.unlink(path)
+ yield
+ if os.path.isfile(path):
+ os.unlink(path)
@pytest.mark.parametrize('error, code', [(None, 0), ('StopActorExecution', 0), ('StopActorExecutionError', 0),
--
2.42.0

View File

@ -0,0 +1,157 @@
From 098e32d0b9d179992f76e6e6e0cb4c54f852de4d Mon Sep 17 00:00:00 2001
From: Michal Reznik <mreznik@redhat.com>
Date: Sun, 7 Apr 2024 18:08:05 +0200
Subject: [PATCH 18/23] Replace deprecated FileFinder.find_module (Python 3.12)
The find_module function has been deprecated for a long time and
it has been removed in Python3.12. To keep the backward compatibility,
we introduce compat.load_module() function that is compatible with
Python2.7 -> Python3.12 now. Replacing all previous load of module
in code by this function.
Similar applies for the pkgutil.get_loader()
Co-authored-by: Matej Matuska <mmatuska@redhat.com>
---
leapp/cli/__init__.py | 7 ++++++-
leapp/compat.py | 19 +++++++++++++++++++
leapp/repository/__init__.py | 3 ++-
leapp/repository/actor_definition.py | 3 ++-
leapp/snactor/__init__.py | 3 ++-
res/container-tests/Containerfile.ubi10 | 3 +++
6 files changed, 34 insertions(+), 4 deletions(-)
diff --git a/leapp/cli/__init__.py b/leapp/cli/__init__.py
index ab16198..59192f9 100644
--- a/leapp/cli/__init__.py
+++ b/leapp/cli/__init__.py
@@ -1,3 +1,4 @@
+import importlib
import os
import pkgutil
import socket
@@ -24,7 +25,11 @@ def _load_commands(base_command):
if os.path.isdir(entry_path) and os.path.isfile(os.path.join(entry_path, '__init__.py')):
# We found a package - We will import it and get the `register` symbol and check if it is callable.
package_name = 'leapp.cli.commands.{}'.format(entry)
- package = pkgutil.get_loader(package_name).load_module(package_name)
+ if sys.version_info < (3, 12):
+ # get_loader and load_module are deprecated since 3.12
+ package = pkgutil.get_loader(package_name).load_module(package_name) # noqa: E501, pylint: disable=deprecated-method
+ else:
+ package = importlib.import_module(package_name)
register = getattr(package, 'register', None)
if callable(register):
register(base_command)
diff --git a/leapp/compat.py b/leapp/compat.py
index 2e340a2..a8c8bdf 100644
--- a/leapp/compat.py
+++ b/leapp/compat.py
@@ -1,4 +1,5 @@
import gettext # noqa: F401; pylint: disable=unused-import
+import importlib
import locale
import sys
@@ -66,3 +67,21 @@ else:
:return: Nothing
"""
raise exc.with_traceback(tb)
+
+
+def load_module(importer, name):
+ """
+ Loads a module using the given importer and module name
+
+ :param importer: A finder implementation (returned by e.g. pkgutils.iter_modules)
+ :param name: Module name
+ :return: The loaded module
+ """
+ if sys.version_info < (3, 4):
+ return importer.find_module(name).load_module(name)
+
+ spec = importer.find_spec(name)
+ module = importlib.util.module_from_spec(spec)
+ sys.modules[name] = module
+ spec.loader.exec_module(module)
+ return module
diff --git a/leapp/repository/__init__.py b/leapp/repository/__init__.py
index b47af3e..58b6d16 100644
--- a/leapp/repository/__init__.py
+++ b/leapp/repository/__init__.py
@@ -3,6 +3,7 @@ import os
import pkgutil
import sys
+from leapp.compat import load_module
from leapp.exceptions import RepoItemPathDoesNotExistError, UnsupportedDefinitionKindError
from leapp.models import get_models, resolve_model_references
import leapp.libraries.common # noqa # pylint: disable=unused-import
@@ -166,7 +167,7 @@ class Repository(object):
directories = [os.path.join(self._repo_dir, os.path.dirname(module)) for module in modules]
prefix = prefix + '.' if not prefix.endswith('.') else prefix
for importer, name, ispkg in pkgutil.iter_modules(directories, prefix=prefix):
- importer.find_module(name).load_module(name)
+ load_module(importer, name)
def serialize(self):
"""
diff --git a/leapp/repository/actor_definition.py b/leapp/repository/actor_definition.py
index 2b5df1a..0e9cc0a 100644
--- a/leapp/repository/actor_definition.py
+++ b/leapp/repository/actor_definition.py
@@ -11,6 +11,7 @@ from multiprocessing import Process, Queue, Pipe
import leapp.libraries.actor # noqa # pylint: disable=unused-import
from leapp.actors import get_actor_metadata, get_actors
+from leapp.compat import load_module
from leapp.exceptions import (ActorInspectionFailedError, LeappRuntimeError, MultipleActorsError,
UnsupportedDefinitionKindError)
from leapp.repository.definition import DefinitionKind
@@ -193,7 +194,7 @@ class ActorDefinition(object):
path = os.path.abspath(os.path.join(self._repo_dir, self.directory))
for importer, name, is_pkg in pkgutil.iter_modules((path,)):
if not is_pkg:
- self._module = importer.find_module(name).load_module(name)
+ self._module = load_module(importer, name)
break
def discover(self):
diff --git a/leapp/snactor/__init__.py b/leapp/snactor/__init__.py
index 22ea993..3264a26 100644
--- a/leapp/snactor/__init__.py
+++ b/leapp/snactor/__init__.py
@@ -2,6 +2,7 @@ import os
import pkgutil
import socket
+from leapp.compat import load_module
from leapp.utils.i18n import _ # noqa; pylint: disable=redefined-builtin
from leapp.snactor import commands
from leapp.snactor.commands import workflow
@@ -30,7 +31,7 @@ def _load_commands_from(path):
for importer, name, is_pkg in pkgutil.iter_modules([pkg_path]):
if is_pkg:
continue
- mod = importer.find_module(name).load_module(name)
+ mod = load_module(importer, name)
if hasattr(mod.cli, 'command'):
if not mod.cli.command.parent:
cli.command.add_sub(mod.cli.command)
diff --git a/res/container-tests/Containerfile.ubi10 b/res/container-tests/Containerfile.ubi10
index 22d5a8f..6d6507c 100644
--- a/res/container-tests/Containerfile.ubi10
+++ b/res/container-tests/Containerfile.ubi10
@@ -14,6 +14,9 @@ ENTRYPOINT virtualenv testenv -p "/usr/bin/$PYTHON_VENV" && \
pip install -U setuptools && \
pip install -U funcsigs && \
pip install -U -r requirements-tests.txt && \
+ # NOTE(mmatuska): The pytest ver defined in requirements-tests is too old \
+ # for Python 3.12 (missing imp module), there do an update here until we \
+ # bump that. Similarly for six. \
pip install -U pytest && \
pip install -U six && \
pip install -U . && \
--
2.42.0

View File

@ -0,0 +1,42 @@
From 666e66c1f3f1d21b0b63cc9e4bbbb3eb263513aa Mon Sep 17 00:00:00 2001
From: Michal Reznik <mreznik@redhat.com>
Date: Sat, 13 Apr 2024 11:18:40 +0200
Subject: [PATCH 19/23] draft: Fix SafeConfigParser error
AttributeError: module 'configparser' has no attribute 'SafeConfigParser'
---
leapp/messaging/answerstore.py | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/leapp/messaging/answerstore.py b/leapp/messaging/answerstore.py
index b2c707d..afd28dc 100644
--- a/leapp/messaging/answerstore.py
+++ b/leapp/messaging/answerstore.py
@@ -2,6 +2,10 @@ import multiprocessing
import six
from six.moves import configparser
+try:
+ from six.moves.configparser import SafeConfigParser as ConfigParser
+except ImportError:
+ from six.moves.configparser import ConfigParser
from leapp.exceptions import CommandError
from leapp.utils.audit import create_audit_entry
@@ -46,10 +50,11 @@ class AnswerStore(object):
Loads an ini config file from the given location.
:param inifile: Path to the answer file to load.
- :return: configparser.SafeConfigParser object
+ :return: configparser.ConfigParser object
:raises CommandError if any of the values are not in key=value format
"""
- conf = configparser.SafeConfigParser(allow_no_value=False)
+ conf = ConfigParser(allow_no_value=False)
+
try:
conf.read(inifile)
return conf
--
2.42.0

View File

@ -0,0 +1,25 @@
From 652de82aa6be50c2971e3e5ead16f42043a3d879 Mon Sep 17 00:00:00 2001
From: Matej Matuska <mmatuska@redhat.com>
Date: Tue, 2 Jul 2024 15:50:21 +0200
Subject: [PATCH 20/23] Silence linter on deprecated module false positive
---
leapp/libraries/stdlib/call.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/leapp/libraries/stdlib/call.py b/leapp/libraries/stdlib/call.py
index b80f860..5d9ceed 100644
--- a/leapp/libraries/stdlib/call.py
+++ b/leapp/libraries/stdlib/call.py
@@ -11,7 +11,7 @@ except ImportError:
# (pstodulk): find_executable() is from the distutils module which was
# removed in Python 3.12. We can get rid of this fallback when we drop
# support for Python 2. https://peps.python.org/pep-0632/
- from distutils.spawn import find_executable as which
+ from distutils.spawn import find_executable as which # pylint: disable=deprecated-module
from leapp.compat import string_types
from leapp.libraries.stdlib.eventloop import POLL_HUP, POLL_IN, POLL_OUT, POLL_PRI, EventLoop
--
2.42.0

View File

@ -0,0 +1,27 @@
From 5c8bb645208ac2e98d3389dcf0dca215bfebf967 Mon Sep 17 00:00:00 2001
From: Matej Matuska <mmatuska@redhat.com>
Date: Fri, 12 Jul 2024 11:10:15 +0200
Subject: [PATCH 21/23] Run unit tests on Python 3.9 on ubi9 instead of ubi8
---
.github/workflows/unit-tests.yml | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml
index e2376b7..008ce28 100644
--- a/.github/workflows/unit-tests.yml
+++ b/.github/workflows/unit-tests.yml
@@ -16,8 +16,9 @@ jobs:
matrix:
scenarios:
- name: Run unit tests with python3.9 on el8
+ - name: Run unit tests with python3.9 on el9
python: python3.9
- container: ubi8
+ container: ubi9
- name: Run unit tests with python 3.6 on el8
python: python3.6
container: ubi8
--
2.42.0

View File

@ -0,0 +1,28 @@
From 0b00cc695ea076eb0f45176385f750654c4acea1 Mon Sep 17 00:00:00 2001
From: Matej Matuska <mmatuska@redhat.com>
Date: Fri, 12 Jul 2024 11:11:18 +0200
Subject: [PATCH 22/23] Add unit tests on Python 3.12 to the GH action
Currently the fake RHEL 10 container is used (based on ubi9).
---
.github/workflows/unit-tests.yml | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml
index 008ce28..e67264b 100644
--- a/.github/workflows/unit-tests.yml
+++ b/.github/workflows/unit-tests.yml
@@ -15,7 +15,9 @@ jobs:
fail-fast: false
matrix:
scenarios:
- - name: Run unit tests with python3.9 on el8
+ - name: Run unit tests with python3.12 on el9
+ python: python3.12
+ container: ubi10
- name: Run unit tests with python3.9 on el9
python: python3.9
container: ubi9
--
2.42.0

View File

@ -0,0 +1,46 @@
From fcd13bc8720cd7efdf5398387307971f6f8afc76 Mon Sep 17 00:00:00 2001
From: David Kubek <dkubek@redhat.com>
Date: Thu, 6 Jun 2024 15:08:44 +0200
Subject: [PATCH 23/23] Fix broken queries on rerun
After the update to the leapp db table names, the rerun command fails.
This commit fixes the issue by using the current schema.
---
leapp/utils/audit/contextclone.py | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/leapp/utils/audit/contextclone.py b/leapp/utils/audit/contextclone.py
index 1c80f2c..d988d06 100644
--- a/leapp/utils/audit/contextclone.py
+++ b/leapp/utils/audit/contextclone.py
@@ -70,14 +70,14 @@ def _dup_audit(db, message, data_source, newcontext, oldcontext):
return lookup
-def _dup_metadata(db, newcontext, oldcontext):
- for row in _fetch_table_for_context(db, 'metadata', oldcontext):
- # id context kind name metadata
- row_id, kind, name, metadata = _row_tuple(row, 'id', 'kind', 'name', 'metadata')
+def _dup_entity(db, newcontext, oldcontext):
+ for row in _fetch_table_for_context(db, 'entity', oldcontext):
+ # id context kind name metadata_hash
+ row_id, kind, name, metadata_hash = _row_tuple(row, 'id', 'kind', 'name', 'metadata_hash')
db.execute(
- 'INSERT INTO metadata (context, kind, name, metadata) VALUES(?, ?, ?, ?)',
- (newcontext, kind, name, metadata))
+ 'INSERT INTO entity (context, kind, name, metadata_hash) VALUES(?, ?, ?, ?)',
+ (newcontext, kind, name, metadata_hash))
def _dup_dialog(db, data_source, newcontext, oldcontext):
@@ -102,5 +102,5 @@ def clone_context(oldcontext, newcontext, use_db=None):
message = _dup_message(db=db, data_source=data_source, newcontext=newcontext, oldcontext=oldcontext)
# Last clone message entries and use the lookup table generated by the data_source and message duplications
_dup_audit(db=db, data_source=data_source, message=message, newcontext=newcontext, oldcontext=oldcontext)
- _dup_metadata(db=db, oldcontext=oldcontext, newcontext=newcontext)
+ _dup_entity(db=db, oldcontext=oldcontext, newcontext=newcontext)
_dup_dialog(db=db, data_source=data_source, oldcontext=oldcontext, newcontext=newcontext)
--
2.42.0

View File

@ -37,7 +37,7 @@
Name: leapp Name: leapp
Version: 0.17.0 Version: 0.17.0
Release: 2%{?dist} Release: 3%{?dist}
Summary: OS & Application modernization framework Summary: OS & Application modernization framework
License: ASL 2.0 License: ASL 2.0
@ -73,6 +73,23 @@ Patch0005: 0005-Update-renovate.json.patch
Patch0006: 0006-Add-process-lock.patch Patch0006: 0006-Add-process-lock.patch
Patch0007: 0007-Extend-information-from-leapp-saved-to-leappdb-847.patch Patch0007: 0007-Extend-information-from-leapp-saved-to-leappdb-847.patch
# CTC2
Patch0008: 0008-Update-peter-evans-create-or-update-comment-digest-t.patch
Patch0009: 0009-Update-dependency-ubuntu-to-v22.patch
Patch0010: 0010-Update-actions-github-script-action-to-v7.patch
Patch0011: 0011-Update-actions-checkout-action-to-v4.patch
Patch0012: 0012-Packit-drop-epel-7-ppc64le-chroot.patch
Patch0013: 0013-Packit-Bring-all-changes-from-leapp-repository.patch
Patch0014: 0014-Update-sclorg-testing-farm-as-github-action-action-t.patch
Patch0015: 0015-Add-.readthedocs.yaml-fixing-builds-on-RTD.patch
Patch0016: 0016-docs-Pin-sphinx-rtd-theme-version-fixing-build-error.patch
Patch0017: 0017-Starting-initial-draft-commit-for-building-for-EL-9-.patch
Patch0018: 0018-Replace-deprecated-FileFinder.find_module-Python-3.1.patch
Patch0019: 0019-draft-Fix-SafeConfigParser-error.patch
Patch0020: 0020-Silence-linter-on-deprecated-module-false-positive.patch
Patch0021: 0021-Run-unit-tests-on-Python-3.9-on-ubi9-instead-of-ubi8.patch
Patch0022: 0022-Add-unit-tests-on-Python-3.12-to-the-GH-action.patch
Patch0023: 0023-Fix-broken-queries-on-rerun.patch
%description %description
Leapp utility provides the possibility to use the Leapp framework via CLI. Leapp utility provides the possibility to use the Leapp framework via CLI.
@ -173,6 +190,22 @@ Requires: findutils
%patch0005 -p1 %patch0005 -p1
%patch0006 -p1 %patch0006 -p1
%patch0007 -p1 %patch0007 -p1
%patch0008 -p1
%patch0009 -p1
%patch0010 -p1
%patch0011 -p1
%patch0012 -p1
%patch0013 -p1
%patch0014 -p1
%patch0015 -p1
%patch0016 -p1
%patch0017 -p1
%patch0018 -p1
%patch0019 -p1
%patch0020 -p1
%patch0021 -p1
%patch0022 -p1
%patch0023 -p1
################################################## ##################################################
@ -256,6 +289,11 @@ install -m 0644 -p man/leapp.1 %{buildroot}%{_mandir}/man1/
# no files here # no files here
%changelog %changelog
* Wed Jul 24 2024 Toshio Kuratomi <toshio@fedoraproject.org> - 0.17.0-3
- Fix broken leapp db queries on rerun
- Port all code to be Python-3.12 compatible.
- Resolves: RHEL-40363
* Mon May 13 2024 Toshio Kuratomi <toshio@fedoraproject.org> - 0.17.0-2 * Mon May 13 2024 Toshio Kuratomi <toshio@fedoraproject.org> - 0.17.0-2
- Minor improvement of the summary overview in the console output. - Minor improvement of the summary overview in the console output.
- Store metadata about the LEAPP plugins inside leapp audit db. - Store metadata about the LEAPP plugins inside leapp audit db.