Browse Source

ci: only upload artifacts in libsdl-org GitHub organization

Anonymous Maarten 8 months ago
parent
commit
1ef3263ad4
3 changed files with 29 additions and 25 deletions
  1. 1 0
      .github/workflows/build.yml
  2. 20 17
      .github/workflows/create-test-plan.py
  3. 8 8
      .github/workflows/generic.yml

+ 1 - 0
.github/workflows/build.yml

@@ -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]

+ 20 - 17
.github/workflows/create-test-plan.py

@@ -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():

+ 8 - 8
.github/workflows/generic.yml

@@ -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