mirror of
https://github.com/libsdl-org/SDL.git
synced 2025-05-25 22:19: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'
|
- name: 'Create plan'
|
||||||
id: plan
|
id: plan
|
||||||
run: |
|
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 \
|
python .github/workflows/create-test-plan.py \
|
||||||
--github-variable-prefix platforms \
|
--github-variable-prefix platforms \
|
||||||
--github-ci \
|
--github-ci \
|
||||||
--verbose
|
--verbose \
|
||||||
|
--commit-message-file /tmp/commit_message.txt
|
||||||
level1:
|
level1:
|
||||||
needs: [controller]
|
needs: [controller]
|
||||||
uses: './.github/workflows/generic.yml'
|
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
|
#!/usr/bin/env python
|
||||||
import argparse
|
import argparse
|
||||||
import dataclasses
|
import dataclasses
|
||||||
|
import fnmatch
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
|
import re
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
@ -595,6 +597,7 @@ def main():
|
||||||
parser.add_argument("--github-variable-prefix", default="platforms")
|
parser.add_argument("--github-variable-prefix", default="platforms")
|
||||||
parser.add_argument("--github-ci", action="store_true")
|
parser.add_argument("--github-ci", action="store_true")
|
||||||
parser.add_argument("--verbose", action="store_true")
|
parser.add_argument("--verbose", action="store_true")
|
||||||
|
parser.add_argument("--commit-message-file")
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
logging.basicConfig(level=logging.INFO if args.verbose else logging.WARNING)
|
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 = {}
|
all_level_platforms = {}
|
||||||
|
|
||||||
for level_i, level_keys in enumerate(all_level_keys, 1):
|
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)
|
all_level_platforms[level_key] = specs_to_plaform(level_specs)
|
||||||
logger.info("=" * 80)
|
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:")
|
logger.info("Remaining:")
|
||||||
remaining_specs = tuple(JOB_SPECS[key] for key in remaining_keys)
|
remaining_specs = tuple(JOB_SPECS[key] for key in remaining_keys)
|
||||||
all_level_platforms["others"] = specs_to_plaform(remaining_specs)
|
all_level_platforms["others"] = specs_to_plaform(remaining_specs)
|
||||||
|
@ -639,4 +664,3 @@ def main():
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
raise SystemExit(main())
|
raise SystemExit(main())
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue