ci: only upload artifacts in libsdl-org GitHub organization

This commit is contained in:
Anonymous Maarten 2024-07-30 13:58:38 +02:00
parent afabccd4d0
commit 1ef3263ad4
3 changed files with 29 additions and 25 deletions

View File

@ -34,6 +34,7 @@ jobs:
--github-variable-prefix platforms \
--github-ci \
--verbose \
${{ github.repository_owner != 'libsdl-org' && '--no-artifact' }} \
--commit-message-file /tmp/commit_message.txt
level1:
needs: [controller]

View File

@ -198,13 +198,14 @@ class JobDetails:
cpactions_install_cmd: str = ""
setup_vita_gles_type: str = ""
def to_workflow(self) -> dict[str, str|bool]:
def to_workflow(self, enable_artifacts) -> dict[str, str|bool]:
data = {
"name": self.name,
"os": self.os,
"container": self.container if self.container else "",
"platform": self.platform,
"artifact": self.artifact,
"enable-artifacts": enable_artifacts,
"shell": self.shell,
"msys2-msystem": self.msys2_msystem,
"msys2-env": self.msys2_env,
@ -504,7 +505,7 @@ def spec_to_job(spec: JobSpec) -> JobDetails:
"-DSDL_ARMSIMD=ON",
))
# Fix vita.toolchain.cmake (https://github.com/vitasdk/vita-toolchain/pull/253)
job.source_cmd = "sed -i -E 's/set\( PKG_CONFIG_EXECUTABLE \"\$\{VITASDK}\/bin\/arm-vita-eabi-pkg-config\" )/set( PKG_CONFIG_EXECUTABLE \"${VITASDK}\/bin\/arm-vita-eabi-pkg-config\" CACHE PATH \"Path of pkg-config executable\" )/' ${VITASDK}/share/vita.toolchain.cmake"
job.source_cmd = r"""sed -i -E "s#set\\( PKG_CONFIG_EXECUTABLE \"\\$\\{VITASDK}/bin/arm-vita-eabi-pkg-config\" \\)#set\\( PKG_CONFIG_EXECUTABLE \"${VITASDK}/bin/arm-vita-eabi-pkg-config\" CACHE PATH \"Path of pkg-config executable\" \\)#" ${VITASDK}/share/vita.toolchain.cmake"""
job.clang_tidy = False
job.run_tests = False
job.shared = False
@ -613,16 +614,13 @@ def spec_to_job(spec: JobSpec) -> JobDetails:
return job
def specs_to_plaform(specs: tuple[JobSpec, ...]) -> list[dict[str, str|bool]]:
result = []
for spec in specs:
logger.info("spec=%r", spec)
job = spec_to_job(spec)
logger.info("job=%r", job)
platform = job.to_workflow()
result.append(platform)
logger.info("platform=%r", platform)
return result
def spec_to_platform(spec: JobSpec, enable_artifacts: bool) -> dict[str, str|bool]:
logger.info("spec=%r", spec)
job = spec_to_job(spec)
logger.info("job=%r", job)
platform = job.to_workflow(enable_artifacts=enable_artifacts)
logger.info("platform=%r", platform)
return platform
def main():
@ -631,6 +629,7 @@ def main():
parser.add_argument("--github-ci", action="store_true")
parser.add_argument("--verbose", action="store_true")
parser.add_argument("--commit-message-file")
parser.add_argument("--no-artifact", dest="enable_artifacts", action="store_false")
args = parser.parse_args()
logging.basicConfig(level=logging.INFO if args.verbose else logging.WARNING)
@ -651,6 +650,9 @@ def main():
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 re.search(r"\[sdl-ci-artifacts?]", commit_message, flags=re.M):
args.enable_artifacts = True
if not filters:
filters.append("*")
@ -658,13 +660,15 @@ def main():
all_level_platforms = {}
all_platforms = {k: spec_to_platform(spec, enable_artifacts=args.enable_artifacts) for k, spec in JOB_SPECS.items()}
for level_i, level_keys in enumerate(all_level_keys, 1):
level_key = f"level{level_i}"
logger.info("Level %d: keys=%r", level_i, level_keys)
assert all(k in remaining_keys for k in level_keys)
level_specs = tuple(JOB_SPECS[key] for key in level_keys)
level_platforms = tuple(all_platforms[key] for key in level_keys)
remaining_keys.difference_update(level_keys)
all_level_platforms[level_key] = specs_to_plaform(level_specs)
all_level_platforms[level_key] = level_platforms
logger.info("=" * 80)
logger.info("Keys before filter: %r", remaining_keys)
@ -677,9 +681,8 @@ def main():
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)
logger.info("Remaining: %r", remaining_keys)
all_level_platforms["others"] = tuple(all_platforms[key] for key in remaining_keys)
if args.github_ci:
for level, platforms in all_level_platforms.items():

View File

@ -273,13 +273,6 @@ jobs:
rm -rf build/dist/_CPack_Packages
rm -rf build/CMakeFiles
rm -rf build/docs
- name: "Upload Android test apk's"
uses: actions/upload-artifact@v4
if: ${{ always() && matrix.platform.artifact != '' && steps.apks.outcome == 'success' }}
with:
if-no-files-found: error
name: '${{ matrix.platform.artifact }}-apks'
path: build/test/*.apk
- name: Add msbuild to PATH
id: setup-msbuild
if: ${{ matrix.platform.msvc-project != '' }}
@ -322,7 +315,7 @@ jobs:
xcodebuild -project Xcode/SDL/SDL.xcodeproj -target SDL3 -configuration Release -sdk ${{ matrix.platform.xcode-sdk }} clean build
- name: 'Upload binary package'
uses: actions/upload-artifact@v4
if: ${{ always() && matrix.platform.artifact != '' && (steps.package.outcome == 'success' || steps.cpactions.outcome == 'success') }}
if: ${{ always() && matrix.platform.artifact != '' && (steps.package.outcome == 'success' || steps.cpactions.outcome == 'success') && (matrix.platform.enable-artifacts || steps.tests.outcome == 'failure') }}
with:
if-no-files-found: error
name: '${{ matrix.platform.artifact }}'
@ -334,3 +327,10 @@ jobs:
if-no-files-found: ignore
name: '${{ matrix.platform.artifact }}-minidumps'
path: build/**/*.dmp
- name: "Upload Android test apk's"
uses: actions/upload-artifact@v4
if: ${{ matrix.platform.enable-artifacts && always() && matrix.platform.artifact != '' && steps.apks.outcome == 'success' }}
with:
if-no-files-found: error
name: '${{ matrix.platform.artifact }}-apks'
path: build/test/*.apk