Skip to content

Commit 0021c22

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 7a6283d commit 0021c22

File tree

2 files changed

+96
-84
lines changed

2 files changed

+96
-84
lines changed

src/ci/github-actions/ci.py

+23-11
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,18 @@
2727
Job = Dict[str, Any]
2828

2929

30-
def name_jobs(jobs: List[Dict], prefix: str) -> List[Job]:
30+
def add_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
for job in jobs:
35-
job["name"] = f"{prefix} - {job['image']}"
36-
return jobs
37+
job = dict(job)
38+
job["image"] = get_job_image(job)
39+
job["name"] = f"{prefix} - {job['name']}"
40+
modified_jobs.append(job)
41+
return modified_jobs
3742

3843

3944
def add_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
def calculate_jobs(run_type: WorkflowRunType, job_data: Dict[str, Any]) -> List[Job]:
120125
if isinstance(run_type, PRRunType):
121-
return add_base_env(name_jobs(job_data["pr"], "PR"), job_data["envs"]["pr"])
126+
return add_base_env(add_job_properties(job_data["pr"], "PR"), job_data["envs"]["pr"])
122127
elif isinstance(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
for custom_job in custom_jobs:
135-
job = [j for j in job_data["auto"] if j["image"] == custom_job]
140+
job = [j for j in job_data["auto"] if j["name"] == custom_job]
136141
if not job:
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-
return add_base_env(name_jobs(jobs, "try"), job_data["envs"]["try"])
150+
return add_base_env(add_job_properties(jobs, "try"), job_data["envs"]["try"])
146151
elif isinstance(run_type, AutoRunType):
147152
return add_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
raise AssertionError()
184189

185190

191+
def get_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+
return job.get("env", {}).get("IMAGE", job["name"])
197+
198+
186199
def run_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 = [job for job in jobs if job.get("image") == job_name]
205+
jobs = [job for job in jobs if job.get("name") == job_name]
193206
if len(jobs) == 0:
194207
raise Exception(f"Job `{job_name}` not found")
195208
job = jobs[0]
196209
if "ubuntu" not in job["os"]:
197210
raise Exception("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) in job.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) in sorted(custom_env.items())]
209221
print(f"Executing `{' '.join(env_formatted)} {' '.join(args)}`")

0 commit comments

Comments
 (0)