forked from SatelliteQE/nailgun
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Omkar Khatavkar
authored
Mar 18, 2024
1 parent
ef2c9e7
commit cc7d886
Showing
1 changed file
with
161 additions
and
0 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,161 @@ | ||
### 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: | ||
auto-branching-non-master: | ||
name: ${{ github.event.inputs.target_branch }} - raise PR with changes | ||
runs-on: ubuntu-latest | ||
|
||
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.GITHUB_TOKEN }} | ||
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.GITHUB_TOKEN }}" \ | ||
-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: 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: 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" | ||
git add ./.github/* | ||
git commit -m "Changes for ${{ github.event.inputs.target_branch }} new branch" | ||
git remote -vvv | ||
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 | ||
" | ||
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.GITHUB_TOKEN }} | ||
|
||
- 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 }} | ||
|
||
auto-branching-master: | ||
name: master - raise PR with changes | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- 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: 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 ./.github/* | ||
git commit -m "Changes for ${{ github.event.inputs.target_branch }} new branch" | ||
git remote -vvv | ||
git push origin "$branch_name" | ||
- name: Create pull request | ||
id: create_pr | ||
run: | | ||
title="[master]: Changes for ${{ github.event.inputs.target_branch }} new 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 }} | ||
" | ||
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.GITHUB_TOKEN }} | ||
|
||
- 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 }} |