Skip to content

Commit

Permalink
Merge branch '6.15.z' into cherry-pick-6.15.z-fa4bc0fc6c900fe89271155…
Browse files Browse the repository at this point in the history
…de5764ee38bf13a40
  • Loading branch information
shweta83 authored Aug 23, 2024
2 parents 73a4a2b + c4396b3 commit e14de64
Show file tree
Hide file tree
Showing 50 changed files with 657 additions and 348 deletions.
169 changes: 169 additions & 0 deletions .github/workflows/auto_cherry_pick_merged.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,169 @@
### The workflow for retrying/rerunning the merged PRs AutoCherryPick which was missed/failed due to any circumstances
name: Retry Merged PRs AutoCherryPick

# Run on workflow dispatch from CI
on:
workflow_dispatch:
inputs:
parent_pr:
type: string
description: |
An identifier for parent PR to retry it's cherrypick
e.g 12314
branches:
type: string
description: |
Comma separated list of branches where the master PR to be cherrypicked.
e.g: 6.15.z, 6.16.z
env:
number: ${{ github.event.inputs.parent_pr }}
is_dependabot_pr: ''

jobs:
get-parentPR-details:
runs-on: ubuntu-latest
outputs:
labels: ${{ steps.parentPR.outputs.labels }}
state: ${{ steps.parentPR.outputs.state }}
base_ref: ${{ steps.parentPR.outputs.base_ref }}
assignee: ${{ steps.parentPR.outputs.assignee }}
title: ${{ steps.parentPR.outputs.title }}
prt_comment: ${{ steps.fc.outputs.comment-body }}

steps:
- name: Find parent PR details
id: parentPR
uses: actions/github-script@v7
with:
github-token: ${{ secrets.CHERRYPICK_PAT }}
script: |
const { data: pr } = await github.rest.pulls.get({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: ${{ env.number }},
});
core.setOutput('labels', pr.labels);
core.setOutput('state', pr.state);
core.setOutput('base_ref', pr.base.ref);
core.setOutput('assignee', pr.assignee.login);
core.setOutput('title', pr.title);
- name: Find & Save last PRT comment of Parent PR
uses: peter-evans/find-comment@v3
id: fc
with:
issue-number: ${{ env.number }}
body-includes: "trigger: test-robottelo"
direction: last

- name: Print PR details
run: |
echo "Labels are ${{ steps.parentPR.outputs.labels }}"
echo "State is ${{ steps.parentPR.outputs.state }}"
echo "Base Ref is ${{ steps.parentPR.outputs.base_ref }}"
echo "Assignee is ${{ steps.parentPR.outputs.assignee }}"
echo "Title is ${{ steps.parentPR.outputs.title }}"
arrayconversion:
needs: get-parentPR-details
if: ${{ needs.get-parentPR-details.outputs.state }} == closed
runs-on: ubuntu-latest
outputs:
branches: ${{ steps.conversion.outputs.branches }}
steps:
- name: Convert String to List
id: conversion
uses: actions/github-script@v7
with:
script: |
const branches = "${{ github.event.inputs.branches }}";
const branchesArray = branches.includes(',') ? branches.split(',').map(item => item.trim()) : [branches.trim()];
core.setOutput('branches', JSON.stringify(branchesArray));
run-the-branch-matrix:
name: Auto Cherry Pick to labeled branches
runs-on: ubuntu-latest
needs: [arrayconversion, get-parentPR-details]
if: ${{ needs.arrayconversion.outputs.branches != '' }}
strategy:
matrix:
branch: ${{ fromJson(needs.arrayconversion.outputs.branches) }}
steps:
- name: Tell me the branch name
run: |
echo "Branch is: ${{ matrix.branch }}"
# Needed to avoid out-of-memory error
- name: Set Swap Space
uses: pierotofy/set-swap-space@master
with:
swap-size-gb: 10

## Robottelo Repo Checkout
- uses: actions/checkout@v4
if: ${{ startsWith(matrix.branch, '6.') && matrix.branch != needs.get-parentPR-details.outputs.base_ref }}
with:
fetch-depth: 0

