--- # $schema: "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: ubuntu-latest permissions: write-all steps: - name: Checkout repository uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: submodules: true fetch-depth: 2 token: ${{secrets.GITHUB_TOKEN}} - name: Config Git User shell: bash run: | git config --global user.name "${{ github.actor }}" git config --global user.email "${{ github.actor }}@users.noreply.github.com" - name: Update submodules shell: bash 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