Skip to content

Commit

Permalink
CI: fix auto builds and make sure that we always have at least a sing…
Browse files Browse the repository at this point in the history
…le CI job
  • Loading branch information
Kobzol committed May 5, 2024
1 parent bf8bcc4 commit b3e9060
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 9 deletions.
8 changes: 0 additions & 8 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -77,14 +77,6 @@ jobs:
matrix:
# Check the `calculate_matrix` job to see how is the matrix defined.
include: ${{ fromJSON(needs.calculate_matrix.outputs.jobs) }}
# GitHub Actions fails the workflow if an empty list of jobs is provided to
# the workflow, so we need to skip this job if nothing was produced by
# the Python script.
#
# Unfortunately checking whether a list is empty is not possible in a nice
# way due to GitHub Actions expressions limits.
# This hack is taken from https://github.com/ferrocene/ferrocene/blob/d43edc6b7697cf1719ec1c17c54904ab94825763/.github/workflows/release.yml#L75-L82
if: fromJSON(needs.calculate_matrix.outputs.jobs)[0] != null
steps:
- if: contains(matrix.os, 'windows')
uses: msys2/setup-msys2@v2.22.0
Expand Down
6 changes: 5 additions & 1 deletion src/ci/github-actions/calculate-job-matrix.py
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ def calculate_jobs(run_type: WorkflowRunType, job_data: Dict[str, Any]) -> List[
raise Exception(f"Custom job(s) `{unknown_jobs}` not found in auto jobs")

return add_base_env(name_jobs(jobs, "try"), job_data["envs"]["try"])
elif run_type is AutoRunType:
elif isinstance(run_type, AutoRunType):

This comment has been minimized.

Copy link
@Kobzol

Kobzol May 5, 2024

Author Contributor

This is what broke CI previously.

return add_base_env(name_jobs(job_data["auto"], "auto"), job_data["envs"]["auto"])

return []
Expand Down Expand Up @@ -192,6 +192,10 @@ def format_run_type(run_type: WorkflowRunType) -> str:
if run_type is not None:
jobs = calculate_jobs(run_type, data)
jobs = skip_jobs(jobs, channel)

if not jobs:
raise Exception("Scheduled job list is empty, this is an error")

run_type = format_run_type(run_type)

logging.info(f"Output:\n{yaml.dump(dict(jobs=jobs, run_type=run_type), indent=4)}")
Expand Down

0 comments on commit b3e9060

Please sign in to comment.