소스 검색

Document the SDL-specific custom ci commands

Anonymous Maarten 7 달 전
부모
커밋
c57cf716af
3개의 변경된 파일24개의 추가작업 그리고 4개의 파일을 삭제
  1. 7 4
      .github/workflows/create-test-plan.py
  2. 7 0
      .github/workflows/generic.yml
  3. 10 0
      docs/README-contributing.md

+ 7 - 4
.github/workflows/create-test-plan.py

@@ -158,6 +158,7 @@ class SharedLibType(Enum):
 @dataclasses.dataclass(slots=True)
 class JobDetails:
     name: str
+    key: str
     os: str
     platform: str
     artifact: str
@@ -221,6 +222,7 @@ class JobDetails:
     def to_workflow(self, enable_artifacts: bool) -> dict[str, str|bool]:
         data = {
             "name": self.name,
+            "key": self.key,
             "os": self.os,
             "container": self.container if self.container else "",
             "platform": self.platform,
@@ -293,9 +295,10 @@ def my_shlex_join(s):
     return " ".join(escape(s))
 
 
-def spec_to_job(spec: JobSpec, trackmem_symbol_names: bool) -> JobDetails:
+def spec_to_job(spec: JobSpec, key: str, trackmem_symbol_names: bool) -> JobDetails:
     job = JobDetails(
         name=spec.name,
+        key=key,
         os=spec.os.value,
         artifact=spec.artifact or "",
         container=spec.container or "",
@@ -723,9 +726,9 @@ def spec_to_job(spec: JobSpec, trackmem_symbol_names: bool) -> JobDetails:
     return job
 
 
-def spec_to_platform(spec: JobSpec, enable_artifacts: bool, trackmem_symbol_names: bool) -> dict[str, str|bool]:
+def spec_to_platform(spec: JobSpec, key: str, enable_artifacts: bool, trackmem_symbol_names: bool) -> dict[str, str|bool]:
     logger.info("spec=%r", spec)
-    job = spec_to_job(spec, trackmem_symbol_names=trackmem_symbol_names)
+    job = spec_to_job(spec, key=key, trackmem_symbol_names=trackmem_symbol_names)
     logger.info("job=%r", job)
     platform = job.to_workflow(enable_artifacts=enable_artifacts)
     logger.info("platform=%r", platform)
@@ -773,7 +776,7 @@ def main():
 
     all_level_platforms = {}
 
-    all_platforms = {k: spec_to_platform(spec, enable_artifacts=args.enable_artifacts, trackmem_symbol_names=args.trackmem_symbol_names) for k, spec in JOB_SPECS.items()}
+    all_platforms = {key: spec_to_platform(spec, key=key, enable_artifacts=args.enable_artifacts, trackmem_symbol_names=args.trackmem_symbol_names) for key, spec in JOB_SPECS.items()}
 
     for level_i, level_keys in enumerate(all_level_keys, 1):
         level_key = f"level{level_i}"

+ 7 - 0
.github/workflows/generic.yml

@@ -34,6 +34,13 @@ jobs:
             ${{ (!matrix.platform.msys2-no-perl && format('{0}-perl', matrix.platform.msys2-env)) || '' }}
             ${{ matrix.platform.msys2-env }}-pkg-config
             ${{ matrix.platform.msys2-env }}-clang-tools-extra
+      - name: 'About this job'
+        run: |
+          echo "key=${{ matrix.platform.key }}"
+          echo "name=${{ matrix.platform.name }}"
+          echo "os=${{ matrix.platform.os }}"
+          echo ""
+          echo "Add [sdl-ci-filter ${{ matrix.platform.key }}] to your commit message to reduce the number of jobs."
       - uses: actions/checkout@v4
       - name: 'Set up ninja'
         if: ${{ matrix.platform.setup-ninja }}

+ 10 - 0
docs/README-contributing.md

@@ -12,6 +12,7 @@ We appreciate your interest in contributing to SDL, this document will describe
     -   [Following the style guide](#following-the-style-guide)
     -   [Running the tests](#running-the-tests)
     -   [Opening a pull request](#opening-a-pull-request)
+    -   [Continuous integration](#continuous-integration)
 -   [Contributing to the documentation](#contributing-to-the-documentation)
     -   [Editing a function documentation](#editing-a-function-documentation)
     -   [Editing the wiki](#editing-the-wiki)
@@ -86,6 +87,15 @@ Tests allow you to verify if your changes did not break any behaviour, here are
 -   Fill out the pull request template.
 -   If any changes are requested, you can add new commits to your fork and they will be automatically added to the pull request.
 
+### Continuous integration
+
+For each push and/or pull request, GitHub Actions will try to build SDL and the test suite on most supported platforms.
+
+Its behaviour can be influenced slightly by including SDL-specific tags in your commit message:
+- `[sdl-ci-filter GLOB]` limits the platforms for which to run ci.
+- `[sdl-ci-artifacts]` forces SDL artifacts, which can then be downloaded from the summary page.
+- `[sdl-ci-trackmem-symbol-names]` makes sure the final report generated by `--trackmem` contains symbol names.
+
 ## Contributing to the documentation
 
 ### Editing a function documentation