Skip to content

Commit 38c5bcb

Browse files
committed
feat: add select-model flag to cicd bot
1 parent afa8214 commit 38c5bcb

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

sqlmesh/integrations/github/cicd/command.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import logging
44
import traceback
5+
import typing as t
56

67
import click
78

@@ -25,16 +26,24 @@
2526
envvar="GITHUB_TOKEN",
2627
help="The Github Token to be used. Pass in `${{ secrets.GITHUB_TOKEN }}` if you want to use the one created by Github actions",
2728
)
29+
@click.option(
30+
"--select-model",
31+
"-m",
32+
type=str,
33+
multiple=True,
34+
help="Specify one or more models to data diff. Use wildcards to diff multiple models. Ex: '*' (all models with applied plan diffs), 'demo.model+' (this and downstream models), 'git:feature_branch' (models with direct modifications in this branch only)",
35+
)
2836
@click.pass_context
29-
def github(ctx: click.Context, token: str) -> None:
37+
def github(ctx: click.Context, **kwargs: t.Any) -> None:
3038
"""Github Action CI/CD Bot. See https://sqlmesh.readthedocs.io/en/stable/integrations/github/ for details"""
3139
# set a larger width because if none is specified, it auto-detects 80 characters when running in GitHub Actions
3240
# which can result in surprise newlines when outputting dates to backfill
3341
set_console(MarkdownConsole(width=1000, warning_capture_only=True, error_capture_only=True))
3442
ctx.obj["github"] = GithubController(
3543
paths=ctx.obj["paths"],
36-
token=token,
44+
token=kwargs.pop("token"),
3745
config=ctx.obj["config"],
46+
select_models=kwargs.pop("select_model") or None,
3847
)
3948

4049

sqlmesh/integrations/github/cicd/controller.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,7 @@ def __init__(
291291
event: t.Optional[GithubEvent] = None,
292292
client: t.Optional[Github] = None,
293293
context: t.Optional[Context] = None,
294+
select_models: t.Optional[t.Collection[str]] = None,
294295
) -> None:
295296
from github import Github
296297

@@ -301,6 +302,7 @@ def __init__(
301302
self._token = token
302303
self._event = event or GithubEvent.from_env()
303304
logger.debug(f"Github event: {json.dumps(self._event.payload)}")
305+
self._select_models = select_models
304306
self._pr_plan_builder: t.Optional[PlanBuilder] = None
305307
self._prod_plan_builder: t.Optional[PlanBuilder] = None
306308
self._prod_plan_with_gaps_builder: t.Optional[PlanBuilder] = None
@@ -407,6 +409,7 @@ def pr_plan(self) -> Plan:
407409
skip_backfill=self.bot_config.skip_pr_backfill,
408410
include_unmodified=self.bot_config.pr_include_unmodified,
409411
forward_only=self.forward_only_plan,
412+
select_models=self._select_models,
410413
)
411414
assert self._pr_plan_builder
412415
return self._pr_plan_builder.build()
@@ -437,6 +440,7 @@ def prod_plan(self) -> Plan:
437440
categorizer_config=self.bot_config.auto_categorize_changes,
438441
run=self.bot_config.run_on_deploy_to_prod,
439442
forward_only=self.forward_only_plan,
443+
select_models=self._select_models,
440444
)
441445
assert self._prod_plan_builder
442446
return self._prod_plan_builder.build()
@@ -454,6 +458,7 @@ def prod_plan_with_gaps(self) -> Plan:
454458
skip_linter=True,
455459
run=self.bot_config.run_on_deploy_to_prod,
456460
forward_only=self.forward_only_plan,
461+
select_models=self._select_models,
457462
)
458463
assert self._prod_plan_with_gaps_builder
459464
return self._prod_plan_with_gaps_builder.build()

0 commit comments

Comments
 (0)