Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: upgrade pr-comment-ci #4477

Merged
merged 1 commit into from
Aug 14, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
163 changes: 143 additions & 20 deletions .github/workflows/pr-comment-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,14 @@ jobs:
next_action: ${{ steps.get-action.outputs.next_action }}
if: ${{ github.event.issue.pull_request }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 1
- uses: actions/github-script@v7
id: get-action
with:
- uses: actions/checkout@v4
with:
sparse-checkout: |
.github/CODEOWNERS
sparse-checkout-cone-mode: false
- uses: actions/github-script@v7
id: get-action
with:
script: |
const user = context.payload.comment.user.login
core.debug(`user: ${user}`)
Expand All @@ -41,55 +43,176 @@ jobs:
}
if (body.startsWith('/update-snapshot')) {
next_action='update-snapshot'
}
}
if(next_action){
await github.rest.reactions.createForIssueComment({
owner: context.repo.owner,
repo: context.repo.repo,
comment_id: context.payload.comment.id,
content: 'rocket',
})
}
} else {
core.warning('You are not collaborator');
}
core.info(`next_action: ${next_action}`)
core.setOutput('next_action', next_action)

update-common:
needs: check
runs-on: ubuntu-latest
if: ${{ needs.check.outputs.next_action == 'update-common' }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.PERSONAL_TOKEN }}
- name: gh checkout pr
env:
GH_TOKEN: ${{ secrets.PERSONAL_TOKEN }}
run: gh pr checkout ${{ github.event.issue.number }} --recurse-submodules
- run: git submodule update --remote --merge
- name: Commit Common
run: gh pr checkout ${{ github.event.issue.number }}
- name: merge develop
run: |
git add .
git config --local user.email "github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git commit -m "chore: update common"
git push

git merge develop --no-commit || true

- name: check conflicts
run: |
git status
conflict_count=$(git status | grep -c 'both modified:') || true
working_tree_clean=$(git status | grep -c 'nothing to commit, working tree clean') || true
common_conflict=$(git status | grep 'both modified:' | grep -c '_common') || true
conflicts_sum=$((common_conflict))
echo "conflict_count: $conflict_count"
echo "working_tree_clean: $working_tree_clean"
echo "common_conflict: $common_conflict"
echo "conflicts_sum: $conflicts_sum"

if [ "$working_tree_clean" -eq "1" ]; then
echo "nothing to commit, working tree clean"
exit 0
fi

if [ "$conflict_count" -gt "0" ]&&[ "$conflicts_sum" -eq "0" ]; then
echo "Unknown conflict "
git status
exit 1
fi

if [ "$common_conflict" -eq "1" ];then
git checkout --theirs src/_common
git add src/_common
echo "resolve conflict _common"
fi

git status
git commit -am "chore: merge develop"
- run: git submodule init
- run: git submodule update --remote --merge
- name: Commit common
run: |
git status
working_tree_clean=$(git status | grep -c 'nothing to commit, working tree clean') || true
if [ "$working_tree_clean" -eq "0" ]; then
git add .
git commit -m "chore: update common"
fi
git status
- name: git push
run: |
git status
branch_ahead=$(git status | grep -c 'use "git push" to publish your local commits') || true
if [ "$branch_ahead" -eq "1" ]; then
git push
fi
git status

update-snapshot:
needs: check
runs-on: ubuntu-latest
if: ${{ needs.check.outputs.next_action == 'update-snapshot' }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.PERSONAL_TOKEN }}
- name: gh checkout pr
env:
GH_TOKEN: ${{ secrets.PERSONAL_TOKEN }}
run: gh pr checkout ${{ github.event.issue.number }} --recurse-submodules
- name: merge develop
run: |
git config --local user.email "github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git merge develop --no-commit || true
- name: check conflicts
run: |
git status
conflict_count=$(git status | grep -c 'both modified:') || true
working_tree_clean=$(git status | grep -c 'nothing to commit, working tree clean') || true
csr_snap_conflict=$(git status | grep 'both modified:' | grep -c 'csr.test.jsx.snap') || true
ssr_snap_conflict=$(git status | grep 'both modified:' | grep -c 'ssr.test.jsx.snap') || true
common_conflict=$(git status | grep 'both modified:' | grep -c '_common') || true
conflicts_sum=$((csr_snap_conflict + ssr_snap_conflict + common_conflict))
echo "conflict_count: $conflict_count"
echo "working_tree_clean: $working_tree_clean"
echo "csr_snap_conflict: $csr_snap_conflict"
echo "ssr_snap_conflict: $ssr_snap_conflict"
echo "common_conflict: $common_conflict"
echo "conflicts_sum: $conflicts_sum"

if [ "$working_tree_clean" -eq "1" ]; then
echo "nothing to commit, working tree clean"
exit 0
fi

if [ "$conflict_count" -gt "0" ]&&[ "$conflicts_sum" -eq "0" ]; then
echo "Unknown conflict "
git status
exit 1
fi

if [ "$csr_snap_conflict" -eq "1" ];then
git checkout --theirs test/snap/__snapshots__/csr.test.jsx.snap
git add test/snap/__snapshots__/csr.test.jsx.snap
echo "resolve conflict csr.test.jsx.snap"
fi

if [ "$ssr_snap_conflict" -eq "1" ];then
git checkout --theirs test/snap/__snapshots__/ssr.test.jsx.snap
git add test/snap/__snapshots__/ssr.test.jsx.snap
echo "resolve conflict ssr.test.jsx.snap"
fi

if [ "$common_conflict" -eq "1" ];then
git checkout --theirs src/_common
git add src/_common
echo "resolve conflict _common"
fi

git status
git commit -am "chore: merge develop"

- uses: actions/setup-node@v4
with:
node-version: 18
- run: npm install
- run: npm run test:update
- name: Commit Snapshot
run: |
git add .
git config --local user.email "github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git commit -m "chore: update snapshot"
git push
git status
working_tree_clean=$(git status | grep -c 'nothing to commit, working tree clean') || true
if [ "$working_tree_clean" -eq "0" ]; then
git add .
git commit -m "chore: update snapshot"
fi
git status
- name: git push
run: |
git status
branch_ahead=$(git status | grep -c 'use "git push" to publish your local commits') || true
if [ "$branch_ahead" -eq "1" ]; then
git push
fi
git status
Loading