Use create-pull-request for update of submodules

This commit is contained in:
Magne Sjaastad 2024-08-14 15:05:01 +02:00
parent f0e19b0fb5
commit b717615bfd

View File

@ -8,6 +8,11 @@ on:
jobs:
update-submodules:
runs-on: ubuntu-latest
strategy:
matrix:
submodule:
- tomlplusplus
- vcpkg
steps:
- name: Checkout repository
@ -15,61 +20,25 @@ jobs:
with:
submodules: recursive
- name: Install GitHub CLI
run: sudo apt-get install -y gh
- name: Configure Git
run: |
git config --global user.name 'github-actions[bot]'
git config --global user.email 'github-actions[bot]@users.noreply.github.com'
- name: Update submodules to latest release
id: git-change-job
run: |
cd ThirdParty
cd ThirdParty/${{ matrix.submodule }}
git fetch --tags
latest_tag=$(git describe --tags `git rev-list --tags --max-count=1`)
git fetch --all
submodules=("fast_float" "spdlog" "tomlplusplus" )
for submodule in "${submodules[@]}"; do
BRANCH_NAME=ci-update-$submodule
if git ls-remote --heads origin "$BRANCH_NAME" | grep -q "$BRANCH_NAME"; then
echo "Branch $BRANCH_NAME exists."
git checkout -b "$BRANCH_NAME" "origin/$BRANCH_NAME"
else
echo "Branch $BRANCH_NAME does not exist. Creating branch."
git checkout -b "$BRANCH_NAME"
fi
if [ -n "$latest_tag" ]; then
git checkout $latest_tag
echo "LATEST_TAG=$latest_tag" >> "$GITHUB_OUTPUT"
else
echo "Empty tag detected in ${{ matrix.submodule }}. Nothing to do."
fi
cd $submodule
git fetch --tags
latest_tag=$(git describe --tags `git rev-list --tags --max-count=1`)
if [ -n "$latest_tag" ]; then
git checkout $latest_tag
else
echo "Empty tag detected in $submodule. Nothing to do."
fi
cd ..
if git diff --quiet; then
echo "No changes detected in $submodule"
else
git add $submodule
git commit -m "Update $submodule to $latest_tag" || echo "No changes to commit"
git push origin "$BRANCH_NAME"
fi
git checkout dev
git reset --hard origin/dev --recurse-submodule
done
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Create Pull Requests for each submodule
run: |
submodules=("fast_float" "spdlog" "tomlplusplus" )
for submodule in "${submodules[@]}"; do
gh pr create --title "Update $submodule to latest release" --body "This PR updates the $submodule submodule to its latest release." --head ci-update-$submodule --base dev
done
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Create PR
uses: peter-evans/create-pull-request@v6
with:
token: ${{ secrets.GITHUB_TOKEN }}
commit-message: "Update ${{ matrix.submodule }} to ${{ steps.git-change-job.outputs.LATEST_TAG }}"
title: "Update ${{ matrix.submodule }} to ${{ steps.git-change-job.outputs.LATEST_TAG }}"
branch: ci-update-${{ matrix.submodule }}
branch-suffix: random