sync_cmakebuild.yml 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. name: Sync cmakebuild with main
  2. on:
  3. schedule:
  4. - cron: "0 * * * *" # At minute 0 every hour
  5. workflow_dispatch:
  6. concurrency:
  7. group: ${{ github.workflow }}
  8. cancel-in-progress: true
  9. env:
  10. REPO: ${{ github.repository }}
  11. TOKEN: ${{ secrets.GH_PERSONAL_ACCESS_TOKEN }}
  12. jobs:
  13. sync:
  14. runs-on: ubuntu-latest
  15. steps:
  16. - name: Sync
  17. run: |
  18. mainsha=$(curl -s -H "Accept: application/vnd.github.VERSION.sha" https://api.github.com/repos/$REPO/commits/main)
  19. echo "Main sha: ${mainsha}"
  20. lastsha=$(curl -s https://raw.githubusercontent.com/$REPO/cmakebuild/ydb/ci/cmakegen.txt)
  21. echo "Last sha: ${lastsha}"
  22. if [ "${mainsha}" == "${lastsha}" ];then
  23. echo "No new commits on the main branch to merge, exiting"
  24. exit 0
  25. fi
  26. git clone -b main --shallow-exclude cmakebuild https://$TOKEN@github.com/$REPO.git ydb
  27. git config --global user.email "alex@ydb.tech"
  28. git config --global user.name "Alexander Smirnov"
  29. cd ydb
  30. git fetch --depth `expr $(git rev-list --count HEAD) + 1`
  31. # Depth 10: 1st with cmake generation, 2nd with previous merge, 3rd is common between main and cmakebuild,
  32. # others for possible commits directly on cmakebuild branch
  33. git fetch origin cmakebuild:cmakebuild --depth 10
  34. mainsha=$(git rev-parse HEAD)
  35. git checkout cmakebuild
  36. prevsha=$(git rev-parse HEAD)
  37. git merge main --no-edit
  38. currsha=$(git rev-parse HEAD)
  39. if [ ${prevsha} == ${currsha} ];then
  40. echo "Merge did not bring any changes, exiting"
  41. exit
  42. fi
  43. ./generate_cmake -k
  44. echo ${mainsha} > ydb/ci/cmakegen.txt
  45. git add .
  46. git commit -m "Generate cmake for ${mainsha}"
  47. git push --set-upstream origin cmakebuild