Skip to content

Commit e62d1e4

Browse files
committed
Rename image property of CI jobs to name
The `image` part didn't really make sense, especially since we started splitting CI jobs.
1 parent e4b6cce commit e62d1e4

2 files changed

Lines changed: 96 additions & 84 deletions

File tree

‎src/ci/github-actions/ci.py‎

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,18 @@
2727
Job=Dict[str, Any]
2828

2929

30-
defname_jobs(jobs: List[Dict], prefix: str) ->List[Job]:
30+
defadd_job_properties(jobs: List[Dict], prefix: str) ->List[Job]:
3131
"""
32-
Add a `name` attribute to each job, based on its image and the given `prefix`.
32+
Modify the `name` attribute of each job, based on its base name and the given `prefix`.
33+
Add an `image` attribute to each job, base don its image.
3334
"""
35+
modified_jobs= []
3436
forjobinjobs:
35-
job["name"] =f"{prefix} - {job['image']}"
36-
returnjobs
37+
job=dict(job)
38+
job["image"] =get_job_image(job)
39+
job["name"] =f"{prefix} - {job['name']}"
40+
modified_jobs.append(job)
41+
returnmodified_jobs
3742

3843

3944
defadd_base_env(jobs: List[Job], environment: Dict[str, str]) ->List[Job]:
@@ -118,7 +123,7 @@ def find_run_type(ctx: GitHubCtx) -> Optional[WorkflowRunType]:
118123

119124
defcalculate_jobs(run_type: WorkflowRunType, job_data: Dict[str, Any]) ->List[Job]:
120125
ifisinstance(run_type, PRRunType):
121-
returnadd_base_env(name_jobs(job_data["pr"], "PR"), job_data["envs"]["pr"])
126+
returnadd_base_env(add_job_properties(job_data["pr"], "PR"), job_data["envs"]["pr"])
122127
elifisinstance(run_type, TryRunType):
123128
jobs=job_data["try"]
124129
custom_jobs=run_type.custom_jobs
@@ -132,7 +137,7 @@ def calculate_jobs(run_type: WorkflowRunType, job_data: Dict[str, Any]) -> List[
132137
jobs= []
133138
unknown_jobs= []
134139
forcustom_jobincustom_jobs:
135-
job= [jforjinjob_data["auto"] ifj["image"] ==custom_job]
140+
job= [jforjinjob_data["auto"] ifj["name"] ==custom_job]
136141
ifnotjob:
137142
unknown_jobs.append(custom_job)
138143
continue
@@ -142,10 +147,10 @@ def calculate_jobs(run_type: WorkflowRunType, job_data: Dict[str, Any]) -> List[
142147
f"Custom job(s) `{unknown_jobs}` not found in auto jobs"
143148
)
144149

145-
returnadd_base_env(name_jobs(jobs, "try"), job_data["envs"]["try"])
150+
returnadd_base_env(add_job_properties(jobs, "try"), job_data["envs"]["try"])
146151
elifisinstance(run_type, AutoRunType):
147152
returnadd_base_env(
148-
name_jobs(job_data["auto"], "auto"), job_data["envs"]["auto"]
153+
add_job_properties(job_data["auto"], "auto"), job_data["envs"]["auto"]
149154
)
150155

151156
return []
@@ -183,27 +188,34 @@ def format_run_type(run_type: WorkflowRunType) -> str:
183188
raiseAssertionError()
184189

185190

191+
defget_job_image(job) ->str:
192+
"""
193+
By default, the Docker image of a job is based on its name.
194+
However, it can be overridden by its IMAGE environment variable.
195+
"""
196+
returnjob.get("env", {}).get("IMAGE", job["name"])
197+
198+
186199
defrun_workflow_locally(job_data: Dict[str, Any], job_name: str):
187200
DOCKER_DIR=Path(__file__).absolute().parent.parent/"docker"
188201

189202
jobs=list(job_data["auto"])
190203
jobs.extend(job_data["pr"])
191204

192-
jobs= [jobforjobinjobsifjob.get("image") ==job_name]
205+
jobs= [jobforjobinjobsifjob.get("name") ==job_name]
193206
iflen(jobs) ==0:
194207
raiseException(f"Job `{job_name}` not found")
195208
job=jobs[0]
196209
if"ubuntu"notinjob["os"]:
197210
raiseException("Only Linux jobs can be executed locally")
198211

199-
image=job.get("env", {}).get("IMAGE", job["image"])
200212
custom_env= {}
201213
custom_env["DEPLOY"] ="1"
202214
custom_env.update({k: str(v) for (k, v) injob.get("env", {}).items()})
203215

204216
args= [
205217
str(DOCKER_DIR/"run.sh"),
206-
image
218+
get_job_image(job)
207219
]
208220
env_formatted= [f"{k}={v}"for (k, v) insorted(custom_env.items())]
209221
print(f"Executing `{' '.join(env_formatted)}{' '.join(args)}`")

0 commit comments

Comments
 (0)