Skip to content

mehermvr/bump_fetchcontent

Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Repository files navigation

bump_fetchcontent

GitHub Action that updates CMake FetchContent based dependencies.

Specifically, it does the following:

  • looks through all CMakeLists.txt or *.cmake files in your repo
  • searches for any FetchContent_Declare calls
  • checks if they use the URL style with a file ending in .tar.gz
  • updates the url to a newer version if any

So it looks for dependencies like this:

FetchContent_Declare(
  someLib
  URL https://github.com/user/repo/archive/refs/tags/v1.2.3.tar.gz
)
  • Note: Only github and gitlab links are supported for now.

Of course, the URL style with a .tar.gz link is a very specific use case. But that suffices for my own purposes for now. Contributions welcome to support more cases.

Example workflow

name: Bump FetchContent
on:
  schedule:
    - cron: '0 0 1 * *' # run monthly on the 1st day at midnight UTC
  workflow_dispatch: # allows manual trigger
jobs:
  bump-fetchcontent:
    runs-on: ubuntu-latest
    steps:
      - uses: mehermvr/bump_fetchcontent@v0.0.1
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          ignore_prereleases: 'true'  # default behavior

Inputs

  • github_token (required): Should be available by default. Needed for making a PR if required.
  • ignore_prereleases (optional): Skips pre-release versions like alpha, rc, or beta. Default is "true".

Dry run

You can dry run the changes on your repo by using the file dry_run.py. It takes a single argument which is your repository git url. It'll clone the repo into a temp folder and check for version updates if any.

About

Github action to bump dependency versions when using CMake FetchContent

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages