--- # yaml-language-server: https://json.schemastore.org/github-workflow.json name: Update submodules on: schedule: # At 04:00 on Monday and Thursday. - cron: "0 4 * * 1" workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true permissions: read-all jobs: update-submodules: runs-on: self-hosted permissions: write-all steps: - name: Checkout repository uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: submodules: true fetch-depth: 2 token: ${{secrets.GITHUB_TOKEN}} - name: Config Git User run: | git config --global user.name "${{ github.actor }}" git config --global user.email "${{ github.actor }}@users.noreply.github.com" - name: Update submodules run: | git submodule sync git submodule foreach --quiet ' tag="$(git describe --tags --abbrev=0 origin/HEAD)" if [ "$(git describe --tags)" != "$tag" ]; then git checkout --quiet "$tag" echo "$name updated to $tag" fi ' if git diff --quiet; then echo "No updates for submodules." else git add . git commit -m "chore(git): Update submodules (automated)" git show --raw git push fi