Skip jobs based on the active channel in Python
This commit is contained in:
parent
2a7fe14acd
commit
e25735908f
@ -17,6 +17,7 @@ from typing import List, Dict, Any, Optional
|
|||||||
|
|
||||||
import yaml
|
import yaml
|
||||||
|
|
||||||
|
CI_DIR = Path(__file__).absolute().parent.parent
|
||||||
JOBS_YAML_PATH = Path(__file__).absolute().parent / "jobs.yml"
|
JOBS_YAML_PATH = Path(__file__).absolute().parent / "jobs.yml"
|
||||||
|
|
||||||
Job = Dict[str, Any]
|
Job = Dict[str, Any]
|
||||||
@ -90,6 +91,13 @@ def calculate_jobs(job_type: JobType, job_data: Dict[str, Any]) -> List[Job]:
|
|||||||
return []
|
return []
|
||||||
|
|
||||||
|
|
||||||
|
def skip_jobs(jobs: List[Dict[str, Any]], channel: str) -> List[Job]:
|
||||||
|
"""
|
||||||
|
Skip CI jobs that are not supposed to be executed on the given `channel`.
|
||||||
|
"""
|
||||||
|
return [j for j in jobs if j.get("CI_ONLY_WHEN_CHANNEL", channel) == channel]
|
||||||
|
|
||||||
|
|
||||||
def get_github_ctx() -> GitHubCtx:
|
def get_github_ctx() -> GitHubCtx:
|
||||||
return GitHubCtx(
|
return GitHubCtx(
|
||||||
event_name=os.environ["GITHUB_EVENT_NAME"],
|
event_name=os.environ["GITHUB_EVENT_NAME"],
|
||||||
@ -109,9 +117,13 @@ if __name__ == "__main__":
|
|||||||
job_type = find_job_type(github_ctx)
|
job_type = find_job_type(github_ctx)
|
||||||
logging.info(f"Job type: {job_type}")
|
logging.info(f"Job type: {job_type}")
|
||||||
|
|
||||||
|
with open(CI_DIR / "channel") as f:
|
||||||
|
channel = f.read().strip()
|
||||||
|
|
||||||
jobs = []
|
jobs = []
|
||||||
if job_type is not None:
|
if job_type is not None:
|
||||||
jobs = calculate_jobs(job_type, data)
|
jobs = calculate_jobs(job_type, data)
|
||||||
|
jobs = skip_jobs(jobs, channel)
|
||||||
|
|
||||||
logging.info(f"Output:\n{yaml.dump(jobs, indent=4)}")
|
logging.info(f"Output:\n{yaml.dump(jobs, indent=4)}")
|
||||||
print(f"jobs={json.dumps(jobs)}")
|
print(f"jobs={json.dumps(jobs)}")
|
||||||
|
Loading…
Reference in New Issue
Block a user