Automatically Update Submodules with GitHub Action


In this tutorial, you will learn how to automatically update submodules using GitHub Actions. The article demonstrates a GitHub action that triggers the update process each time a new commit is pushed to the main repository. By the end of this tutorial, you will understand the practical application of GitHub actions in efficiently managing submodules in your projects.


Before you start, make sure you have the following prerequisites:

1. Basic knowledge of Git and GitHub

2. A GitHub account

3. A Git repository with submodules

Setting up the GitHub Action

To set up the GitHub action submodule update functionality, follow these steps:

1. First, navigate to your repository on GitHub.

2. Create a new directory named `.github` in the root of your repository.

3. Inside the `.github` directory, create another directory called `workflows`.

4. Create a new YAML file inside the `workflows` folder, for example `update_submodules.yml`.

Now you will configure the GitHub action using the YAML file. The action should achieve three primary tasks: Checkout the repository, update the submodules, and push the changes. Add the following content to your `update_submodules.yml` file:

name: Update Submodules

on: [push]

    runs-on: ubuntu-latest
    - name: Checkout Repository
      uses: actions/checkout@v2

    - name: Update Submodules
      run: |
        git submodule update --init --recursive
        git submodule update --remote

    - name: Commit and Push Changes
      run: |
        git config --global user.name 'GitHub Action'
        git config --global user.email 'github-actions@example.com'
        git add .
        git diff --quiet --exit-code HEAD || git commit -m 'Update submodules'
        git push origin HEAD:${{ github.ref }}

With this configuration, the GitHub action will trigger on every push, checkout the repository, update the submodules, and commit and push the changes if there are any updates. Make sure to save and commit the `update_submodules.yml` file to your repository.


You have successfully learned how to automatically update submodules using GitHub Actions. This process streamlines submodule management and ensures that your project always has the latest submodule updates. Now you can implement this efficient solution in your projects to keep submodules up-to-date with ease.