forked from apache/incubator-kie-drools
-
Notifications
You must be signed in to change notification settings - Fork 36
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
SRVLOGIC-203: Schedule midstream main branch sync (#44)
* GHA creation * Last update * Uncomment owner check * Update PR branch name
- Loading branch information
1 parent
a8a61af
commit f1ca146
Showing
1 changed file
with
90 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,90 @@ | ||
name: Create a PR to sync main branch with main-apache | ||
|
||
env: | ||
USERNAME: kie-ci | ||
USEREMAIL: [email protected] | ||
GITHUB_TOKEN: ${{ secrets.APACHE_SYNC_MIDSTREAM_TOKEN }} | ||
|
||
on: | ||
schedule: | ||
- cron: '0 1 * * 0' | ||
workflow_dispatch: | ||
|
||
jobs: | ||
sync-main: | ||
if: github.repository_owner == 'kiegroup' | ||
name: Sync main with main-apache branch | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- name: Generate PR ID | ||
id: generate_pr_id | ||
run: echo "pr_id=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT | ||
|
||
- name: Checkout repository | ||
uses: actions/checkout@v4 | ||
with: | ||
ref: main | ||
# By default, checkout@v4 fetches only a single commit unless you specify "fetch-depth: 0". Without this "git merge" throwns an "unrelated histories". | ||
fetch-depth: '0' | ||
|
||
- name: Setup git environment | ||
run: | | ||
git config --global user.name "$USERNAME" | ||
git config --global user.email "$USEREMAIL" | ||
- name: Fetch all | ||
run: git fetch --all | ||
|
||
- name: Checkout main branch | ||
run: git checkout main | ||
|
||
- name: Create the PR branch | ||
run: git checkout -b sync-main-pr-${{ steps.generate_pr_id.outputs.pr_id }} | ||
|
||
- name: Merge main-apache branch excluding white-listed paths | ||
id: merge | ||
run: | | ||
set -x | ||
git merge --no-commit origin/main-apache || true | ||
git reset origin/main ${{vars.MAIN_SYNC_WORKFLOW_EXCLUDE_PATHS}} | ||
if git diff --cached --quiet; then | ||
echo "No changes staged for commit." | ||
else | ||
git commit -m "Merge main-apache and exclude white-listed changes from the merge" | ||
fi | ||
echo "excluded_files=$(git ls-files -mo | sed -z 's/\n/<br \/>/g')" >> $GITHUB_OUTPUT | ||
- name: Check for changes | ||
id: check_changes | ||
run: | | ||
if git diff --quiet origin/main; then | ||
echo "No changes detected." | ||
echo "is_changed=false" >> $GITHUB_OUTPUT | ||
else | ||
echo "Changes detected." | ||
echo "is_changed=true" >> $GITHUB_OUTPUT | ||
fi | ||
- name: Push changes | ||
if: steps.check_changes.outputs.is_changed == 'true' | ||
run: git push origin sync-main-pr-${{ steps.generate_pr_id.outputs.pr_id }} | ||
|
||
- name: Create the PR | ||
if: steps.check_changes.outputs.is_changed == 'true' | ||
run: | | ||
runUrl="${{github.server_url}}/${{ github.repository }}/actions/runs/${{ github.run_id }}" | ||
if [[ -n "${{ steps.merge.outputs.excluded_files }}" ]]; then | ||
excludedFiles="${{ steps.merge.outputs.excluded_files }}" | ||
else | ||
excludedFiles="No files have been excluded<br />" | ||
fi | ||
prTitle="Automatic PR: Sync main with main-apache (${{steps.generate_pr_id.outputs.pr_id}})" | ||
prBody="This pull request has been created by a GitHub workflow to synchronize the main branch with main-apache branch.<br /><br />\ | ||
<b>:warning:Important:warning:</b><br />Please don't merge using squash, not to loose the git history.<br /><br />\ | ||
<b>Excluded files:</b><br />${excludedFiles}<br />\ | ||
[View Action](${runUrl})" | ||
if [[ -n "${{ vars.MAIN_SYNC_WORKFLOW_PR_REVIEWERS }}" ]]; then | ||
reviewersOption="--reviewer ${{vars.MAIN_SYNC_WORKFLOW_PR_REVIEWERS}}" | ||
fi | ||
gh pr create --title "${prTitle}" --body "${prBody}" --base main $reviewersOption |