From 1d7a3727bdb2703001039870889464323bdcc001 Mon Sep 17 00:00:00 2001 From: Thomas Isensee <26852629+thomasisensee@users.noreply.github.com> Date: Tue, 25 Nov 2025 16:35:30 +0100 Subject: [PATCH 1/9] Setup automatic propagation of changes to the cpp-project-template repository via pull request, using a PAT --- .github/cpp-project-template.yml | 17 ++++++++ .github/workflows/sync-template.yml | 63 +++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 .github/cpp-project-template.yml create mode 100644 .github/workflows/sync-template.yml diff --git a/.github/cpp-project-template.yml b/.github/cpp-project-template.yml new file mode 100644 index 0000000..6f431c4 --- /dev/null +++ b/.github/cpp-project-template.yml @@ -0,0 +1,17 @@ +default_context: + project_name: "Your Project" + remote_url: "None" + project_slug: "your-project" + full_name: "Your Name" + license: "MIT" + use_submodules: "No" + header_only: "No" + external_dependency: "None" + github_acitons_ci: "Yes" + gitlab_ci: "No" + readthedocs: "Yes" + doxygen: "Yes" + cxx_minimum_standard: "20" + python_bindings: "No" + pypi_release: "No" + codecovio: "Yes" diff --git a/.github/workflows/sync-template.yml b/.github/workflows/sync-template.yml new file mode 100644 index 0000000..f70db1f --- /dev/null +++ b/.github/workflows/sync-template.yml @@ -0,0 +1,63 @@ +name: Sync template repository + +on: + push: + branches: + - sync-project-template + workflow_dispatch: + +jobs: + sync: + runs-on: ubuntu-latest + + steps: + - name: Checkout the cookiecutter repository + uses: actions/checkout@v5 + with: + path: cookiecutter-repository + + - name: Install cookiecutter and dependencies + run: pip install cookiecutter + + - name: Set up git identity + run: | + git config --global user.name "ssc-sync-bot" + git config --global user.email "@users.noreply.github.com" + + - name: Bake template using config + run: | + cookiecutter \ + --no-input \ + --config-file cookiecutter-repository/.github/cpp-project-template.yml \ + cookiecutter-repository/ + + - name: Checkout target repository + uses: actions/checkout@v5 + with: + repository: ssciwr/cpp-project-template + ref: sync-test + path: target-repository + token: ${{ secrets.TEMPLATE_SYNC_TOKEN }} + + - name: Sync generated files + run: | + rsync -av --delete \ + --exclude '.git/' \ + your-project/ target-repository/ + + - name: Commit changes + working-directory: target-repository + run: | + git add . + git commit -m "Sync from ssciwr/cookiecutter-cpp-project" || echo "No changes" + + - name: Create pull request + uses: peter-evans/create-pull-request@v7 + with: + token: ${{ secrets.TEMPLATE_SYNC_TOKEN }} + commit-message: "Sync from cookiecutter" + branch: auto-sync/update-from-cookiecutter + title: "Automated sync from cookiecutter" + body: "This PR propagates changes from https://github.com/ssciwr/cookiecutter-cpp-project." + base: sync-test + path: target-repository From 5c5801b59a139b7c2742896a8f20120e4b1ea0a4 Mon Sep 17 00:00:00 2001 From: Thomas Isensee <26852629+thomasisensee@users.noreply.github.com> Date: Wed, 26 Nov 2025 14:14:46 +0100 Subject: [PATCH 2/9] Use ssh key instead of PAT and push changes directly into target repository --- .github/workflows/sync-template.yml | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/.github/workflows/sync-template.yml b/.github/workflows/sync-template.yml index f70db1f..443d2e3 100644 --- a/.github/workflows/sync-template.yml +++ b/.github/workflows/sync-template.yml @@ -16,13 +16,13 @@ jobs: with: path: cookiecutter-repository - - name: Install cookiecutter and dependencies + - name: Install cookiecutter run: pip install cookiecutter - name: Set up git identity run: | - git config --global user.name "ssc-sync-bot" - git config --global user.email "@users.noreply.github.com" + git config --global user.email "ssc@sync-template.com" + git config --global user.name "SSC Template Sync" - name: Bake template using config run: | @@ -32,12 +32,12 @@ jobs: cookiecutter-repository/ - name: Checkout target repository - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: repository: ssciwr/cpp-project-template ref: sync-test path: target-repository - token: ${{ secrets.TEMPLATE_SYNC_TOKEN }} + ssh-key: ${{ secrets.SSCIWR_CPP_PROJECT_TEMPLATE_DEPLOY_KEY }} - name: Sync generated files run: | @@ -45,19 +45,11 @@ jobs: --exclude '.git/' \ your-project/ target-repository/ - - name: Commit changes + - name: Commit and push working-directory: target-repository run: | git add . git commit -m "Sync from ssciwr/cookiecutter-cpp-project" || echo "No changes" - - name: Create pull request - uses: peter-evans/create-pull-request@v7 - with: - token: ${{ secrets.TEMPLATE_SYNC_TOKEN }} - commit-message: "Sync from cookiecutter" - branch: auto-sync/update-from-cookiecutter - title: "Automated sync from cookiecutter" - body: "This PR propagates changes from https://github.com/ssciwr/cookiecutter-cpp-project." - base: sync-test - path: target-repository + echo "Pushing changes to target repository..." + git push origin sync-test From 087b571077aa688e180fe5669eb5ee191117718c Mon Sep 17 00:00:00 2001 From: Thomas Isensee <26852629+thomasisensee@users.noreply.github.com> Date: Wed, 26 Nov 2025 14:16:08 +0100 Subject: [PATCH 3/9] Bump GitHub Actions --- .github/workflows/ci.yml | 4 ++-- .github/workflows/pypi.yml | 2 +- .github/workflows/sync-template.yml | 2 +- {{cookiecutter.project_slug}}/.github/workflows/ci.yml | 8 ++++---- {{cookiecutter.project_slug}}/.github/workflows/pypi.yml | 8 ++++---- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1f11500..47c21ae 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -33,7 +33,7 @@ jobs: steps: - name: Checking out the cookie cutter repository - uses: actions/checkout@v5 + uses: actions/checkout@v6 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v6 @@ -86,7 +86,7 @@ jobs: steps: - name: Checking out the cookie cutter repository - uses: actions/checkout@v5 + uses: actions/checkout@v6 - uses: actions/setup-python@v6 with: diff --git a/.github/workflows/pypi.yml b/.github/workflows/pypi.yml index ee7b72a..7896388 100644 --- a/.github/workflows/pypi.yml +++ b/.github/workflows/pypi.yml @@ -15,7 +15,7 @@ jobs: steps: - name: Checking out the cookie cutter repository - uses: actions/checkout@v5 + uses: actions/checkout@v6 - uses: actions/setup-python@v6 with: diff --git a/.github/workflows/sync-template.yml b/.github/workflows/sync-template.yml index 443d2e3..9c5de87 100644 --- a/.github/workflows/sync-template.yml +++ b/.github/workflows/sync-template.yml @@ -12,7 +12,7 @@ jobs: steps: - name: Checkout the cookiecutter repository - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: path: cookiecutter-repository diff --git a/{{cookiecutter.project_slug}}/.github/workflows/ci.yml b/{{cookiecutter.project_slug}}/.github/workflows/ci.yml index ad6d673..babdfca 100644 --- a/{{cookiecutter.project_slug}}/.github/workflows/ci.yml +++ b/{{cookiecutter.project_slug}}/.github/workflows/ci.yml @@ -26,7 +26,7 @@ jobs: os: [ubuntu-latest, macos-latest, windows-latest] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 {% if cookiecutter.use_submodules == "Yes" %} with: submodules: 'recursive' @@ -80,14 +80,14 @@ jobs: os: [ubuntu-latest, macos-latest, windows-latest] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 {% if cookiecutter.use_submodules == "Yes" %} with: submodules: 'recursive' {%- endif %} - name: Set up Python - uses: actions/setup-python@v5 + uses: actions/setup-python@v6 with: python-version: "3.13" @@ -105,7 +105,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 {% if cookiecutter.use_submodules == "Yes" %} with: submodules: 'recursive' diff --git a/{{cookiecutter.project_slug}}/.github/workflows/pypi.yml b/{{cookiecutter.project_slug}}/.github/workflows/pypi.yml index 85a6a20..84b758d 100644 --- a/{{cookiecutter.project_slug}}/.github/workflows/pypi.yml +++ b/{{cookiecutter.project_slug}}/.github/workflows/pypi.yml @@ -16,14 +16,14 @@ jobs: os: [ubuntu-latest, windows-latest, macos-latest] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 with: submodules: 'recursive' - name: Build wheels uses: pypa/cibuildwheel@v{{ cookiecutter._cibuildwheel_version }} - - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@v5 with: path: ./wheelhouse/*.whl @@ -34,7 +34,7 @@ jobs: id-token: write if: github.event_name == 'release' && github.event.action == 'published' steps: - - uses: actions/download-artifact@v4 + - uses: actions/download-artifact@v6 with: name: artifact path: dist @@ -50,7 +50,7 @@ jobs: id-token: write if: github.event_name == 'release' && github.event.action == 'published' steps: - - uses: actions/download-artifact@v4 + - uses: actions/download-artifact@v6 with: name: artifact path: dist From b455725d1a877207ed45da774393e0028aa9779a Mon Sep 17 00:00:00 2001 From: Thomas Isensee <26852629+thomasisensee@users.noreply.github.com> Date: Mon, 1 Dec 2025 15:47:58 +0100 Subject: [PATCH 4/9] Add acknowledgment with link to the cookiecutter repository --- {{cookiecutter.project_slug}}/README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/{{cookiecutter.project_slug}}/README.md b/{{cookiecutter.project_slug}}/README.md index 17912f6..e5f8c0d 100644 --- a/{{cookiecutter.project_slug}}/README.md +++ b/{{cookiecutter.project_slug}}/README.md @@ -138,3 +138,9 @@ The web documentation can then be browsed by opening `doc/html/index.html` in yo {% else %} {{ cookiecutter.project_name }} *should* provide a documentation. {% endif -%} + + +## Acknowledgments + +This repository was set up using the [SSC Cookiecutter for C++ Packages](https://github.com/ssciwr/cookiecutter-cpp-project). + From 78c59ad685182f3119e218d228c26eceb6ec8a7c Mon Sep 17 00:00:00 2001 From: Thomas Isensee <26852629+thomasisensee@users.noreply.github.com> Date: Fri, 12 Dec 2025 13:28:59 +0100 Subject: [PATCH 5/9] Fix typo Co-authored-by: Liam Keegan --- .github/cpp-project-template.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/cpp-project-template.yml b/.github/cpp-project-template.yml index 6f431c4..81e9f4f 100644 --- a/.github/cpp-project-template.yml +++ b/.github/cpp-project-template.yml @@ -7,7 +7,7 @@ default_context: use_submodules: "No" header_only: "No" external_dependency: "None" - github_acitons_ci: "Yes" + github_actions_ci: "Yes" gitlab_ci: "No" readthedocs: "Yes" doxygen: "Yes" From 857a820d31a180d3eaf332a8100de32b41aaae95 Mon Sep 17 00:00:00 2001 From: Thomas Isensee <26852629+thomasisensee@users.noreply.github.com> Date: Fri, 12 Dec 2025 14:20:41 +0100 Subject: [PATCH 6/9] Remove trailing whitespace and format files according to pre-commit hooks of baked project --- .github/workflows/ci.yml | 2 +- .../.github/workflows/ci.yml | 4 +-- {{cookiecutter.project_slug}}/LICENSE.md | 2 +- {{cookiecutter.project_slug}}/README.md | 1 - .../app/{{cookiecutter.project_slug}}_app.cpp | 5 +-- .../doc/CMakeLists.txt | 32 +++++++++---------- {{cookiecutter.project_slug}}/doc/conf.py | 9 +++--- .../{{cookiecutter.project_slug}}.hpp | 4 ++- .../__init__.py | 1 + .../requirements-dev.txt | 2 +- .../src/{{cookiecutter.project_slug}}.cpp | 5 +-- .../tests/{{cookiecutter.project_slug}}_t.cpp | 2 +- 12 files changed, 37 insertions(+), 32 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 47c21ae..593e6ff 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,7 +13,7 @@ on: workflow_dispatch: # Additionally, we run Monday morning 6AM, so that we can react quickly if things break schedule: - - cron: "0 5 * * 1" + - cron: "0 5 * * 1" env: CATCH2_VERSION: 3.11.0 diff --git a/{{cookiecutter.project_slug}}/.github/workflows/ci.yml b/{{cookiecutter.project_slug}}/.github/workflows/ci.yml index babdfca..e6df95f 100644 --- a/{{cookiecutter.project_slug}}/.github/workflows/ci.yml +++ b/{{cookiecutter.project_slug}}/.github/workflows/ci.yml @@ -137,7 +137,7 @@ jobs: run: | python -m pytest --cov --cov-report=xml {% else %} - - name: Creat cmake build directory + - name: Create cmake build directory run: cmake -E make_directory ${{ "{{ github.workspace }}" }}/build - name: configure cmake @@ -168,4 +168,4 @@ jobs: with: fail_ci_if_error: true files: ${{ "{{github.workspace}}" }}/coverage.info{% if cookiecutter.python_bindings == "Yes" %},coverage.xml{% endif %} -{% endif %} +{% endif %} \ No newline at end of file diff --git a/{{cookiecutter.project_slug}}/LICENSE.md b/{{cookiecutter.project_slug}}/LICENSE.md index 458f209..7418dc0 100644 --- a/{{cookiecutter.project_slug}}/LICENSE.md +++ b/{{cookiecutter.project_slug}}/LICENSE.md @@ -851,4 +851,4 @@ whether future versions of the GNU Lesser General Public License shall apply, that proxy's public statement of acceptance of any version is permanent authorization for you to choose that version for the Library. -{%- endif -%} +{%- endif -%} \ No newline at end of file diff --git a/{{cookiecutter.project_slug}}/README.md b/{{cookiecutter.project_slug}}/README.md index e5f8c0d..ba96c99 100644 --- a/{{cookiecutter.project_slug}}/README.md +++ b/{{cookiecutter.project_slug}}/README.md @@ -143,4 +143,3 @@ The web documentation can then be browsed by opening `doc/html/index.html` in yo ## Acknowledgments This repository was set up using the [SSC Cookiecutter for C++ Packages](https://github.com/ssciwr/cookiecutter-cpp-project). - diff --git a/{{cookiecutter.project_slug}}/app/{{cookiecutter.project_slug}}_app.cpp b/{{cookiecutter.project_slug}}/app/{{cookiecutter.project_slug}}_app.cpp index ec9f7c2..94ca074 100644 --- a/{{cookiecutter.project_slug}}/app/{{cookiecutter.project_slug}}_app.cpp +++ b/{{cookiecutter.project_slug}}/app/{{cookiecutter.project_slug}}_app.cpp @@ -1,7 +1,8 @@ #include "{{ cookiecutter.project_slug }}/{{ cookiecutter.project_slug }}.hpp" #include -int main(){ +int main() +{ int result = {{ cookiecutter.project_slug.replace("-", "") }}::add_one(1); std::cout << "1 + 1 = " << result << std::endl; -} \ No newline at end of file +} diff --git a/{{cookiecutter.project_slug}}/doc/CMakeLists.txt b/{{cookiecutter.project_slug}}/doc/CMakeLists.txt index 7793e77..e103b68 100644 --- a/{{cookiecutter.project_slug}}/doc/CMakeLists.txt +++ b/{{cookiecutter.project_slug}}/doc/CMakeLists.txt @@ -5,22 +5,22 @@ set(DOXYGEN_SHORT_NAMES YES) {% if cookiecutter.readthedocs == "Yes" -%} set(DOXYGEN_GENERATE_XML YES) {%- endif %} -doxygen_add_docs(doxygen - ${CMAKE_SOURCE_DIR} +doxygen_add_docs( + doxygen ${CMAKE_SOURCE_DIR} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - COMMENT Building doxygen documentation... -) + COMMENT Building doxygen documentation...) + {% if cookiecutter.readthedocs == "Yes" -%} -add_custom_target(sphinx-doc - COMMAND - sphinx-build -b html - -Dbreathe_projects.{{ cookiecutter.project_slug }}="${CMAKE_CURRENT_BINARY_DIR}/xml" - -c ${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_CURRENT_BINARY_DIR}/sphinx - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - COMMENT "Generating documentation with Sphinx..." - ) +add_custom_target( + sphinx-doc + COMMAND + sphinx-build -b html + -Dbreathe_projects.{{ cookiecutter.project_slug }}="${CMAKE_CURRENT_BINARY_DIR}/xml" + -c ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_CURRENT_BINARY_DIR}/sphinx + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMENT "Generating documentation with Sphinx...") + add_dependencies(sphinx-doc doxygen) -{%- endif %} -{%- endif -%} \ No newline at end of file +{%- endif %}{%- endif -%} \ No newline at end of file diff --git a/{{cookiecutter.project_slug}}/doc/conf.py b/{{cookiecutter.project_slug}}/doc/conf.py index da38342..d39e753 100644 --- a/{{cookiecutter.project_slug}}/doc/conf.py +++ b/{{cookiecutter.project_slug}}/doc/conf.py @@ -46,8 +46,7 @@ # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. -# -html_theme = 'sphinx_rtd_theme' +html_theme = "sphinx_rtd_theme" # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, @@ -60,13 +59,15 @@ breathe_default_project = "{{ cookiecutter.project_slug }}" # Check if we're running on Read the Docs' servers -read_the_docs_build = os.environ.get('READTHEDOCS', None) == 'True' +read_the_docs_build = os.environ.get('READTHEDOCS', None) == "True" # Implement build logic on RTD servers if read_the_docs_build: cwd = os.getcwd() os.makedirs("build-cmake", exist_ok=True) builddir = os.path.join(cwd, "build-cmake") - subprocess.check_call("cmake -DBUILD_DOCS=ON -DBUILD_TESTING=OFF {% if cookiecutter.python_bindings == 'Yes' %}-DBUILD_PYTHON=OFF{% endif %} ../..".split(), cwd=builddir) + subprocess.check_call( + "cmake -DBUILD_DOCS=ON -DBUILD_TESTING=OFF {% if cookiecutter.python_bindings == 'Yes' %}-DBUILD_PYTHON=OFF{% endif %} ../..".split(), cwd=builddir + ) subprocess.check_call("cmake --build . --target doxygen".split(), cwd=builddir) breathe_projects["{{ cookiecutter.project_slug }}"] = os.path.join(builddir, "doc", "xml") diff --git a/{{cookiecutter.project_slug}}/include/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}.hpp b/{{cookiecutter.project_slug}}/include/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}.hpp index f5ffb89..694d442 100644 --- a/{{cookiecutter.project_slug}}/include/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}.hpp +++ b/{{cookiecutter.project_slug}}/include/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}.hpp @@ -13,7 +13,9 @@ namespace {{ cookiecutter.project_slug.replace("-", "") }} { * @returns the successor of x */ {%- endif %} -{% if cookiecutter.header_only == "Yes" %}inline {% endif %}int add_one(int x){% if cookiecutter.header_only == "No" %};{%- else %}{ +{% if cookiecutter.header_only == "Yes" %}inline {% endif %}int +add_one(int x){% if cookiecutter.header_only == "No" %};{%- else %} +{ return x + 1; } {%- endif %} diff --git a/{{cookiecutter.project_slug}}/python/{{cookiecutter.__python_module}}/__init__.py b/{{cookiecutter.project_slug}}/python/{{cookiecutter.__python_module}}/__init__.py index 65bff69..91246f4 100644 --- a/{{cookiecutter.project_slug}}/python/{{cookiecutter.__python_module}}/__init__.py +++ b/{{cookiecutter.project_slug}}/python/{{cookiecutter.__python_module}}/__init__.py @@ -2,6 +2,7 @@ # Export the version given in project metadata from importlib import metadata + __version__ = metadata.version(__package__) del metadata diff --git a/{{cookiecutter.project_slug}}/requirements-dev.txt b/{{cookiecutter.project_slug}}/requirements-dev.txt index 97c2a37..38d55b1 100644 --- a/{{cookiecutter.project_slug}}/requirements-dev.txt +++ b/{{cookiecutter.project_slug}}/requirements-dev.txt @@ -1,4 +1,4 @@ pytest {% if cookiecutter.codecovio == "Yes" %} pytest-cov -{% endif %} +{% endif %} \ No newline at end of file diff --git a/{{cookiecutter.project_slug}}/src/{{cookiecutter.project_slug}}.cpp b/{{cookiecutter.project_slug}}/src/{{cookiecutter.project_slug}}.cpp index 1272cc8..b7c9256 100644 --- a/{{cookiecutter.project_slug}}/src/{{cookiecutter.project_slug}}.cpp +++ b/{{cookiecutter.project_slug}}/src/{{cookiecutter.project_slug}}.cpp @@ -2,8 +2,9 @@ namespace {{ cookiecutter.project_slug.replace("-", "") }} { -int add_one(int x){ +int add_one(int x) +{ return x + 1; } -} // namespace {{ cookiecutter.project_slug.replace("-", "") }} \ No newline at end of file +} // namespace {{ cookiecutter.project_slug.replace("-", "") }} diff --git a/{{cookiecutter.project_slug}}/tests/{{cookiecutter.project_slug}}_t.cpp b/{{cookiecutter.project_slug}}/tests/{{cookiecutter.project_slug}}_t.cpp index b43ee62..06444c0 100644 --- a/{{cookiecutter.project_slug}}/tests/{{cookiecutter.project_slug}}_t.cpp +++ b/{{cookiecutter.project_slug}}/tests/{{cookiecutter.project_slug}}_t.cpp @@ -7,4 +7,4 @@ TEST_CASE( "add_one", "[adder]" ){ REQUIRE(add_one(0) == 1); REQUIRE(add_one(123) == 124); REQUIRE(add_one(-1) == 0); -} \ No newline at end of file +} From 6f1ee1a854d5887c8fb963030834e9ba1f842b27 Mon Sep 17 00:00:00 2001 From: Thomas Isensee <26852629+thomasisensee@users.noreply.github.com> Date: Mon, 2 Feb 2026 13:45:03 +0100 Subject: [PATCH 7/9] Build tests in CI jobs, default is off --- {{cookiecutter.project_slug}}/.github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/{{cookiecutter.project_slug}}/.github/workflows/ci.yml b/{{cookiecutter.project_slug}}/.github/workflows/ci.yml index c6c8309..cd67422 100644 --- a/{{cookiecutter.project_slug}}/.github/workflows/ci.yml +++ b/{{cookiecutter.project_slug}}/.github/workflows/ci.yml @@ -36,7 +36,7 @@ jobs: - name: Configure cmake shell: bash working-directory: ${{ "{{ github.workspace }}" }}/build - run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=Debug -D{{ cookiecutter.project_slug }}_BUILD_DOCS=OFF -D{{ cookiecutter.project_slug }}_BUILD_PYTHON=OFF + run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=Debug -D{{ cookiecutter.project_slug }}_BUILD_TESTING=ON -D{{ cookiecutter.project_slug }}_BUILD_DOCS=OFF -D{{ cookiecutter.project_slug }}_BUILD_PYTHON=OFF - name: Build shell: bash @@ -115,7 +115,7 @@ jobs: shell: bash working-directory: ${{ "{{ github.workspace }}" }}/build run: | - cmake $GITHUB_WORKSPACE -DCMAKE_CXX_FLAGS="--coverage" -D{{ cookiecutter.project_slug }}_BUILD_DOCS=OFF + cmake $GITHUB_WORKSPACE -DCMAKE_CXX_FLAGS="--coverage" -D{{ cookiecutter.project_slug }}_BUILD_TESTING=ON -D{{ cookiecutter.project_slug }}_BUILD_DOCS=OFF - name: Build shell: bash From 2599021cbb6546ece39e92b022ec05e47a4e68b3 Mon Sep 17 00:00:00 2001 From: Thomas Isensee <26852629+thomasisensee@users.noreply.github.com> Date: Mon, 2 Feb 2026 13:47:42 +0100 Subject: [PATCH 8/9] Push to C++ project template's main branch upon pushes to main in this repository (cookiecutter) --- .github/workflows/sync-template.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/sync-template.yml b/.github/workflows/sync-template.yml index 9c5de87..43ba873 100644 --- a/.github/workflows/sync-template.yml +++ b/.github/workflows/sync-template.yml @@ -3,7 +3,7 @@ name: Sync template repository on: push: branches: - - sync-project-template + - main workflow_dispatch: jobs: @@ -35,7 +35,7 @@ jobs: uses: actions/checkout@v6 with: repository: ssciwr/cpp-project-template - ref: sync-test + ref: main path: target-repository ssh-key: ${{ secrets.SSCIWR_CPP_PROJECT_TEMPLATE_DEPLOY_KEY }} @@ -52,4 +52,4 @@ jobs: git commit -m "Sync from ssciwr/cookiecutter-cpp-project" || echo "No changes" echo "Pushing changes to target repository..." - git push origin sync-test + git push origin main From c37ec8b1d7ba9878cc9cafab690926c9e9fcf8c8 Mon Sep 17 00:00:00 2001 From: Thomas Isensee <26852629+thomasisensee@users.noreply.github.com> Date: Mon, 2 Feb 2026 13:49:35 +0100 Subject: [PATCH 9/9] Bump ssciwr/doxygen-install to v2 --- .github/workflows/ci.yml | 2 +- {{cookiecutter.project_slug}}/.github/workflows/ci.yml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2839552..a6356c9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -37,7 +37,7 @@ jobs: run: | python -m pip install -r requirements-dev.txt - - uses: ssciwr/doxygen-install@v1 + - uses: ssciwr/doxygen-install@v2 - name: Set up git identity run: | diff --git a/{{cookiecutter.project_slug}}/.github/workflows/ci.yml b/{{cookiecutter.project_slug}}/.github/workflows/ci.yml index cd67422..f700cdc 100644 --- a/{{cookiecutter.project_slug}}/.github/workflows/ci.yml +++ b/{{cookiecutter.project_slug}}/.github/workflows/ci.yml @@ -28,7 +28,7 @@ jobs: {%- endif %} {% if cookiecutter.doxygen == "Yes" %} - name: Install Doxygen - uses: ssciwr/doxygen-install@v1 + uses: ssciwr/doxygen-install@v2 {% endif %} - name: Make build directory run: cmake -E make_directory ${{ "{{ github.workspace }}" }}/build @@ -68,7 +68,7 @@ jobs: python-version: "3.14" {% if cookiecutter.doxygen == "Yes" %} - name: Install Doxygen - uses: ssciwr/doxygen-install@v1 + uses: ssciwr/doxygen-install@v2 {% endif %} - name: Run Python tests shell: bash @@ -95,7 +95,7 @@ jobs: sudo apt-get install -y lcov {% if cookiecutter.doxygen == "Yes" %} - name: Install Doxygen - uses: ssciwr/doxygen-install@v1 + uses: ssciwr/doxygen-install@v2 {% endif %} {% if cookiecutter.python_bindings == "Yes" %} - name: Install Python package editable