## Set env var for dependencies label PR
- name: Set env var is_dependabot_pr to `dependencies` to set the label
if: contains(needs.get-parentPR-details.outputs.labels.*.name, 'dependencies')
run: |
echo "is_dependabot_pr=dependencies" >> $GITHUB_ENV
## CherryPicking and AutoMerging
- name: Cherrypicking to zStream branch
id: cherrypick
if: ${{ startsWith(matrix.branch, '6.') && matrix.branch != needs.get-parentPR-details.outputs.base_ref }}
uses: jyejare/github-cherry-pick-action@main
with:
token: ${{ secrets.CHERRYPICK_PAT }}
pull_number: ${{ env.number }}
branch: ${{ matrix.branch }}
labels: |
Auto_Cherry_Picked
${{ matrix.branch }}
No-CherryPick
${{ env.is_dependabot_pr }}
assignees: ${{ needs.get-parentPR-details.outputs.assignee }}

- name: Add Parent PR's PRT comment to Auto_Cherry_Picked PR's
id: add-parent-prt-comment
if: ${{ always() && needs.get-parentPR-details.outputs.prt_comment != '' && steps.cherrypick.outcome == 'success' }}
uses: thollander/actions-comment-pull-request@v2
with:
message: |
${{ needs.get-parentPR-details.outputs.prt_comment }}
pr_number: ${{ steps.cherrypick.outputs.number }}
GITHUB_TOKEN: ${{ secrets.CHERRYPICK_PAT }}

- name: is autoMerging enabled for Auto CherryPicked PRs ?
if: ${{ always() && steps.cherrypick.outcome == 'success' && contains(needs.get-parentPR-details.outputs.labels.*.name, 'AutoMerge_Cherry_Picked') }}
uses: actions/github-script@v7
with:
github-token: ${{ secrets.CHERRYPICK_PAT }}
script: |
github.rest.issues.addLabels({
issue_number: ${{ steps.cherrypick.outputs.number }},
owner: context.repo.owner,
repo: context.repo.repo,
labels: ["AutoMerge_Cherry_Picked"]
})
- name: Check if cherrypick pr is created
id: search_pr
if: always()
run: |
PR_TITLE="[${{ matrix.branch }}] ${{ needs.get-parentPR-details.outputs.title }}"
API_URL="https://api.github.com/repos/${{ github.repository }}/pulls?state=open"
PR_SEARCH_RESULT=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" "$API_URL" | jq --arg title "$PR_TITLE" '.[] | select(.title == $title)')
if [ -n "$PR_SEARCH_RESULT" ]; then
echo "pr_found=true" >> $GITHUB_OUTPUT
echo "PR is Found with title $PR_TITLE"
else
echo "pr_found=false" >> $GITHUB_OUTPUT
echo "PR is not Found with title $PR_TITLE"
fi
1 change: 0 additions & 1 deletion .github/workflows/pull_request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ env:
PYCURL_SSL_LIBRARY: openssl
ROBOTTELO_BUGZILLA__API_KEY: ${{ secrets.BUGZILLA_KEY }}
ROBOTTELO_JIRA__API_KEY: ${{ secrets.JIRA_KEY }}
ROBOTTELO_ROBOTTELO__SETTINGS__IGNORE_VALIDATION_ERRORS: true

jobs:
codechecks:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/weekly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ jobs:
echo "assignees: pondrejk " >> .env.md
echo "labels: Documentation" >> .env.md
echo "---" >> .env.md
echo CS_TAGS="$(make customer-scenario-check)" >> .env.md
echo CS_TAGS="$(make customer-scenario-check-jira)" >> .env.md
if grep 'The following tests need customerscenario tags' .env.md; then
echo "::set-output name=result::0"
fi
Expand Down
5 changes: 0 additions & 5 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -81,11 +81,6 @@ tests/foreman/pytest.ini
/conf/*.conf
!/conf/supportability.yaml

# I don't know where those 2 files come from
# but they are always there.
full_upgrade
upgrade_highlights

#Robottelo artifact
screenshots/
tmp/
Expand Down
2 changes: 1 addition & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ repos:
- id: check-yaml
- id: debug-statements
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.5.6
rev: v0.6.1
hooks:
- id: ruff
args: [--fix, --exit-non-zero-on-fix]
Expand Down
Loading

0 comments on commit e14de64

Please sign in to comment.