diff --git a/.github/dependabot.yml b/.github/dependabot.yml index a40fa25f8fe..7c591380687 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -10,6 +10,7 @@ updates: schedule: interval: "daily" labels: + - '6.16.z' - "CherryPick" - "dependencies" - "6.15.z" @@ -23,6 +24,7 @@ updates: schedule: interval: "daily" labels: + - '6.16.z' - "CherryPick" - "dependencies" - "6.15.z" diff --git a/.github/workflows/auto_branching.yml b/.github/workflows/auto_branching.yml deleted file mode 100644 index 5f1c295f076..00000000000 --- a/.github/workflows/auto_branching.yml +++ /dev/null @@ -1,322 +0,0 @@ -### The auto-branching workflow triggered through a dispatch request from the CI -name: auto-branching - -# Run on workflow dispatch from CI -on: - workflow_dispatch: - inputs: - target_branch: - type: string - description: branch to be created from the master - stream_version: - type: string - description: new stream version of satellite - -jobs: - check-group-membership: - runs-on: ubuntu-latest - outputs: - member: ${{steps.check_membership.outputs.member}} - - steps: - - name: Check if the user is a member of repository-admins group - id: check_membership - run: | - # Use GitHub API to check if the user triggering the workflow is a member of satellite-admin group - MEMBER=$(curl -s -H "Authorization: token ${{ secrets.CHERRYPICK_PAT }}" \ - "https://api.github.com/orgs/satelliteQE/teams/quality-engineers/memberships/${{ github.actor }}") - if [[ $(echo "$MEMBER" | jq -r '.state') == "active" ]]; then - echo "User is a member of satellite-admin group." - echo "member=true" >> $GITHUB_OUTPUT - else - echo "User is not a member of satellite-admin group." - echo "member=false" >> $GITHUB_OUTPUT - exit 1 - fi - - auto-branching-new-downstream-release: - name: ${{ github.event.inputs.target_branch }} - raise PR with changes - runs-on: ubuntu-latest - needs: check-group-membership - if: ${{ needs.check-group-membership.outputs.member == 'true' }} - - steps: - - uses: actions/checkout@v4 - - - name: Create the ${{ github.event.inputs.target_branch }} branch - id: create-branch - uses: peterjgrainger/action-create-branch@v2.2.0 - env: - GITHUB_TOKEN: ${{ secrets.CHERRYPICK_PAT }} - with: - branch: ${{ github.event.inputs.target_branch }} - - - name: Create label for the ${{ github.event.inputs.target_branch }} branch - id: create-label - run: | - curl -X POST \ - -H "Authorization: token ${{ secrets.CHERRYPICK_PAT }}" \ - -H "Accept: application/vnd.github.v3+json" \ - https://api.github.com/repos/${{ github.repository }}/labels \ - -d "{\"name\":\"${{ github.event.inputs.target_branch }}\",\"color\":\"fbca04\"}" - - - name: Switch to ${{ github.event.inputs.target_branch }} branch - run: git checkout -b "${{ github.event.inputs.target_branch }}" - - - name: Checkout from ${{ github.event.inputs.target_branch }} branch for auto-branching changes - id: checkout-to-auto-branch - run: | - branch_name="auto-branching-${{ github.event.inputs.target_branch }}-$(date '+%s')" - git checkout -b "$branch_name" - echo "branch_name=$branch_name" >> $GITHUB_OUTPUT - - - name: Update target branch label in dependabot yml file - id: update-dependabot - run: | - # Read the dependabot.yml file - FILE_PATH="./.github/dependabot.yml" - TARGET_BRANCH="${{ github.event.inputs.target_branch }}" - # Append the target branch label to the labels node - awk -v target="'$TARGET_BRANCH'" '/^ *labels:/ {$0 = $0 "\n - " target} 1' "$FILE_PATH" > temp.yml && mv temp.yml "$FILE_PATH" - - - name: Update repository URLs in requirements.txt - id: update-repo-urls - run: | - # Define the file path - FILE_PATH="./requirements.txt" - # Define the replacement strings - replacements=( - "airgun @ git+https://github.com/SatelliteQE/airgun.git@master#egg=airgun|airgun @ git+https://github.com/SatelliteQE/airgun.git@${{ github.event.inputs.target_branch }}#egg=airgun" - "nailgun @ git+https://github.com/SatelliteQE/nailgun.git@master#egg=nailgun|nailgun @ git+https://github.com/SatelliteQE/nailgun.git@${{ github.event.inputs.target_branch }}#egg=nailgun" - ) - # Create a temporary file - TEMP_FILE=$(mktemp) - # Perform replacements using a for loop - for replacement in "${replacements[@]}"; do - old_url=$(echo "$replacement" | cut -d'|' -f1) - new_url=$(echo "$replacement" | cut -d'|' -f2) - sed "s|${old_url}|${new_url}|g" "$FILE_PATH" > "$TEMP_FILE" && mv "$TEMP_FILE" "$FILE_PATH" - done - - - name: Remove the dispatch release GHA - id: remove-dispatch-release-gha - run: | - rm -rf ./.github/workflows/dispatch_release.yml - rm -rf ./.github/workflows/auto_branching.yml - - - name: Remove the CODEOWNERS file - id: remove-code-owners - run: | - rm -rf ./.github/CODEOWNERS - - - name: Remove lines with @pytest.mark.stream - id: remove-mark-stream - run: | - # Loop through files in the folder - grep -rl "tests/foreman" -e '@pytest\.mark\.stream' | while IFS= read -r file; do - awk '!/@pytest\.mark\.stream/' "$file" > temp && mv temp "$file" - done - - - name: Update version in setup.py - run: sed -i "s/version=['\"][0-9.]*['\"]\+/version='${{ github.event.inputs.target_branch }}'/" setup.py - - - name: Update the Constants in __init__.py file - run: | - old_url="https://raw.githubusercontent.com/SatelliteQE/robottelo/master/tests/foreman/data/uri.sh" - new_url="https://raw.githubusercontent.com/SatelliteQE/robottelo/${{ github.event.inputs.target_branch }}/tests/foreman/data/uri.sh" - FILE_PATH="./robottelo/constants/__init__.py" - awk '/SAT_NON_GA_VERSIONS =/ { sub(/\[[^,]*, /, "[", $0) } 1' "$FILE_PATH" > temp && mv temp "$FILE_PATH" - sed -i.bak "s|${old_url}|${new_url}|" "$FILE_PATH" - rm "$FILE_PATH.bak" - - - name: git status - run: git status - - - name: git diff - run: git diff - - - name: Commit changes - run: | - git config --local user.email Satellite-QE.satqe.com && git config --local user.name Satellite-QE - git add setup.py ./tests/foreman ./robottelo/* ./requirements.txt ./.github/* - git commit -m "Changes for ${{ github.event.inputs.target_branch }} new branch" - git push origin ${{steps.checkout-to-auto-branch.outputs.branch_name}} - - - name: Create pull request - id: create_pr - run: | - title="[${{ github.event.inputs.target_branch }}]: Changes for ${{ github.event.inputs.target_branch }} new branch" - body=" - ### Problem Statement - New ${{ github.event.inputs.target_branch }} branch - ### Solution - - Dependabot labels are updated for new branch - - Removed dispatch release GHA from ${{ github.event.inputs.target_branch }} as we are releasing only master changes - - Airgun and Nailgun Requirements uses ${{ github.event.inputs.target_branch }} branch - - Constants are using new version now - - Stream tests removed - - Setup.py uses new version - " - pr_number=$(gh pr create --title "$title" --body "$body" --base "${{ github.event.inputs.target_branch }}" | awk -F'/' '{print $NF}') - echo "$pr_number" - echo "pr_number=$pr_number" >> $GITHUB_OUTPUT - env: - GITHUB_TOKEN: ${{ secrets.CHERRYPICK_PAT }} - - - name: Add the prt comment for running the sanity tests - id: add-parent-prt-comment - uses: thollander/actions-comment-pull-request@v2 - with: - message: | - trigger: test-robottelo - pr_number: ${{ steps.create_pr.outputs.pr_number }} - GITHUB_TOKEN: ${{ secrets.CHERRYPICK_PAT }} - - - name: add the no-cherrypick label - uses: actions/github-script@v7 - with: - github-token: ${{ secrets.CHERRYPICK_PAT }} - script: | - github.rest.issues.addLabels({ - issue_number: ${{ steps.create_pr.outputs.pr_number }}, - owner: context.repo.owner, - repo: context.repo.repo, - labels: ["No-CherryPick"] - }) - - branch-protection: - runs-on: ubuntu-latest - needs: auto-branching-new-downstream-release - if: success() - steps: - - name: Create branch protection - run: | - TOKEN=${{ secrets.CHERRYPICK_PAT }} - OWNER=${{ github.repository_owner }} - REPO=${{ github.event.repository.name }} - BRANCH="${{ github.event.inputs.target_branch }}" # Adjust branch name as needed - # Branch protection payload - PROTECTION_PAYLOAD='{ - "required_status_checks": { - "strict": true, - "contexts": ["Code Quality (3.10)", "Code Quality (3.11)", "Code Quality (3.12)", "Enforcing cherrypick labels"] - }, - "required_linear_history": true, - "enforce_admins": null, - "required_pull_request_reviews": null, - "restrictions": null, - "allow_force_pushes": null, - "allow_deletions": null - }' - # Call GitHub API to update branch protection - PROTECTION_RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" \ - -X PUT \ - -H "Accept: application/vnd.github.luke-cage-preview+json" \ - -H "Authorization: token $TOKEN" \ - -d "$PROTECTION_PAYLOAD" \ - "https://api.github.com/repos/$OWNER/$REPO/branches/$BRANCH/protection") - - if [[ $PROTECTION_RESPONSE -eq 200 ]]; then - echo "Branch protection successfully updated." - echo "protection-outcome=success" >> "$GITHUB_OUTPUT" - else - echo "Failed to update branch protection. HTTP status code: $PROTECTION_RESPONSE" - echo "protection-outcome=failure" >> "$GITHUB_OUTPUT" - exit 1 - fi - - auto-branching-master: - name: master - raise PR with changes - runs-on: ubuntu-latest - needs: check-group-membership - if: ${{ needs.check-group-membership.outputs.member == 'true' }} - - steps: - - name: Checkout Robottelo - uses: actions/checkout@v4 - - - name: Update target branch label in dependabot yml file - id: update-dependabot - run: | - # Read the dependabot.yml file - FILE_PATH="./.github/dependabot.yml" - TARGET_BRANCH="${{ github.event.inputs.target_branch }}" - # Append the target branch label to the labels node - awk -v target="'$TARGET_BRANCH'" '/^ *labels:/ {$0 = $0 "\n - " target} 1' "$FILE_PATH" > temp.yml && mv temp.yml "$FILE_PATH" - - - name: Remove lines with @pytest.mark.stream - id: remove-mark-stream - run: | - # Loop through files in the folder - grep -rl "tests/foreman" -e '@pytest\.mark\.stream' | while IFS= read -r file; do - awk '!/@pytest\.mark\.stream/' "$file" > temp && mv temp "$file" - done - - - name: Update the Constants in __init__.py file - run: | - version="${{ github.event.inputs.target_branch }}" - ga_version="${{ github.event.inputs.ga_version }}" - old_stream_version="${version%.z}" - new_stream_version="${{ github.event.inputs.stream_version }}" - non_ga_versions="['$old_stream_version', '$new_stream_version']" - FILE_PATH="./robottelo/constants/__init__.py" - # update the version - sed -i.bak "s/SATELLITE_VERSION = \"$old_stream_version\"/SATELLITE_VERSION = \"$new_stream_version\"/" "$FILE_PATH" - sed -i.bak "s/ SATELLITE_VERSION: \"$old_stream_version\"/ SATELLITE_VERSION: \"$new_stream_version\"/" ./conf/robottelo.yaml.template - sed -i.bak "s/SAT_NON_GA_VERSIONS = \[.*\]/SAT_NON_GA_VERSIONS = $non_ga_versions/" "$FILE_PATH" - rm "$FILE_PATH.bak" "./conf/robottelo.yaml.template.bak" - - - name: git status - run: git status - - - name: git diff - run: git diff - - - name: Commit changes - run: | - git config --local user.email "action@github.com" - git config --local user.name "GitHub Action" - branch_name="auto-branching-${{ github.event.inputs.target_branch }}-$(date '+%s')" - git checkout -b "$branch_name" - git add setup.py ./tests/foreman ./robottelo/* ./requirements.txt ./.github/* ./conf/robottelo.yaml.template - git commit -m "Changes for new ${{ github.event.inputs.target_branch }} branch" - git remote -vvv - git push origin "$branch_name" - - - name: Create pull request - id: create_pr - run: | - title="[master]: Changes for new ${{ github.event.inputs.target_branch }} branch" - body=" - ### Problem Statement - New ${{ github.event.inputs.target_branch }} downstream and master points to stream that is ${{ github.event.inputs.stream_version }} - ### Solution - - Dependabot.yaml cherrypicks to ${{ github.event.inputs.target_branch }} - - Robottelo conf and constants now uses ${{ github.event.inputs.stream_version }} and ${{ github.event.inputs.target_branch }} satellite versions - " - pr_number=$(gh pr create --title "$title" --body "$body" --base "master" | awk -F'/' '{print $NF}') - echo "$pr_number" - echo "pr_number=$pr_number" >> $GITHUB_OUTPUT - env: - GITHUB_TOKEN: ${{ secrets.CHERRYPICK_PAT }} - - - name: Add the prt comment for running the sanity tests - id: add-parent-prt-comment - uses: thollander/actions-comment-pull-request@v2 - with: - message: | - trigger: test-robottelo - pr_number: ${{ steps.create_pr.outputs.pr_number }} - GITHUB_TOKEN: ${{ secrets.CHERRYPICK_PAT }} - - - name: add the no-cherrypick label - uses: actions/github-script@v7 - with: - github-token: ${{ secrets.CHERRYPICK_PAT }} - script: | - github.rest.issues.addLabels({ - issue_number: ${{ steps.create_pr.outputs.pr_number }}, - owner: context.repo.owner, - repo: context.repo.repo, - labels: ["No-CherryPick"] - }) diff --git a/.github/workflows/dispatch_release.yml b/.github/workflows/dispatch_release.yml deleted file mode 100644 index 51b6b90919a..00000000000 --- a/.github/workflows/dispatch_release.yml +++ /dev/null @@ -1,31 +0,0 @@ -### The auto release workflow triggered through dispatch request from CI -name: auto-release - -# Run on workflow dispatch from CI -on: - workflow_dispatch: - inputs: - tag_name: - type: string - description: Name of the tag - -jobs: - auto-tag-and-release: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4 - - - name: Git User setup - run: "git config --local user.email Satellite-QE.satqe.com && git config --local user.name Satellite-QE" - - - name: Tag latest commit - run: "git tag -a ${{ github.event.inputs.tag_name }} -m 'Tagged By SatelliteQE Automation User'" - - - name: Push the tag to the upstream - run: "git push ${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}.git --tags" - - - name: create a new release from the tag - env: - credentials: ${{ secrets.GH_TOKEN }} - run: "curl -L -X POST -H \"Authorization: Bearer ${{ secrets.SATQE_GH_TOKEN }}\" ${GITHUB_API_URL}/repos/${GITHUB_REPOSITORY}/releases -d '{\"tag_name\": \"${{ github.event.inputs.tag_name }}\", \"target_commitish\":\"master\", \"name\":\"${{ github.event.inputs.tag_name }}\", \"draft\":false, \"prerelease\":true, \"generate_release_notes\": true}'" diff --git a/requirements.txt b/requirements.txt index db9eb3d0986..e337f4c04d7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -29,6 +29,6 @@ wait-for==1.2.0 wrapanapi==3.6.0 # Get airgun, nailgun and upgrade from master -airgun @ git+https://github.com/SatelliteQE/airgun.git@master#egg=airgun -nailgun @ git+https://github.com/SatelliteQE/nailgun.git@master#egg=nailgun +airgun @ git+https://github.com/SatelliteQE/airgun.git@6.16.z#egg=airgun +nailgun @ git+https://github.com/SatelliteQE/nailgun.git@6.16.z#egg=nailgun --editable . diff --git a/robottelo/constants/__init__.py b/robottelo/constants/__init__.py index bc7d42dc852..c6f233ff16a 100644 --- a/robottelo/constants/__init__.py +++ b/robottelo/constants/__init__.py @@ -18,7 +18,7 @@ class Colored(Box): # This should be updated after each version branch SATELLITE_VERSION = "6.16" SATELLITE_OS_VERSION = "8" -SAT_NON_GA_VERSIONS = ['6.15', '6.16'] +SAT_NON_GA_VERSIONS = ['6.16'] # Default system ports HTTPS_PORT = '443' @@ -171,7 +171,7 @@ class Colored(Box): AZURERM_VM_SIZE_DEFAULT = 'Standard_B1s' AZURERM_PREMIUM_OS_Disk = True AZURERM_FILE_URI = ( - 'https://raw.githubusercontent.com/SatelliteQE/robottelo/master/tests/foreman/data/uri.sh' + 'https://raw.githubusercontent.com/SatelliteQE/robottelo/6.16.z/tests/foreman/data/uri.sh' ) OPERATING_SYSTEMS = entities._OPERATING_SYSTEMS diff --git a/setup.py b/setup.py index 7e0feb9f2b3..ef7d3b7d236 100755 --- a/setup.py +++ b/setup.py @@ -6,7 +6,7 @@ setup( name='robottelo', - version='0.1.0', + version='6.16.z', description='Robottelo is a test suite which exercises The Foreman.', long_description=README, author='Satellite QE Team', diff --git a/tests/foreman/cli/test_capsulecontent.py b/tests/foreman/cli/test_capsulecontent.py index 73e42659fa2..f49edac3cf0 100644 --- a/tests/foreman/cli/test_capsulecontent.py +++ b/tests/foreman/cli/test_capsulecontent.py @@ -43,7 +43,6 @@ ], indirect=True, ) -@pytest.mark.stream def test_positive_content_counts_for_mixed_cv( target_sat, module_capsule_configured, @@ -179,7 +178,6 @@ def test_positive_content_counts_for_mixed_cv( assert len(info['lifecycle-environments']) == 0, 'The LCE is still listed' -@pytest.mark.stream def test_positive_update_counts(target_sat, module_capsule_configured): """Verify the update counts functionality