Skip to content

bemanproject/infra-workflows

Repository files navigation

Beman Project Reusable Github Actions Repository

This repository contains reusable GitHub Actions workflows workflow files, intended to help unify the GitHub Actions machinery used across Beman repositories for CI. It contains the following reusable workflows:

reusable-beman-build-and-test.yml

This is the main workflow file used for CI. It takes in a JSON build configuration like the following example:

{
  "gcc": [
    { "versions": ["15"],
      "tests": [
        { "cxxversions": ["c++26"],
          "tests": [
            { "stdlibs": ["libstdc++"],
              "tests": [
                "Debug.Default", "Release.Default", "Debug.TSan", "Debug.MaxSan",
                "Debug.Werror", "Debug.Dynamic"
              ]
            }
          ]
        },
        { "cxxversions": ["c++23", "c++20", "c++17"],
          "tests": [{ "stdlibs": ["libstdc++"], "tests": ["Release.Default"]}]
        }
      ]
    },
  "clang-p2996": [
    { "versions": ["trunk"],
      "tests": [
        { "cxxversions": ["c++26"],
          "tests": [{"stdlibs": ["libc++"], "tests": ["Release.-DCMAKE_CXX_FLAGS='-freflection-latest'"]}]
        }
      ]
    }
  ]
}

It then runs jobs corresponding to the specified set of configurations.

reusable-beman-create-issue-when-fault.yml

This workflow is intended to help with projects that invoke CI on a scheduled basis when those jobs fail. It creates a GitHub issue describing the CI failure.

reusable-beman-preset-test.yml

This workflow is intended to ensure that the CMake presets provided by beman/infra are valid and working for the given repository. It takes in a JSON build configuration like the following:

[
  {"preset": "gcc-debug", "image": "ghcr.io/bemanproject/infra-containers-gcc:latest"},
  {"preset": "gcc-release", "image": "ghcr.io/bemanproject/infra-containers-gcc:latest"},
  {"preset": "llvm-debug", "image": "ghcr.io/bemanproject/infra-containers-clang:latest"},
  {"preset": "llvm-release", "image": "ghcr.io/bemanproject/infra-containers-clang:latest"},
  {"preset": "appleclang-debug", "runner": "macos-latest"},
  {"preset": "appleclang-release", "runner": "macos-latest"},
  {"preset": "msvc-debug", "runner": "windows-latest"},
  {"preset": "msvc-release", "runner": "windows-latest"}
]

It then runs jobs corresponding to the specified set of presets.

reusable-beman-pre-commit.yml

This provides a workflow for running the pre-commit checks Beman libraries use, on pull requests and on push.

reusable-beman-submodule-check.yml

This provides a workflow for checking consistency of beman-submodule directories used by Beman repositories to deduplicate infrastructure.

About

Support CI for beman projects by providing reusable GitHub Actions workflow files

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •