mirror of
https://github.com/libsdl-org/SDL.git
synced 2025-05-25 14:09:10 +00:00
ci: limit jobs by using sdl-ci-filter
[sdl-ci-filter msvc-*]
This commit is contained in:
parent
eae6758abe
commit
12eb1f1497
2 changed files with 34 additions and 2 deletions
10
.github/workflows/build.yml
vendored
10
.github/workflows/build.yml
vendored
|
@ -23,10 +23,18 @@ jobs:
|
|||
- name: 'Create plan'
|
||||
id: plan
|
||||
run: |
|
||||
# Adding [sdl-ci-filter GLOB] to the commit message will limit the jobs
|
||||
# e.g. [sdl-ci-filter msvc-*]
|
||||
EOF=$(openssl rand -hex 32)
|
||||
cat >/tmp/commit_message.txt <<$EOF
|
||||
${{ github.event.head_commit.message }}
|
||||
$EOF
|
||||
|
||||
python .github/workflows/create-test-plan.py \
|
||||
--github-variable-prefix platforms \
|
||||
--github-ci \
|
||||
--verbose
|
||||
--verbose \
|
||||
--commit-message-file /tmp/commit_message.txt
|
||||
level1:
|
||||
needs: [controller]
|
||||
uses: './.github/workflows/generic.yml'
|
||||
|
|
26
.github/workflows/create-test-plan.py
vendored
26
.github/workflows/create-test-plan.py
vendored
|
@ -1,10 +1,12 @@
|
|||
#!/usr/bin/env python
|
||||
import argparse
|
||||
import dataclasses
|
||||
import fnmatch
|
||||
from enum import Enum
|
||||
import json
|
||||
import logging
|
||||
import os
|
||||
import re
|
||||
from typing import Optional
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
@ -595,6 +597,7 @@ def main():
|
|||
parser.add_argument("--github-variable-prefix", default="platforms")
|
||||
parser.add_argument("--github-ci", action="store_true")
|
||||
parser.add_argument("--verbose", action="store_true")
|
||||
parser.add_argument("--commit-message-file")
|
||||
args = parser.parse_args()
|
||||
|
||||
logging.basicConfig(level=logging.INFO if args.verbose else logging.WARNING)
|
||||
|
@ -608,6 +611,18 @@ def main():
|
|||
),
|
||||
)
|
||||
|
||||
filters = []
|
||||
if args.commit_message_file:
|
||||
with open(args.commit_message_file, "r") as f:
|
||||
commit_message = f.read()
|
||||
for m in re.finditer(r"\[sdl-ci-filter (.*)]", commit_message, flags=re.M):
|
||||
filters.append(m.group(1).strip(" \t\n\r\t'\""))
|
||||
|
||||
if not filters:
|
||||
filters.append("*")
|
||||
|
||||
logger.info("filters: %r", filters)
|
||||
|
||||
all_level_platforms = {}
|
||||
|
||||
for level_i, level_keys in enumerate(all_level_keys, 1):
|
||||
|
@ -619,6 +634,16 @@ def main():
|
|||
all_level_platforms[level_key] = specs_to_plaform(level_specs)
|
||||
logger.info("=" * 80)
|
||||
|
||||
logger.info("Keys before filter: %r", remaining_keys)
|
||||
|
||||
filtered_remaining_keys = set()
|
||||
for filter in filters:
|
||||
filtered_remaining_keys.update(fnmatch.filter(remaining_keys, filter))
|
||||
|
||||
logger.info("Keys after filter: %r", filtered_remaining_keys)
|
||||
|
||||
remaining_keys = filtered_remaining_keys
|
||||
|
||||
logger.info("Remaining:")
|
||||
remaining_specs = tuple(JOB_SPECS[key] for key in remaining_keys)
|
||||
all_level_platforms["others"] = specs_to_plaform(remaining_specs)
|
||||
|
@ -639,4 +664,3 @@ def main():
|
|||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue