projen 0.79.4__py3-none-any.whl → 0.98.25__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
projen/github/__init__.py CHANGED
@@ -1,3 +1,6 @@
1
+ from pkgutil import extend_path
2
+ __path__ = extend_path(__path__, __name__)
3
+
1
4
  import abc
2
5
  import builtins
3
6
  import datetime
@@ -8,7 +11,22 @@ import jsii
8
11
  import publication
9
12
  import typing_extensions
10
13
 
11
- from typeguard import check_type
14
+ import typeguard
15
+ from importlib.metadata import version as _metadata_package_version
16
+ TYPEGUARD_MAJOR_VERSION = int(_metadata_package_version('typeguard').split('.')[0])
17
+
18
+ def check_type(argname: str, value: object, expected_type: typing.Any) -> typing.Any:
19
+ if TYPEGUARD_MAJOR_VERSION <= 2:
20
+ return typeguard.check_type(argname=argname, value=value, expected_type=expected_type) # type:ignore
21
+ else:
22
+ if isinstance(value, jsii._reference_map.InterfaceDynamicProxy): # pyright: ignore [reportAttributeAccessIssue]
23
+ pass
24
+ else:
25
+ if TYPEGUARD_MAJOR_VERSION == 3:
26
+ typeguard.config.collection_check_strategy = typeguard.CollectionCheckStrategy.ALL_ITEMS # type:ignore
27
+ typeguard.check_type(value=value, expected_type=expected_type) # type:ignore
28
+ else:
29
+ typeguard.check_type(value=value, expected_type=expected_type, collection_check_strategy=typeguard.CollectionCheckStrategy.ALL_ITEMS) # type:ignore
12
30
 
13
31
  from .._jsii import *
14
32
 
@@ -19,6 +37,7 @@ from .. import (
19
37
  Gitpod as _Gitpod_5d9b9d87,
20
38
  GroupRunnerOptions as _GroupRunnerOptions_148c59c1,
21
39
  IgnoreFileOptions as _IgnoreFileOptions_86c48b91,
40
+ JsonFile as _JsonFile_fa8164db,
22
41
  LoggerOptions as _LoggerOptions_eb0f6309,
23
42
  Project as _Project_57d89203,
24
43
  ProjectOptions as _ProjectOptions_0d5b93c6,
@@ -269,7 +288,13 @@ class AutoMerge(
269
288
  metaclass=jsii.JSIIMeta,
270
289
  jsii_type="projen.github.AutoMerge",
271
290
  ):
272
- '''(experimental) Sets up mergify to merging approved pull requests.
291
+ '''(experimental) Automatically merge Pull Requests using Mergify.
292
+
293
+ .. epigraph::
294
+
295
+ [!NOTE]
296
+ GitHub now natively provides the same features, so you don't need Mergify
297
+ anymore. See ``GitHubOptions.mergeQueue`` and ``MergeQueueOptions.autoQueue``.
273
298
 
274
299
  If ``buildJob`` is specified, the specified GitHub workflow job ID is required
275
300
  to succeed in order for the PR to be merged.
@@ -277,6 +302,7 @@ class AutoMerge(
277
302
  ``approvedReviews`` specified the number of code review approvals required for
278
303
  the PR to be merged.
279
304
 
305
+ :see: https://mergify.com/
280
306
  :stability: experimental
281
307
  '''
282
308
 
@@ -436,6 +462,219 @@ class AutoMergeOptions:
436
462
  )
437
463
 
438
464
 
465
+ class AutoQueue(
466
+ _Component_2b0ad27f,
467
+ metaclass=jsii.JSIIMeta,
468
+ jsii_type="projen.github.AutoQueue",
469
+ ):
470
+ '''(experimental) Automatically add pull requests to the merge queue PRs will be merged once they pass required checks.
471
+
472
+ :stability: experimental
473
+ '''
474
+
475
+ def __init__(
476
+ self,
477
+ scope: _constructs_77d1e7e8.IConstruct,
478
+ *,
479
+ allowed_usernames: typing.Optional[typing.Sequence[builtins.str]] = None,
480
+ labels: typing.Optional[typing.Sequence[builtins.str]] = None,
481
+ merge_method: typing.Optional["MergeMethod"] = None,
482
+ projen_credentials: typing.Optional["GithubCredentials"] = None,
483
+ runs_on: typing.Optional[typing.Sequence[builtins.str]] = None,
484
+ target_branches: typing.Optional[typing.Sequence[builtins.str]] = None,
485
+ ) -> None:
486
+ '''
487
+ :param scope: -
488
+ :param allowed_usernames: (experimental) Only pull requests authored by these Github usernames will have auto-queue enabled. Default: - pull requests from all users are eligible for auto-queuing
489
+ :param labels: (experimental) Only pull requests with one of this labels will have auto-queue enabled. Default: - all pull requests are eligible for auto-queueing
490
+ :param merge_method: (experimental) The method used to add the PR to the merge queue Any branch protection rules must allow this merge method. Default: MergeMethod.SQUASH
491
+ :param projen_credentials: (experimental) Choose a method for authenticating with GitHub to enable auto-queue on pull requests. The workflow cannot use a default github token. Queuing a PR with the default token will not trigger any merge queue workflows, which results in the PR just not getting merged at all. Default: - uses credentials from the GitHub component
492
+ :param runs_on: (experimental) Github Runner selection labels. Default: ["ubuntu-latest"]
493
+ :param target_branches: (experimental) The branch names that we should auto-queue for. This set of branches should be a subset of ``MergeQueueOptions.targetBranches``. Be sure not to enable ``autoQueue`` for branches that don't have branch rules with merge requirements set up, otherwise new PRs will be merged immediately after creating without a chance for review. Automatically merging a set of Stacked PRs If you set this to ``['main']`` you can automatically merge a set of Stacked PRs in the right order. It works like this: - Create PR #1 from branch ``a``, targeting ``main``. - Create PR #2 from branch ``b``, targeting branch ``a``. - Create PR #3 from branch ``c``, targeting branch ``b``. Initially, PR #1 will be set to auto-merge, PRs #2 and #3 will not. Once PR #1 passes all of its requirements it will merge. That will delete branch ``a`` and change the target branch of PR #2 change to ``main``. At that point, auto-queueing will switch on for PR #2 and it gets merged, etc. .. epigraph:: [!IMPORTANT] This component will never disable AutoMerge, only enable it. So if a PR is initially targeted at one of the branches in this list, and then subsequently retargeted to another branch, *AutoMerge is not automatically turned off*.
494
+
495
+ :stability: experimental
496
+ '''
497
+ if __debug__:
498
+ type_hints = typing.get_type_hints(_typecheckingstub__d1a61bf6b1de263219ae71fb7c610ca1482abce41103e188b62ebe38e0314b58)
499
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
500
+ options = AutoQueueOptions(
501
+ allowed_usernames=allowed_usernames,
502
+ labels=labels,
503
+ merge_method=merge_method,
504
+ projen_credentials=projen_credentials,
505
+ runs_on=runs_on,
506
+ target_branches=target_branches,
507
+ )
508
+
509
+ jsii.create(self.__class__, self, [scope, options])
510
+
511
+
512
+ @jsii.data_type(
513
+ jsii_type="projen.github.AutoQueueOptions",
514
+ jsii_struct_bases=[],
515
+ name_mapping={
516
+ "allowed_usernames": "allowedUsernames",
517
+ "labels": "labels",
518
+ "merge_method": "mergeMethod",
519
+ "projen_credentials": "projenCredentials",
520
+ "runs_on": "runsOn",
521
+ "target_branches": "targetBranches",
522
+ },
523
+ )
524
+ class AutoQueueOptions:
525
+ def __init__(
526
+ self,
527
+ *,
528
+ allowed_usernames: typing.Optional[typing.Sequence[builtins.str]] = None,
529
+ labels: typing.Optional[typing.Sequence[builtins.str]] = None,
530
+ merge_method: typing.Optional["MergeMethod"] = None,
531
+ projen_credentials: typing.Optional["GithubCredentials"] = None,
532
+ runs_on: typing.Optional[typing.Sequence[builtins.str]] = None,
533
+ target_branches: typing.Optional[typing.Sequence[builtins.str]] = None,
534
+ ) -> None:
535
+ '''(experimental) Options for 'AutoQueue'.
536
+
537
+ :param allowed_usernames: (experimental) Only pull requests authored by these Github usernames will have auto-queue enabled. Default: - pull requests from all users are eligible for auto-queuing
538
+ :param labels: (experimental) Only pull requests with one of this labels will have auto-queue enabled. Default: - all pull requests are eligible for auto-queueing
539
+ :param merge_method: (experimental) The method used to add the PR to the merge queue Any branch protection rules must allow this merge method. Default: MergeMethod.SQUASH
540
+ :param projen_credentials: (experimental) Choose a method for authenticating with GitHub to enable auto-queue on pull requests. The workflow cannot use a default github token. Queuing a PR with the default token will not trigger any merge queue workflows, which results in the PR just not getting merged at all. Default: - uses credentials from the GitHub component
541
+ :param runs_on: (experimental) Github Runner selection labels. Default: ["ubuntu-latest"]
542
+ :param target_branches: (experimental) The branch names that we should auto-queue for. This set of branches should be a subset of ``MergeQueueOptions.targetBranches``. Be sure not to enable ``autoQueue`` for branches that don't have branch rules with merge requirements set up, otherwise new PRs will be merged immediately after creating without a chance for review. Automatically merging a set of Stacked PRs If you set this to ``['main']`` you can automatically merge a set of Stacked PRs in the right order. It works like this: - Create PR #1 from branch ``a``, targeting ``main``. - Create PR #2 from branch ``b``, targeting branch ``a``. - Create PR #3 from branch ``c``, targeting branch ``b``. Initially, PR #1 will be set to auto-merge, PRs #2 and #3 will not. Once PR #1 passes all of its requirements it will merge. That will delete branch ``a`` and change the target branch of PR #2 change to ``main``. At that point, auto-queueing will switch on for PR #2 and it gets merged, etc. .. epigraph:: [!IMPORTANT] This component will never disable AutoMerge, only enable it. So if a PR is initially targeted at one of the branches in this list, and then subsequently retargeted to another branch, *AutoMerge is not automatically turned off*.
543
+
544
+ :stability: experimental
545
+ '''
546
+ if __debug__:
547
+ type_hints = typing.get_type_hints(_typecheckingstub__f138097d225158d553505a4839bf1c114c4a0e41bc55b7d24234176015382a5d)
548
+ check_type(argname="argument allowed_usernames", value=allowed_usernames, expected_type=type_hints["allowed_usernames"])
549
+ check_type(argname="argument labels", value=labels, expected_type=type_hints["labels"])
550
+ check_type(argname="argument merge_method", value=merge_method, expected_type=type_hints["merge_method"])
551
+ check_type(argname="argument projen_credentials", value=projen_credentials, expected_type=type_hints["projen_credentials"])
552
+ check_type(argname="argument runs_on", value=runs_on, expected_type=type_hints["runs_on"])
553
+ check_type(argname="argument target_branches", value=target_branches, expected_type=type_hints["target_branches"])
554
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
555
+ if allowed_usernames is not None:
556
+ self._values["allowed_usernames"] = allowed_usernames
557
+ if labels is not None:
558
+ self._values["labels"] = labels
559
+ if merge_method is not None:
560
+ self._values["merge_method"] = merge_method
561
+ if projen_credentials is not None:
562
+ self._values["projen_credentials"] = projen_credentials
563
+ if runs_on is not None:
564
+ self._values["runs_on"] = runs_on
565
+ if target_branches is not None:
566
+ self._values["target_branches"] = target_branches
567
+
568
+ @builtins.property
569
+ def allowed_usernames(self) -> typing.Optional[typing.List[builtins.str]]:
570
+ '''(experimental) Only pull requests authored by these Github usernames will have auto-queue enabled.
571
+
572
+ :default: - pull requests from all users are eligible for auto-queuing
573
+
574
+ :stability: experimental
575
+ '''
576
+ result = self._values.get("allowed_usernames")
577
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
578
+
579
+ @builtins.property
580
+ def labels(self) -> typing.Optional[typing.List[builtins.str]]:
581
+ '''(experimental) Only pull requests with one of this labels will have auto-queue enabled.
582
+
583
+ :default: - all pull requests are eligible for auto-queueing
584
+
585
+ :stability: experimental
586
+ '''
587
+ result = self._values.get("labels")
588
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
589
+
590
+ @builtins.property
591
+ def merge_method(self) -> typing.Optional["MergeMethod"]:
592
+ '''(experimental) The method used to add the PR to the merge queue Any branch protection rules must allow this merge method.
593
+
594
+ :default: MergeMethod.SQUASH
595
+
596
+ :stability: experimental
597
+ '''
598
+ result = self._values.get("merge_method")
599
+ return typing.cast(typing.Optional["MergeMethod"], result)
600
+
601
+ @builtins.property
602
+ def projen_credentials(self) -> typing.Optional["GithubCredentials"]:
603
+ '''(experimental) Choose a method for authenticating with GitHub to enable auto-queue on pull requests.
604
+
605
+ The workflow cannot use a default github token. Queuing a PR
606
+ with the default token will not trigger any merge queue workflows,
607
+ which results in the PR just not getting merged at all.
608
+
609
+ :default: - uses credentials from the GitHub component
610
+
611
+ :see: https://projen.io/docs/integrations/github/
612
+ :stability: experimental
613
+ '''
614
+ result = self._values.get("projen_credentials")
615
+ return typing.cast(typing.Optional["GithubCredentials"], result)
616
+
617
+ @builtins.property
618
+ def runs_on(self) -> typing.Optional[typing.List[builtins.str]]:
619
+ '''(experimental) Github Runner selection labels.
620
+
621
+ :default: ["ubuntu-latest"]
622
+
623
+ :stability: experimental
624
+ '''
625
+ result = self._values.get("runs_on")
626
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
627
+
628
+ @builtins.property
629
+ def target_branches(self) -> typing.Optional[typing.List[builtins.str]]:
630
+ '''(experimental) The branch names that we should auto-queue for.
631
+
632
+ This set of branches should be a subset of ``MergeQueueOptions.targetBranches``.
633
+
634
+ Be sure not to enable ``autoQueue`` for branches that don't have branch rules
635
+ with merge requirements set up, otherwise new PRs will be merged
636
+ immediately after creating without a chance for review.
637
+
638
+
639
+ Automatically merging a set of Stacked PRs
640
+
641
+ If you set this to ``['main']`` you can automatically merge a set of Stacked PRs
642
+ in the right order. It works like this:
643
+
644
+ - Create PR #1 from branch ``a``, targeting ``main``.
645
+ - Create PR #2 from branch ``b``, targeting branch ``a``.
646
+ - Create PR #3 from branch ``c``, targeting branch ``b``.
647
+
648
+ Initially, PR #1 will be set to auto-merge, PRs #2 and #3 will not.
649
+
650
+ Once PR #1 passes all of its requirements it will merge. That will delete
651
+ branch ``a`` and change the target branch of PR #2 change to ``main``. At that
652
+ point, auto-queueing will switch on for PR #2 and it gets merged, etc.
653
+ .. epigraph::
654
+
655
+ [!IMPORTANT]
656
+ This component will never disable AutoMerge, only enable it. So if a PR is
657
+ initially targeted at one of the branches in this list, and then
658
+ subsequently retargeted to another branch, *AutoMerge is not
659
+ automatically turned off*.
660
+
661
+ :stability: experimental
662
+ '''
663
+ result = self._values.get("target_branches")
664
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
665
+
666
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
667
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
668
+
669
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
670
+ return not (rhs == self)
671
+
672
+ def __repr__(self) -> str:
673
+ return "AutoQueueOptions(%s)" % ", ".join(
674
+ k + "=" + repr(v) for k, v in self._values.items()
675
+ )
676
+
677
+
439
678
  @jsii.data_type(
440
679
  jsii_type="projen.github.CheckoutOptions",
441
680
  jsii_struct_bases=[_JobStepConfiguration_9caff420],
@@ -444,6 +683,7 @@ class AutoMergeOptions:
444
683
  "id": "id",
445
684
  "if_": "if",
446
685
  "name": "name",
686
+ "shell": "shell",
447
687
  "working_directory": "workingDirectory",
448
688
  "continue_on_error": "continueOnError",
449
689
  "timeout_minutes": "timeoutMinutes",
@@ -458,6 +698,7 @@ class CheckoutOptions(_JobStepConfiguration_9caff420):
458
698
  id: typing.Optional[builtins.str] = None,
459
699
  if_: typing.Optional[builtins.str] = None,
460
700
  name: typing.Optional[builtins.str] = None,
701
+ shell: typing.Optional[builtins.str] = None,
461
702
  working_directory: typing.Optional[builtins.str] = None,
462
703
  continue_on_error: typing.Optional[builtins.bool] = None,
463
704
  timeout_minutes: typing.Optional[jsii.Number] = None,
@@ -468,6 +709,7 @@ class CheckoutOptions(_JobStepConfiguration_9caff420):
468
709
  :param id: (experimental) A unique identifier for the step. You can use the id to reference the step in contexts.
469
710
  :param if_: (experimental) You can use the if conditional to prevent a job from running unless a condition is met. You can use any supported context and expression to create a conditional.
470
711
  :param name: (experimental) A name for your step to display on GitHub.
712
+ :param shell: (experimental) Overrides the default shell settings in the runner's operating system and the job's default. Refer to GitHub documentation for allowed values.
471
713
  :param working_directory: (experimental) Specifies a working directory for a step. Overrides a job's working directory.
472
714
  :param continue_on_error: (experimental) Prevents a job from failing when a step fails. Set to true to allow a job to pass when this step fails.
473
715
  :param timeout_minutes: (experimental) The maximum number of minutes to run the step before killing the process.
@@ -483,6 +725,7 @@ class CheckoutOptions(_JobStepConfiguration_9caff420):
483
725
  check_type(argname="argument id", value=id, expected_type=type_hints["id"])
484
726
  check_type(argname="argument if_", value=if_, expected_type=type_hints["if_"])
485
727
  check_type(argname="argument name", value=name, expected_type=type_hints["name"])
728
+ check_type(argname="argument shell", value=shell, expected_type=type_hints["shell"])
486
729
  check_type(argname="argument working_directory", value=working_directory, expected_type=type_hints["working_directory"])
487
730
  check_type(argname="argument continue_on_error", value=continue_on_error, expected_type=type_hints["continue_on_error"])
488
731
  check_type(argname="argument timeout_minutes", value=timeout_minutes, expected_type=type_hints["timeout_minutes"])
@@ -496,6 +739,8 @@ class CheckoutOptions(_JobStepConfiguration_9caff420):
496
739
  self._values["if_"] = if_
497
740
  if name is not None:
498
741
  self._values["name"] = name
742
+ if shell is not None:
743
+ self._values["shell"] = shell
499
744
  if working_directory is not None:
500
745
  self._values["working_directory"] = working_directory
501
746
  if continue_on_error is not None:
@@ -549,6 +794,18 @@ class CheckoutOptions(_JobStepConfiguration_9caff420):
549
794
  result = self._values.get("name")
550
795
  return typing.cast(typing.Optional[builtins.str], result)
551
796
 
797
+ @builtins.property
798
+ def shell(self) -> typing.Optional[builtins.str]:
799
+ '''(experimental) Overrides the default shell settings in the runner's operating system and the job's default.
800
+
801
+ Refer to GitHub documentation for allowed values.
802
+
803
+ :see: https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsshell
804
+ :stability: experimental
805
+ '''
806
+ result = self._values.get("shell")
807
+ return typing.cast(typing.Optional[builtins.str], result)
808
+
552
809
  @builtins.property
553
810
  def working_directory(self) -> typing.Optional[builtins.str]:
554
811
  '''(experimental) Specifies a working directory for a step.
@@ -608,6 +865,7 @@ class CheckoutOptions(_JobStepConfiguration_9caff420):
608
865
  name_mapping={
609
866
  "fetch_depth": "fetchDepth",
610
867
  "lfs": "lfs",
868
+ "path": "path",
611
869
  "ref": "ref",
612
870
  "repository": "repository",
613
871
  "token": "token",
@@ -619,6 +877,7 @@ class CheckoutWith:
619
877
  *,
620
878
  fetch_depth: typing.Optional[jsii.Number] = None,
621
879
  lfs: typing.Optional[builtins.bool] = None,
880
+ path: typing.Optional[builtins.str] = None,
622
881
  ref: typing.Optional[builtins.str] = None,
623
882
  repository: typing.Optional[builtins.str] = None,
624
883
  token: typing.Optional[builtins.str] = None,
@@ -627,6 +886,7 @@ class CheckoutWith:
627
886
 
628
887
  :param fetch_depth: (experimental) Number of commits to fetch. 0 indicates all history for all branches and tags. Default: 1
629
888
  :param lfs: (experimental) Whether LFS is enabled for the GitHub repository. Default: false
889
+ :param path: (experimental) Relative path under $GITHUB_WORKSPACE to place the repository. Default: - $GITHUB_WORKSPACE
630
890
  :param ref: (experimental) Branch or tag name. Default: - the default branch is implicitly used
631
891
  :param repository: (experimental) The repository (owner/repo) to use. Default: - the default repository is implicitly used
632
892
  :param token: (experimental) A GitHub token to use when checking out the repository. If the intent is to push changes back to the branch, then you must use a PAT with ``repo`` (and possibly ``workflows``) permissions. Default: - the default GITHUB_TOKEN is implicitly used
@@ -637,6 +897,7 @@ class CheckoutWith:
637
897
  type_hints = typing.get_type_hints(_typecheckingstub__57379070911f0df36ef38a23c138780de73f270c4e64ea8e6b7f4f128eb8ac6a)
638
898
  check_type(argname="argument fetch_depth", value=fetch_depth, expected_type=type_hints["fetch_depth"])
639
899
  check_type(argname="argument lfs", value=lfs, expected_type=type_hints["lfs"])
900
+ check_type(argname="argument path", value=path, expected_type=type_hints["path"])
640
901
  check_type(argname="argument ref", value=ref, expected_type=type_hints["ref"])
641
902
  check_type(argname="argument repository", value=repository, expected_type=type_hints["repository"])
642
903
  check_type(argname="argument token", value=token, expected_type=type_hints["token"])
@@ -645,6 +906,8 @@ class CheckoutWith:
645
906
  self._values["fetch_depth"] = fetch_depth
646
907
  if lfs is not None:
647
908
  self._values["lfs"] = lfs
909
+ if path is not None:
910
+ self._values["path"] = path
648
911
  if ref is not None:
649
912
  self._values["ref"] = ref
650
913
  if repository is not None:
@@ -676,6 +939,17 @@ class CheckoutWith:
676
939
  result = self._values.get("lfs")
677
940
  return typing.cast(typing.Optional[builtins.bool], result)
678
941
 
942
+ @builtins.property
943
+ def path(self) -> typing.Optional[builtins.str]:
944
+ '''(experimental) Relative path under $GITHUB_WORKSPACE to place the repository.
945
+
946
+ :default: - $GITHUB_WORKSPACE
947
+
948
+ :stability: experimental
949
+ '''
950
+ result = self._values.get("path")
951
+ return typing.cast(typing.Optional[builtins.str], result)
952
+
679
953
  @builtins.property
680
954
  def ref(self) -> typing.Optional[builtins.str]:
681
955
  '''(experimental) Branch or tag name.
@@ -730,6 +1004,7 @@ class CheckoutWith:
730
1004
  name_mapping={
731
1005
  "fetch_depth": "fetchDepth",
732
1006
  "lfs": "lfs",
1007
+ "path": "path",
733
1008
  "ref": "ref",
734
1009
  "repository": "repository",
735
1010
  "token": "token",
@@ -742,6 +1017,7 @@ class CheckoutWithPatchOptions(CheckoutWith):
742
1017
  *,
743
1018
  fetch_depth: typing.Optional[jsii.Number] = None,
744
1019
  lfs: typing.Optional[builtins.bool] = None,
1020
+ path: typing.Optional[builtins.str] = None,
745
1021
  ref: typing.Optional[builtins.str] = None,
746
1022
  repository: typing.Optional[builtins.str] = None,
747
1023
  token: typing.Optional[builtins.str] = None,
@@ -751,6 +1027,7 @@ class CheckoutWithPatchOptions(CheckoutWith):
751
1027
 
752
1028
  :param fetch_depth: (experimental) Number of commits to fetch. 0 indicates all history for all branches and tags. Default: 1
753
1029
  :param lfs: (experimental) Whether LFS is enabled for the GitHub repository. Default: false
1030
+ :param path: (experimental) Relative path under $GITHUB_WORKSPACE to place the repository. Default: - $GITHUB_WORKSPACE
754
1031
  :param ref: (experimental) Branch or tag name. Default: - the default branch is implicitly used
755
1032
  :param repository: (experimental) The repository (owner/repo) to use. Default: - the default repository is implicitly used
756
1033
  :param token: (experimental) A GitHub token to use when checking out the repository. If the intent is to push changes back to the branch, then you must use a PAT with ``repo`` (and possibly ``workflows``) permissions. Default: - the default GITHUB_TOKEN is implicitly used
@@ -762,6 +1039,7 @@ class CheckoutWithPatchOptions(CheckoutWith):
762
1039
  type_hints = typing.get_type_hints(_typecheckingstub__c7405ea05e49b1f743e00dc103618fbd659c979bbec234492b8928ed6cf37e9b)
763
1040
  check_type(argname="argument fetch_depth", value=fetch_depth, expected_type=type_hints["fetch_depth"])
764
1041
  check_type(argname="argument lfs", value=lfs, expected_type=type_hints["lfs"])
1042
+ check_type(argname="argument path", value=path, expected_type=type_hints["path"])
765
1043
  check_type(argname="argument ref", value=ref, expected_type=type_hints["ref"])
766
1044
  check_type(argname="argument repository", value=repository, expected_type=type_hints["repository"])
767
1045
  check_type(argname="argument token", value=token, expected_type=type_hints["token"])
@@ -771,6 +1049,8 @@ class CheckoutWithPatchOptions(CheckoutWith):
771
1049
  self._values["fetch_depth"] = fetch_depth
772
1050
  if lfs is not None:
773
1051
  self._values["lfs"] = lfs
1052
+ if path is not None:
1053
+ self._values["path"] = path
774
1054
  if ref is not None:
775
1055
  self._values["ref"] = ref
776
1056
  if repository is not None:
@@ -804,6 +1084,17 @@ class CheckoutWithPatchOptions(CheckoutWith):
804
1084
  result = self._values.get("lfs")
805
1085
  return typing.cast(typing.Optional[builtins.bool], result)
806
1086
 
1087
+ @builtins.property
1088
+ def path(self) -> typing.Optional[builtins.str]:
1089
+ '''(experimental) Relative path under $GITHUB_WORKSPACE to place the repository.
1090
+
1091
+ :default: - $GITHUB_WORKSPACE
1092
+
1093
+ :stability: experimental
1094
+ '''
1095
+ result = self._values.get("path")
1096
+ return typing.cast(typing.Optional[builtins.str], result)
1097
+
807
1098
  @builtins.property
808
1099
  def ref(self) -> typing.Optional[builtins.str]:
809
1100
  '''(experimental) Branch or tag name.
@@ -863,6 +1154,73 @@ class CheckoutWithPatchOptions(CheckoutWith):
863
1154
  )
864
1155
 
865
1156
 
1157
+ @jsii.data_type(
1158
+ jsii_type="projen.github.ConcurrencyOptions",
1159
+ jsii_struct_bases=[],
1160
+ name_mapping={"cancel_in_progress": "cancelInProgress", "group": "group"},
1161
+ )
1162
+ class ConcurrencyOptions:
1163
+ def __init__(
1164
+ self,
1165
+ *,
1166
+ cancel_in_progress: typing.Optional[builtins.bool] = None,
1167
+ group: typing.Optional[builtins.str] = None,
1168
+ ) -> None:
1169
+ '''(experimental) Options for ``concurrency``.
1170
+
1171
+ :param cancel_in_progress: (experimental) When a workflow is triggered while another one (in the same group) is running, should GitHub cancel the running workflow? Default: false
1172
+ :param group: (experimental) Concurrency group controls which workflow runs will share the same concurrency limit. For example, if you specify ``${{ github.workflow }}-${{ github.ref }}``, workflow runs triggered on the same branch cannot run concurrenty, but workflows runs triggered on different branches can. Default: - ${{ github.workflow }}
1173
+
1174
+ :stability: experimental
1175
+ '''
1176
+ if __debug__:
1177
+ type_hints = typing.get_type_hints(_typecheckingstub__c4114f6f3330f94beb00dba1183281a663b31179a714c1f1412277b784153015)
1178
+ check_type(argname="argument cancel_in_progress", value=cancel_in_progress, expected_type=type_hints["cancel_in_progress"])
1179
+ check_type(argname="argument group", value=group, expected_type=type_hints["group"])
1180
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
1181
+ if cancel_in_progress is not None:
1182
+ self._values["cancel_in_progress"] = cancel_in_progress
1183
+ if group is not None:
1184
+ self._values["group"] = group
1185
+
1186
+ @builtins.property
1187
+ def cancel_in_progress(self) -> typing.Optional[builtins.bool]:
1188
+ '''(experimental) When a workflow is triggered while another one (in the same group) is running, should GitHub cancel the running workflow?
1189
+
1190
+ :default: false
1191
+
1192
+ :stability: experimental
1193
+ '''
1194
+ result = self._values.get("cancel_in_progress")
1195
+ return typing.cast(typing.Optional[builtins.bool], result)
1196
+
1197
+ @builtins.property
1198
+ def group(self) -> typing.Optional[builtins.str]:
1199
+ '''(experimental) Concurrency group controls which workflow runs will share the same concurrency limit.
1200
+
1201
+ For example, if you specify ``${{ github.workflow }}-${{ github.ref }}``, workflow runs triggered
1202
+ on the same branch cannot run concurrenty, but workflows runs triggered on different branches can.
1203
+
1204
+ :default: - ${{ github.workflow }}
1205
+
1206
+ :see: https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/using-concurrency#example-concurrency-groups
1207
+ :stability: experimental
1208
+ '''
1209
+ result = self._values.get("group")
1210
+ return typing.cast(typing.Optional[builtins.str], result)
1211
+
1212
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
1213
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
1214
+
1215
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
1216
+ return not (rhs == self)
1217
+
1218
+ def __repr__(self) -> str:
1219
+ return "ConcurrencyOptions(%s)" % ", ".join(
1220
+ k + "=" + repr(v) for k, v in self._values.items()
1221
+ )
1222
+
1223
+
866
1224
  @jsii.data_type(
867
1225
  jsii_type="projen.github.ContributorStatementOptions",
868
1226
  jsii_struct_bases=[],
@@ -969,7 +1327,7 @@ class CreatePullRequestOptions:
969
1327
  :param base_branch: (experimental) Sets the pull request base branch. Default: - The branch checked out in the workflow.
970
1328
  :param branch_name: (experimental) The pull request branch name. Default: ``github-actions/${options.workflowName}``
971
1329
  :param credentials: (experimental) The job credentials used to create the pull request. Provided credentials must have permissions to create a pull request on the repository.
972
- :param git_identity: (experimental) The git identity used to create the commit. Default: - the default github-actions user
1330
+ :param git_identity: (experimental) The git identity used to create the commit. Default: - default GitHub Actions user
973
1331
  :param labels: (experimental) Labels to apply on the PR. Default: - no labels.
974
1332
  :param signoff: (experimental) Add Signed-off-by line by the committer at the end of the commit log message. Default: true
975
1333
  :param step_id: (experimental) The step ID which produces the output which indicates if a patch was created. Default: "create_pr"
@@ -1099,7 +1457,7 @@ class CreatePullRequestOptions:
1099
1457
  def git_identity(self) -> typing.Optional["GitIdentity"]:
1100
1458
  '''(experimental) The git identity used to create the commit.
1101
1459
 
1102
- :default: - the default github-actions user
1460
+ :default: - default GitHub Actions user
1103
1461
 
1104
1462
  :stability: experimental
1105
1463
  '''
@@ -1190,6 +1548,7 @@ class Dependabot(
1190
1548
  registries: typing.Optional[typing.Mapping[builtins.str, typing.Union["DependabotRegistry", typing.Dict[builtins.str, typing.Any]]]] = None,
1191
1549
  reviewers: typing.Optional[typing.Sequence[builtins.str]] = None,
1192
1550
  schedule_interval: typing.Optional["DependabotScheduleInterval"] = None,
1551
+ target_branch: typing.Optional[builtins.str] = None,
1193
1552
  versioning_strategy: typing.Optional["VersioningStrategy"] = None,
1194
1553
  ) -> None:
1195
1554
  '''
@@ -1204,6 +1563,7 @@ class Dependabot(
1204
1563
  :param registries: (experimental) Map of package registries to use. Default: - use public registries
1205
1564
  :param reviewers: (experimental) Specify individual reviewers or teams of reviewers for all pull requests raised for a package manager. Default: []
1206
1565
  :param schedule_interval: (experimental) How often to check for new versions and raise pull requests. Default: ScheduleInterval.DAILY
1566
+ :param target_branch: (experimental) https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file#target-branch You can configure the target branch for raising pull requests for version updates against.
1207
1567
  :param versioning_strategy: (experimental) The strategy to use when edits manifest and lock files. Default: VersioningStrategy.LOCKFILE_ONLY The default is to only update the lock file because package.json is controlled by projen and any outside updates will fail the build.
1208
1568
 
1209
1569
  :stability: experimental
@@ -1222,6 +1582,7 @@ class Dependabot(
1222
1582
  registries=registries,
1223
1583
  reviewers=reviewers,
1224
1584
  schedule_interval=schedule_interval,
1585
+ target_branch=target_branch,
1225
1586
  versioning_strategy=versioning_strategy,
1226
1587
  )
1227
1588
 
@@ -1329,31 +1690,53 @@ class DependabotAllow:
1329
1690
  @jsii.data_type(
1330
1691
  jsii_type="projen.github.DependabotGroup",
1331
1692
  jsii_struct_bases=[],
1332
- name_mapping={"patterns": "patterns", "exclude_patterns": "excludePatterns"},
1693
+ name_mapping={
1694
+ "patterns": "patterns",
1695
+ "applies_to": "appliesTo",
1696
+ "dependency_type": "dependencyType",
1697
+ "exclude_patterns": "excludePatterns",
1698
+ "update_types": "updateTypes",
1699
+ },
1333
1700
  )
1334
1701
  class DependabotGroup:
1335
1702
  def __init__(
1336
1703
  self,
1337
1704
  *,
1338
1705
  patterns: typing.Sequence[builtins.str],
1706
+ applies_to: typing.Optional["DependabotGroupAppliesTo"] = None,
1707
+ dependency_type: typing.Optional["DependabotGroupDependencyType"] = None,
1339
1708
  exclude_patterns: typing.Optional[typing.Sequence[builtins.str]] = None,
1709
+ update_types: typing.Optional[typing.Sequence["DependabotGroupUpdateType"]] = None,
1340
1710
  ) -> None:
1341
1711
  '''(experimental) Defines a single group for dependency updates.
1342
1712
 
1343
1713
  :param patterns: (experimental) Define a list of strings (with or without wildcards) that will match package names to form this dependency group.
1714
+ :param applies_to: (experimental) Specify which type of update the group applies to. Default: - version updates
1715
+ :param dependency_type: (experimental) Limit the group to a type of dependency. Default: - all types of dependencies
1344
1716
  :param exclude_patterns: (experimental) Optionally you can use this to exclude certain dependencies from the group.
1717
+ :param update_types: (experimental) Limit the group to one or more semantic versioning levels. If specified, must contain at least one element and elements must be unique. Default: - all semantic versioning levels
1345
1718
 
1719
+ :see: https://docs.github.com/en/code-security/dependabot/working-with-dependabot/dependabot-options-reference#groups--
1346
1720
  :stability: experimental
1347
1721
  '''
1348
1722
  if __debug__:
1349
1723
  type_hints = typing.get_type_hints(_typecheckingstub__97650f1e1a170d34a5bd50211445090d04d890ec494749c1eb3f5a1fabbec7d4)
1350
1724
  check_type(argname="argument patterns", value=patterns, expected_type=type_hints["patterns"])
1725
+ check_type(argname="argument applies_to", value=applies_to, expected_type=type_hints["applies_to"])
1726
+ check_type(argname="argument dependency_type", value=dependency_type, expected_type=type_hints["dependency_type"])
1351
1727
  check_type(argname="argument exclude_patterns", value=exclude_patterns, expected_type=type_hints["exclude_patterns"])
1728
+ check_type(argname="argument update_types", value=update_types, expected_type=type_hints["update_types"])
1352
1729
  self._values: typing.Dict[builtins.str, typing.Any] = {
1353
1730
  "patterns": patterns,
1354
1731
  }
1732
+ if applies_to is not None:
1733
+ self._values["applies_to"] = applies_to
1734
+ if dependency_type is not None:
1735
+ self._values["dependency_type"] = dependency_type
1355
1736
  if exclude_patterns is not None:
1356
1737
  self._values["exclude_patterns"] = exclude_patterns
1738
+ if update_types is not None:
1739
+ self._values["update_types"] = update_types
1357
1740
 
1358
1741
  @builtins.property
1359
1742
  def patterns(self) -> typing.List[builtins.str]:
@@ -1365,6 +1748,29 @@ class DependabotGroup:
1365
1748
  assert result is not None, "Required property 'patterns' is missing"
1366
1749
  return typing.cast(typing.List[builtins.str], result)
1367
1750
 
1751
+ @builtins.property
1752
+ def applies_to(self) -> typing.Optional["DependabotGroupAppliesTo"]:
1753
+ '''(experimental) Specify which type of update the group applies to.
1754
+
1755
+ :default: - version updates
1756
+
1757
+ :stability: experimental
1758
+ '''
1759
+ result = self._values.get("applies_to")
1760
+ return typing.cast(typing.Optional["DependabotGroupAppliesTo"], result)
1761
+
1762
+ @builtins.property
1763
+ def dependency_type(self) -> typing.Optional["DependabotGroupDependencyType"]:
1764
+ '''(experimental) Limit the group to a type of dependency.
1765
+
1766
+ :default: - all types of dependencies
1767
+
1768
+ :see: https://docs.github.com/en/code-security/dependabot/working-with-dependabot/dependabot-options-reference#dependency-type-groups
1769
+ :stability: experimental
1770
+ '''
1771
+ result = self._values.get("dependency_type")
1772
+ return typing.cast(typing.Optional["DependabotGroupDependencyType"], result)
1773
+
1368
1774
  @builtins.property
1369
1775
  def exclude_patterns(self) -> typing.Optional[typing.List[builtins.str]]:
1370
1776
  '''(experimental) Optionally you can use this to exclude certain dependencies from the group.
@@ -1374,6 +1780,20 @@ class DependabotGroup:
1374
1780
  result = self._values.get("exclude_patterns")
1375
1781
  return typing.cast(typing.Optional[typing.List[builtins.str]], result)
1376
1782
 
1783
+ @builtins.property
1784
+ def update_types(self) -> typing.Optional[typing.List["DependabotGroupUpdateType"]]:
1785
+ '''(experimental) Limit the group to one or more semantic versioning levels.
1786
+
1787
+ If specified, must contain at least one element and elements must be unique.
1788
+
1789
+ :default: - all semantic versioning levels
1790
+
1791
+ :see: https://docs.github.com/en/code-security/dependabot/working-with-dependabot/dependabot-options-reference#update-types-groups
1792
+ :stability: experimental
1793
+ '''
1794
+ result = self._values.get("update_types")
1795
+ return typing.cast(typing.Optional[typing.List["DependabotGroupUpdateType"]], result)
1796
+
1377
1797
  def __eq__(self, rhs: typing.Any) -> builtins.bool:
1378
1798
  return isinstance(rhs, self.__class__) and rhs._values == self._values
1379
1799
 
@@ -1386,26 +1806,88 @@ class DependabotGroup:
1386
1806
  )
1387
1807
 
1388
1808
 
1389
- @jsii.data_type(
1390
- jsii_type="projen.github.DependabotIgnore",
1391
- jsii_struct_bases=[],
1392
- name_mapping={"dependency_name": "dependencyName", "versions": "versions"},
1393
- )
1394
- class DependabotIgnore:
1395
- def __init__(
1396
- self,
1397
- *,
1398
- dependency_name: builtins.str,
1399
- versions: typing.Optional[typing.Sequence[builtins.str]] = None,
1400
- ) -> None:
1401
- '''(experimental) You can use the ``ignore`` option to customize which dependencies are updated.
1809
+ @jsii.enum(jsii_type="projen.github.DependabotGroupAppliesTo")
1810
+ class DependabotGroupAppliesTo(enum.Enum):
1811
+ '''(experimental) The type of update a group applies to.
1402
1812
 
1403
- The ignore option supports the following options.
1813
+ :stability: experimental
1814
+ '''
1404
1815
 
1405
- :param dependency_name: (experimental) Use to ignore updates for dependencies with matching names, optionally using ``*`` to match zero or more characters. For Java dependencies, the format of the dependency-name attribute is: ``groupId:artifactId``, for example: ``org.kohsuke:github-api``.
1406
- :param versions: (experimental) Use to ignore specific versions or ranges of versions. If you want to define a range, use the standard pattern for the package manager (for example: ``^1.0.0`` for npm, or ``~> 2.0`` for Bundler).
1816
+ VERSION_UPDATES = "VERSION_UPDATES"
1817
+ '''(experimental) Apply only to version updates.
1407
1818
 
1408
- :stability: experimental
1819
+ :stability: experimental
1820
+ '''
1821
+ SECURITY_UPDATES = "SECURITY_UPDATES"
1822
+ '''(experimental) Apply only to security updates.
1823
+
1824
+ :stability: experimental
1825
+ '''
1826
+
1827
+
1828
+ @jsii.enum(jsii_type="projen.github.DependabotGroupDependencyType")
1829
+ class DependabotGroupDependencyType(enum.Enum):
1830
+ '''(experimental) The type of dependency a group may be limited to.
1831
+
1832
+ :stability: experimental
1833
+ '''
1834
+
1835
+ DEVELOPMENT = "DEVELOPMENT"
1836
+ '''(experimental) Include only dependencies in the "Development dependency group".
1837
+
1838
+ :stability: experimental
1839
+ '''
1840
+ PRODUCTION = "PRODUCTION"
1841
+ '''(experimental) Include only dependencies in the "Production dependency group".
1842
+
1843
+ :stability: experimental
1844
+ '''
1845
+
1846
+
1847
+ @jsii.enum(jsii_type="projen.github.DependabotGroupUpdateType")
1848
+ class DependabotGroupUpdateType(enum.Enum):
1849
+ '''(experimental) The semantic versioning levels a group may be limited to.
1850
+
1851
+ :stability: experimental
1852
+ '''
1853
+
1854
+ MAJOR = "MAJOR"
1855
+ '''(experimental) Include major releases.
1856
+
1857
+ :stability: experimental
1858
+ '''
1859
+ MINOR = "MINOR"
1860
+ '''(experimental) Include minor releases.
1861
+
1862
+ :stability: experimental
1863
+ '''
1864
+ PATCH = "PATCH"
1865
+ '''(experimental) Include patch releases.
1866
+
1867
+ :stability: experimental
1868
+ '''
1869
+
1870
+
1871
+ @jsii.data_type(
1872
+ jsii_type="projen.github.DependabotIgnore",
1873
+ jsii_struct_bases=[],
1874
+ name_mapping={"dependency_name": "dependencyName", "versions": "versions"},
1875
+ )
1876
+ class DependabotIgnore:
1877
+ def __init__(
1878
+ self,
1879
+ *,
1880
+ dependency_name: builtins.str,
1881
+ versions: typing.Optional[typing.Sequence[builtins.str]] = None,
1882
+ ) -> None:
1883
+ '''(experimental) You can use the ``ignore`` option to customize which dependencies are updated.
1884
+
1885
+ The ignore option supports the following options.
1886
+
1887
+ :param dependency_name: (experimental) Use to ignore updates for dependencies with matching names, optionally using ``*`` to match zero or more characters. For Java dependencies, the format of the dependency-name attribute is: ``groupId:artifactId``, for example: ``org.kohsuke:github-api``.
1888
+ :param versions: (experimental) Use to ignore specific versions or ranges of versions. If you want to define a range, use the standard pattern for the package manager (for example: ``^1.0.0`` for npm, or ``~> 2.0`` for Bundler).
1889
+
1890
+ :stability: experimental
1409
1891
  '''
1410
1892
  if __debug__:
1411
1893
  type_hints = typing.get_type_hints(_typecheckingstub__e56f402ddf44883464ec12efeaccc97a7e042d533028c01db1fcda57dd3859c8)
@@ -1469,6 +1951,7 @@ class DependabotIgnore:
1469
1951
  "registries": "registries",
1470
1952
  "reviewers": "reviewers",
1471
1953
  "schedule_interval": "scheduleInterval",
1954
+ "target_branch": "targetBranch",
1472
1955
  "versioning_strategy": "versioningStrategy",
1473
1956
  },
1474
1957
  )
@@ -1486,6 +1969,7 @@ class DependabotOptions:
1486
1969
  registries: typing.Optional[typing.Mapping[builtins.str, typing.Union["DependabotRegistry", typing.Dict[builtins.str, typing.Any]]]] = None,
1487
1970
  reviewers: typing.Optional[typing.Sequence[builtins.str]] = None,
1488
1971
  schedule_interval: typing.Optional["DependabotScheduleInterval"] = None,
1972
+ target_branch: typing.Optional[builtins.str] = None,
1489
1973
  versioning_strategy: typing.Optional["VersioningStrategy"] = None,
1490
1974
  ) -> None:
1491
1975
  '''
@@ -1499,6 +1983,7 @@ class DependabotOptions:
1499
1983
  :param registries: (experimental) Map of package registries to use. Default: - use public registries
1500
1984
  :param reviewers: (experimental) Specify individual reviewers or teams of reviewers for all pull requests raised for a package manager. Default: []
1501
1985
  :param schedule_interval: (experimental) How often to check for new versions and raise pull requests. Default: ScheduleInterval.DAILY
1986
+ :param target_branch: (experimental) https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file#target-branch You can configure the target branch for raising pull requests for version updates against.
1502
1987
  :param versioning_strategy: (experimental) The strategy to use when edits manifest and lock files. Default: VersioningStrategy.LOCKFILE_ONLY The default is to only update the lock file because package.json is controlled by projen and any outside updates will fail the build.
1503
1988
 
1504
1989
  :stability: experimental
@@ -1515,6 +2000,7 @@ class DependabotOptions:
1515
2000
  check_type(argname="argument registries", value=registries, expected_type=type_hints["registries"])
1516
2001
  check_type(argname="argument reviewers", value=reviewers, expected_type=type_hints["reviewers"])
1517
2002
  check_type(argname="argument schedule_interval", value=schedule_interval, expected_type=type_hints["schedule_interval"])
2003
+ check_type(argname="argument target_branch", value=target_branch, expected_type=type_hints["target_branch"])
1518
2004
  check_type(argname="argument versioning_strategy", value=versioning_strategy, expected_type=type_hints["versioning_strategy"])
1519
2005
  self._values: typing.Dict[builtins.str, typing.Any] = {}
1520
2006
  if allow is not None:
@@ -1537,6 +2023,8 @@ class DependabotOptions:
1537
2023
  self._values["reviewers"] = reviewers
1538
2024
  if schedule_interval is not None:
1539
2025
  self._values["schedule_interval"] = schedule_interval
2026
+ if target_branch is not None:
2027
+ self._values["target_branch"] = target_branch
1540
2028
  if versioning_strategy is not None:
1541
2029
  self._values["versioning_strategy"] = versioning_strategy
1542
2030
 
@@ -1665,6 +2153,15 @@ class DependabotOptions:
1665
2153
  result = self._values.get("schedule_interval")
1666
2154
  return typing.cast(typing.Optional["DependabotScheduleInterval"], result)
1667
2155
 
2156
+ @builtins.property
2157
+ def target_branch(self) -> typing.Optional[builtins.str]:
2158
+ '''(experimental) https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file#target-branch You can configure the target branch for raising pull requests for version updates against.
2159
+
2160
+ :stability: experimental
2161
+ '''
2162
+ result = self._values.get("target_branch")
2163
+ return typing.cast(typing.Optional[builtins.str], result)
2164
+
1668
2165
  @builtins.property
1669
2166
  def versioning_strategy(self) -> typing.Optional["VersioningStrategy"]:
1670
2167
  '''(experimental) The strategy to use when edits manifest and lock files.
@@ -1961,147 +2458,497 @@ class DependabotScheduleInterval(enum.Enum):
1961
2458
  '''
1962
2459
 
1963
2460
 
1964
- class GitHub(
1965
- _Component_2b0ad27f,
1966
- metaclass=jsii.JSIIMeta,
1967
- jsii_type="projen.github.GitHub",
1968
- ):
1969
- '''
1970
- :stability: experimental
1971
- '''
1972
-
2461
+ @jsii.data_type(
2462
+ jsii_type="projen.github.DownloadArtifactOptions",
2463
+ jsii_struct_bases=[_JobStepConfiguration_9caff420],
2464
+ name_mapping={
2465
+ "env": "env",
2466
+ "id": "id",
2467
+ "if_": "if",
2468
+ "name": "name",
2469
+ "shell": "shell",
2470
+ "working_directory": "workingDirectory",
2471
+ "continue_on_error": "continueOnError",
2472
+ "timeout_minutes": "timeoutMinutes",
2473
+ "with_": "with",
2474
+ },
2475
+ )
2476
+ class DownloadArtifactOptions(_JobStepConfiguration_9caff420):
1973
2477
  def __init__(
1974
2478
  self,
1975
- project: _Project_57d89203,
1976
2479
  *,
1977
- download_lfs: typing.Optional[builtins.bool] = None,
1978
- mergify: typing.Optional[builtins.bool] = None,
1979
- mergify_options: typing.Optional[typing.Union["MergifyOptions", typing.Dict[builtins.str, typing.Any]]] = None,
1980
- projen_credentials: typing.Optional["GithubCredentials"] = None,
1981
- projen_token_secret: typing.Optional[builtins.str] = None,
1982
- pull_request_lint: typing.Optional[builtins.bool] = None,
1983
- pull_request_lint_options: typing.Optional[typing.Union["PullRequestLintOptions", typing.Dict[builtins.str, typing.Any]]] = None,
1984
- workflows: typing.Optional[builtins.bool] = None,
2480
+ env: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
2481
+ id: typing.Optional[builtins.str] = None,
2482
+ if_: typing.Optional[builtins.str] = None,
2483
+ name: typing.Optional[builtins.str] = None,
2484
+ shell: typing.Optional[builtins.str] = None,
2485
+ working_directory: typing.Optional[builtins.str] = None,
2486
+ continue_on_error: typing.Optional[builtins.bool] = None,
2487
+ timeout_minutes: typing.Optional[jsii.Number] = None,
2488
+ with_: typing.Union["DownloadArtifactWith", typing.Dict[builtins.str, typing.Any]],
1985
2489
  ) -> None:
1986
2490
  '''
1987
- :param project: -
1988
- :param download_lfs: (experimental) Download files in LFS in workflows. Default: true if the associated project has ``lfsPatterns``, ``false`` otherwise
1989
- :param mergify: (experimental) Whether mergify should be enabled on this repository or not. Default: true
1990
- :param mergify_options: (experimental) Options for Mergify. Default: - default options
1991
- :param projen_credentials: (experimental) Choose a method of providing GitHub API access for projen workflows. Default: - use a personal access token named PROJEN_GITHUB_TOKEN
1992
- :param projen_token_secret: (deprecated) The name of a secret which includes a GitHub Personal Access Token to be used by projen workflows. This token needs to have the ``repo``, ``workflows`` and ``packages`` scope. Default: "PROJEN_GITHUB_TOKEN"
1993
- :param pull_request_lint: (experimental) Add a workflow that performs basic checks for pull requests, like validating that PRs follow Conventional Commits. Default: true
1994
- :param pull_request_lint_options: (experimental) Options for configuring a pull request linter. Default: - see defaults in ``PullRequestLintOptions``
1995
- :param workflows: (experimental) Enables GitHub workflows. If this is set to ``false``, workflows will not be created. Default: true
2491
+ :param env: (experimental) Sets environment variables for steps to use in the runner environment. You can also set environment variables for the entire workflow or a job.
2492
+ :param id: (experimental) A unique identifier for the step. You can use the id to reference the step in contexts.
2493
+ :param if_: (experimental) You can use the if conditional to prevent a job from running unless a condition is met. You can use any supported context and expression to create a conditional.
2494
+ :param name: (experimental) A name for your step to display on GitHub.
2495
+ :param shell: (experimental) Overrides the default shell settings in the runner's operating system and the job's default. Refer to GitHub documentation for allowed values.
2496
+ :param working_directory: (experimental) Specifies a working directory for a step. Overrides a job's working directory.
2497
+ :param continue_on_error: (experimental) Prevents a job from failing when a step fails. Set to true to allow a job to pass when this step fails.
2498
+ :param timeout_minutes: (experimental) The maximum number of minutes to run the step before killing the process.
2499
+ :param with_: (experimental) Options for ``download-artifact``.
1996
2500
 
1997
2501
  :stability: experimental
1998
2502
  '''
2503
+ if isinstance(with_, dict):
2504
+ with_ = DownloadArtifactWith(**with_)
1999
2505
  if __debug__:
2000
- type_hints = typing.get_type_hints(_typecheckingstub__65db11e8703472c7fa4e013294c649e43b7f8634b29ca11be71b46d8c549c4d1)
2001
- check_type(argname="argument project", value=project, expected_type=type_hints["project"])
2002
- options = GitHubOptions(
2003
- download_lfs=download_lfs,
2004
- mergify=mergify,
2005
- mergify_options=mergify_options,
2006
- projen_credentials=projen_credentials,
2007
- projen_token_secret=projen_token_secret,
2008
- pull_request_lint=pull_request_lint,
2009
- pull_request_lint_options=pull_request_lint_options,
2010
- workflows=workflows,
2011
- )
2012
-
2013
- jsii.create(self.__class__, self, [project, options])
2506
+ type_hints = typing.get_type_hints(_typecheckingstub__c7f153d5c1001fcb119385a05448ea85e212f46cc420d578734261b8353a641b)
2507
+ check_type(argname="argument env", value=env, expected_type=type_hints["env"])
2508
+ check_type(argname="argument id", value=id, expected_type=type_hints["id"])
2509
+ check_type(argname="argument if_", value=if_, expected_type=type_hints["if_"])
2510
+ check_type(argname="argument name", value=name, expected_type=type_hints["name"])
2511
+ check_type(argname="argument shell", value=shell, expected_type=type_hints["shell"])
2512
+ check_type(argname="argument working_directory", value=working_directory, expected_type=type_hints["working_directory"])
2513
+ check_type(argname="argument continue_on_error", value=continue_on_error, expected_type=type_hints["continue_on_error"])
2514
+ check_type(argname="argument timeout_minutes", value=timeout_minutes, expected_type=type_hints["timeout_minutes"])
2515
+ check_type(argname="argument with_", value=with_, expected_type=type_hints["with_"])
2516
+ self._values: typing.Dict[builtins.str, typing.Any] = {
2517
+ "with_": with_,
2518
+ }
2519
+ if env is not None:
2520
+ self._values["env"] = env
2521
+ if id is not None:
2522
+ self._values["id"] = id
2523
+ if if_ is not None:
2524
+ self._values["if_"] = if_
2525
+ if name is not None:
2526
+ self._values["name"] = name
2527
+ if shell is not None:
2528
+ self._values["shell"] = shell
2529
+ if working_directory is not None:
2530
+ self._values["working_directory"] = working_directory
2531
+ if continue_on_error is not None:
2532
+ self._values["continue_on_error"] = continue_on_error
2533
+ if timeout_minutes is not None:
2534
+ self._values["timeout_minutes"] = timeout_minutes
2014
2535
 
2015
- @jsii.member(jsii_name="of")
2016
- @builtins.classmethod
2017
- def of(cls, project: _Project_57d89203) -> typing.Optional["GitHub"]:
2018
- '''(experimental) Returns the ``GitHub`` component of a project or ``undefined`` if the project does not have a GitHub component.
2536
+ @builtins.property
2537
+ def env(self) -> typing.Optional[typing.Mapping[builtins.str, builtins.str]]:
2538
+ '''(experimental) Sets environment variables for steps to use in the runner environment.
2019
2539
 
2020
- :param project: -
2540
+ You can also set environment variables for the entire workflow or a job.
2021
2541
 
2022
2542
  :stability: experimental
2023
2543
  '''
2024
- if __debug__:
2025
- type_hints = typing.get_type_hints(_typecheckingstub__f1f9f6e10bd4208bf86fd269c2d9b1be37bfe497219300efebf37a151efc972e)
2026
- check_type(argname="argument project", value=project, expected_type=type_hints["project"])
2027
- return typing.cast(typing.Optional["GitHub"], jsii.sinvoke(cls, "of", [project]))
2544
+ result = self._values.get("env")
2545
+ return typing.cast(typing.Optional[typing.Mapping[builtins.str, builtins.str]], result)
2028
2546
 
2029
- @jsii.member(jsii_name="addDependabot")
2030
- def add_dependabot(
2031
- self,
2032
- *,
2033
- allow: typing.Optional[typing.Sequence[typing.Union[DependabotAllow, typing.Dict[builtins.str, typing.Any]]]] = None,
2034
- assignees: typing.Optional[typing.Sequence[builtins.str]] = None,
2035
- groups: typing.Optional[typing.Mapping[builtins.str, typing.Union[DependabotGroup, typing.Dict[builtins.str, typing.Any]]]] = None,
2036
- ignore: typing.Optional[typing.Sequence[typing.Union[DependabotIgnore, typing.Dict[builtins.str, typing.Any]]]] = None,
2037
- ignore_projen: typing.Optional[builtins.bool] = None,
2038
- labels: typing.Optional[typing.Sequence[builtins.str]] = None,
2039
- open_pull_requests_limit: typing.Optional[jsii.Number] = None,
2040
- registries: typing.Optional[typing.Mapping[builtins.str, typing.Union[DependabotRegistry, typing.Dict[builtins.str, typing.Any]]]] = None,
2041
- reviewers: typing.Optional[typing.Sequence[builtins.str]] = None,
2042
- schedule_interval: typing.Optional[DependabotScheduleInterval] = None,
2043
- versioning_strategy: typing.Optional["VersioningStrategy"] = None,
2044
- ) -> Dependabot:
2045
- '''
2046
- :param allow: (experimental) https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file#allow. Use the allow option to customize which dependencies are updated. This applies to both version and security updates. Default: []
2047
- :param assignees: (experimental) Specify individual assignees or teams of assignees for all pull requests raised for a package manager. Default: []
2048
- :param groups: (experimental) https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file#groups. You can create groups to package dependency updates together into a single PR. Default: []
2049
- :param ignore: (experimental) You can use the ``ignore`` option to customize which dependencies are updated. The ignore option supports the following options. Default: []
2050
- :param ignore_projen: (experimental) Ignores updates to ``projen``. This is required since projen updates may cause changes in committed files and anti-tamper checks will fail. Projen upgrades are covered through the ``ProjenUpgrade`` class. Default: true
2051
- :param labels: (experimental) List of labels to apply to the created PR's.
2052
- :param open_pull_requests_limit: (experimental) Sets the maximum of pull requests Dependabot opens for version updates. Dependabot will not open any new requests until some of those open requests are merged or closed. Default: 5
2053
- :param registries: (experimental) Map of package registries to use. Default: - use public registries
2054
- :param reviewers: (experimental) Specify individual reviewers or teams of reviewers for all pull requests raised for a package manager. Default: []
2055
- :param schedule_interval: (experimental) How often to check for new versions and raise pull requests. Default: ScheduleInterval.DAILY
2056
- :param versioning_strategy: (experimental) The strategy to use when edits manifest and lock files. Default: VersioningStrategy.LOCKFILE_ONLY The default is to only update the lock file because package.json is controlled by projen and any outside updates will fail the build.
2547
+ @builtins.property
2548
+ def id(self) -> typing.Optional[builtins.str]:
2549
+ '''(experimental) A unique identifier for the step.
2550
+
2551
+ You can use the id to reference the
2552
+ step in contexts.
2057
2553
 
2058
2554
  :stability: experimental
2059
2555
  '''
2060
- options = DependabotOptions(
2061
- allow=allow,
2062
- assignees=assignees,
2063
- groups=groups,
2064
- ignore=ignore,
2065
- ignore_projen=ignore_projen,
2066
- labels=labels,
2067
- open_pull_requests_limit=open_pull_requests_limit,
2068
- registries=registries,
2069
- reviewers=reviewers,
2070
- schedule_interval=schedule_interval,
2071
- versioning_strategy=versioning_strategy,
2072
- )
2556
+ result = self._values.get("id")
2557
+ return typing.cast(typing.Optional[builtins.str], result)
2073
2558
 
2074
- return typing.cast(Dependabot, jsii.invoke(self, "addDependabot", [options]))
2559
+ @builtins.property
2560
+ def if_(self) -> typing.Optional[builtins.str]:
2561
+ '''(experimental) You can use the if conditional to prevent a job from running unless a condition is met.
2075
2562
 
2076
- @jsii.member(jsii_name="addPullRequestTemplate")
2077
- def add_pull_request_template(
2078
- self,
2079
- *content: builtins.str,
2080
- ) -> "PullRequestTemplate":
2081
- '''
2082
- :param content: -
2563
+ You can use any supported context and expression to
2564
+ create a conditional.
2083
2565
 
2084
2566
  :stability: experimental
2085
2567
  '''
2086
- if __debug__:
2087
- type_hints = typing.get_type_hints(_typecheckingstub__4837ecd412981af090d26642873c81c7ca7b69a5c2079c390fb0d3d7168522ff)
2088
- check_type(argname="argument content", value=content, expected_type=typing.Tuple[type_hints["content"], ...]) # pyright: ignore [reportGeneralTypeIssues]
2089
- return typing.cast("PullRequestTemplate", jsii.invoke(self, "addPullRequestTemplate", [*content]))
2568
+ result = self._values.get("if_")
2569
+ return typing.cast(typing.Optional[builtins.str], result)
2090
2570
 
2091
- @jsii.member(jsii_name="addWorkflow")
2092
- def add_workflow(self, name: builtins.str) -> "GithubWorkflow":
2093
- '''(experimental) Adds a workflow to the project.
2571
+ @builtins.property
2572
+ def name(self) -> typing.Optional[builtins.str]:
2573
+ '''(experimental) A name for your step to display on GitHub.
2094
2574
 
2095
- :param name: Name of the workflow.
2575
+ :stability: experimental
2576
+ '''
2577
+ result = self._values.get("name")
2578
+ return typing.cast(typing.Optional[builtins.str], result)
2096
2579
 
2097
- :return: a GithubWorkflow instance
2580
+ @builtins.property
2581
+ def shell(self) -> typing.Optional[builtins.str]:
2582
+ '''(experimental) Overrides the default shell settings in the runner's operating system and the job's default.
2098
2583
 
2584
+ Refer to GitHub documentation for allowed values.
2585
+
2586
+ :see: https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsshell
2099
2587
  :stability: experimental
2100
2588
  '''
2101
- if __debug__:
2102
- type_hints = typing.get_type_hints(_typecheckingstub__79e4dc466f25fa1bf920982b1e4d0a98ce7f5ac928835c4607e7f8879a2e1d06)
2103
- check_type(argname="argument name", value=name, expected_type=type_hints["name"])
2104
- return typing.cast("GithubWorkflow", jsii.invoke(self, "addWorkflow", [name]))
2589
+ result = self._values.get("shell")
2590
+ return typing.cast(typing.Optional[builtins.str], result)
2591
+
2592
+ @builtins.property
2593
+ def working_directory(self) -> typing.Optional[builtins.str]:
2594
+ '''(experimental) Specifies a working directory for a step.
2595
+
2596
+ Overrides a job's working directory.
2597
+
2598
+ :stability: experimental
2599
+ '''
2600
+ result = self._values.get("working_directory")
2601
+ return typing.cast(typing.Optional[builtins.str], result)
2602
+
2603
+ @builtins.property
2604
+ def continue_on_error(self) -> typing.Optional[builtins.bool]:
2605
+ '''(experimental) Prevents a job from failing when a step fails.
2606
+
2607
+ Set to true to allow a job
2608
+ to pass when this step fails.
2609
+
2610
+ :stability: experimental
2611
+ '''
2612
+ result = self._values.get("continue_on_error")
2613
+ return typing.cast(typing.Optional[builtins.bool], result)
2614
+
2615
+ @builtins.property
2616
+ def timeout_minutes(self) -> typing.Optional[jsii.Number]:
2617
+ '''(experimental) The maximum number of minutes to run the step before killing the process.
2618
+
2619
+ :stability: experimental
2620
+ '''
2621
+ result = self._values.get("timeout_minutes")
2622
+ return typing.cast(typing.Optional[jsii.Number], result)
2623
+
2624
+ @builtins.property
2625
+ def with_(self) -> "DownloadArtifactWith":
2626
+ '''(experimental) Options for ``download-artifact``.
2627
+
2628
+ :stability: experimental
2629
+ '''
2630
+ result = self._values.get("with_")
2631
+ assert result is not None, "Required property 'with_' is missing"
2632
+ return typing.cast("DownloadArtifactWith", result)
2633
+
2634
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
2635
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
2636
+
2637
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
2638
+ return not (rhs == self)
2639
+
2640
+ def __repr__(self) -> str:
2641
+ return "DownloadArtifactOptions(%s)" % ", ".join(
2642
+ k + "=" + repr(v) for k, v in self._values.items()
2643
+ )
2644
+
2645
+
2646
+ @jsii.data_type(
2647
+ jsii_type="projen.github.DownloadArtifactWith",
2648
+ jsii_struct_bases=[],
2649
+ name_mapping={
2650
+ "merge_multiple": "mergeMultiple",
2651
+ "name": "name",
2652
+ "path": "path",
2653
+ "pattern": "pattern",
2654
+ "repository": "repository",
2655
+ "run_id": "runId",
2656
+ "token": "token",
2657
+ },
2658
+ )
2659
+ class DownloadArtifactWith:
2660
+ def __init__(
2661
+ self,
2662
+ *,
2663
+ merge_multiple: typing.Optional[builtins.bool] = None,
2664
+ name: typing.Optional[builtins.str] = None,
2665
+ path: typing.Optional[builtins.str] = None,
2666
+ pattern: typing.Optional[builtins.str] = None,
2667
+ repository: typing.Optional[builtins.str] = None,
2668
+ run_id: typing.Optional[builtins.str] = None,
2669
+ token: typing.Optional[builtins.str] = None,
2670
+ ) -> None:
2671
+ '''
2672
+ :param merge_multiple: (experimental) When multiple artifacts are matched, this changes the behavior of the destination directories If true, the downloaded artifacts will be in the same directory specified by path If false, the downloaded artifacts will be extracted into individual named directories within the specified path. Default: false
2673
+ :param name: (experimental) Name of the artifact to download. Default: - If unspecified, all artifacts for the run are downloaded
2674
+ :param path: (experimental) A file, directory or wildcard pattern that describes what to download. Supports basic tilde expansion. Default: - $GITHUB_WORKSPACE
2675
+ :param pattern: (experimental) A glob pattern to the artifacts that should be downloaded This is ignored if name is specified.
2676
+ :param repository: (experimental) The repository owner and the repository name joined together by "/" If github-token is specified, this is the repository that artifacts will be downloaded from. Default: - ${{ github.repository }}
2677
+ :param run_id: (experimental) The id of the workflow run where the desired download artifact was uploaded from If github-token is specified, this is the run that artifacts will be downloaded from. Default: - ${{ github.run_id }}
2678
+ :param token: (experimental) The GitHub token used to authenticate with the GitHub API to download artifacts from a different repository or from a different workflow run. Default: - If unspecified, the action will download artifacts from the current repo and the current workflow run
2679
+
2680
+ :stability: experimental
2681
+ '''
2682
+ if __debug__:
2683
+ type_hints = typing.get_type_hints(_typecheckingstub__3e5008f68a85d8490ecf62a54f413b82cc795d9a14d3bc8eabcc2720f31de50c)
2684
+ check_type(argname="argument merge_multiple", value=merge_multiple, expected_type=type_hints["merge_multiple"])
2685
+ check_type(argname="argument name", value=name, expected_type=type_hints["name"])
2686
+ check_type(argname="argument path", value=path, expected_type=type_hints["path"])
2687
+ check_type(argname="argument pattern", value=pattern, expected_type=type_hints["pattern"])
2688
+ check_type(argname="argument repository", value=repository, expected_type=type_hints["repository"])
2689
+ check_type(argname="argument run_id", value=run_id, expected_type=type_hints["run_id"])
2690
+ check_type(argname="argument token", value=token, expected_type=type_hints["token"])
2691
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
2692
+ if merge_multiple is not None:
2693
+ self._values["merge_multiple"] = merge_multiple
2694
+ if name is not None:
2695
+ self._values["name"] = name
2696
+ if path is not None:
2697
+ self._values["path"] = path
2698
+ if pattern is not None:
2699
+ self._values["pattern"] = pattern
2700
+ if repository is not None:
2701
+ self._values["repository"] = repository
2702
+ if run_id is not None:
2703
+ self._values["run_id"] = run_id
2704
+ if token is not None:
2705
+ self._values["token"] = token
2706
+
2707
+ @builtins.property
2708
+ def merge_multiple(self) -> typing.Optional[builtins.bool]:
2709
+ '''(experimental) When multiple artifacts are matched, this changes the behavior of the destination directories If true, the downloaded artifacts will be in the same directory specified by path If false, the downloaded artifacts will be extracted into individual named directories within the specified path.
2710
+
2711
+ :default: false
2712
+
2713
+ :stability: experimental
2714
+ '''
2715
+ result = self._values.get("merge_multiple")
2716
+ return typing.cast(typing.Optional[builtins.bool], result)
2717
+
2718
+ @builtins.property
2719
+ def name(self) -> typing.Optional[builtins.str]:
2720
+ '''(experimental) Name of the artifact to download.
2721
+
2722
+ :default: - If unspecified, all artifacts for the run are downloaded
2723
+
2724
+ :stability: experimental
2725
+ '''
2726
+ result = self._values.get("name")
2727
+ return typing.cast(typing.Optional[builtins.str], result)
2728
+
2729
+ @builtins.property
2730
+ def path(self) -> typing.Optional[builtins.str]:
2731
+ '''(experimental) A file, directory or wildcard pattern that describes what to download.
2732
+
2733
+ Supports basic tilde expansion.
2734
+
2735
+ :default: - $GITHUB_WORKSPACE
2736
+
2737
+ :stability: experimental
2738
+ '''
2739
+ result = self._values.get("path")
2740
+ return typing.cast(typing.Optional[builtins.str], result)
2741
+
2742
+ @builtins.property
2743
+ def pattern(self) -> typing.Optional[builtins.str]:
2744
+ '''(experimental) A glob pattern to the artifacts that should be downloaded This is ignored if name is specified.
2745
+
2746
+ :stability: experimental
2747
+ '''
2748
+ result = self._values.get("pattern")
2749
+ return typing.cast(typing.Optional[builtins.str], result)
2750
+
2751
+ @builtins.property
2752
+ def repository(self) -> typing.Optional[builtins.str]:
2753
+ '''(experimental) The repository owner and the repository name joined together by "/" If github-token is specified, this is the repository that artifacts will be downloaded from.
2754
+
2755
+ :default: - ${{ github.repository }}
2756
+
2757
+ :stability: experimental
2758
+ '''
2759
+ result = self._values.get("repository")
2760
+ return typing.cast(typing.Optional[builtins.str], result)
2761
+
2762
+ @builtins.property
2763
+ def run_id(self) -> typing.Optional[builtins.str]:
2764
+ '''(experimental) The id of the workflow run where the desired download artifact was uploaded from If github-token is specified, this is the run that artifacts will be downloaded from.
2765
+
2766
+ :default: - ${{ github.run_id }}
2767
+
2768
+ :stability: experimental
2769
+ '''
2770
+ result = self._values.get("run_id")
2771
+ return typing.cast(typing.Optional[builtins.str], result)
2772
+
2773
+ @builtins.property
2774
+ def token(self) -> typing.Optional[builtins.str]:
2775
+ '''(experimental) The GitHub token used to authenticate with the GitHub API to download artifacts from a different repository or from a different workflow run.
2776
+
2777
+ :default: - If unspecified, the action will download artifacts from the current repo and the current workflow run
2778
+
2779
+ :stability: experimental
2780
+ '''
2781
+ result = self._values.get("token")
2782
+ return typing.cast(typing.Optional[builtins.str], result)
2783
+
2784
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
2785
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
2786
+
2787
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
2788
+ return not (rhs == self)
2789
+
2790
+ def __repr__(self) -> str:
2791
+ return "DownloadArtifactWith(%s)" % ", ".join(
2792
+ k + "=" + repr(v) for k, v in self._values.items()
2793
+ )
2794
+
2795
+
2796
+ class GitHub(
2797
+ _Component_2b0ad27f,
2798
+ metaclass=jsii.JSIIMeta,
2799
+ jsii_type="projen.github.GitHub",
2800
+ ):
2801
+ '''
2802
+ :stability: experimental
2803
+ '''
2804
+
2805
+ def __init__(
2806
+ self,
2807
+ project: _Project_57d89203,
2808
+ *,
2809
+ download_lfs: typing.Optional[builtins.bool] = None,
2810
+ merge_queue: typing.Optional[builtins.bool] = None,
2811
+ merge_queue_options: typing.Optional[typing.Union["MergeQueueOptions", typing.Dict[builtins.str, typing.Any]]] = None,
2812
+ mergify: typing.Optional[builtins.bool] = None,
2813
+ mergify_options: typing.Optional[typing.Union["MergifyOptions", typing.Dict[builtins.str, typing.Any]]] = None,
2814
+ projen_credentials: typing.Optional["GithubCredentials"] = None,
2815
+ projen_token_secret: typing.Optional[builtins.str] = None,
2816
+ pull_request_backport: typing.Optional[builtins.bool] = None,
2817
+ pull_request_backport_options: typing.Optional[typing.Union["PullRequestBackportOptions", typing.Dict[builtins.str, typing.Any]]] = None,
2818
+ pull_request_lint: typing.Optional[builtins.bool] = None,
2819
+ pull_request_lint_options: typing.Optional[typing.Union["PullRequestLintOptions", typing.Dict[builtins.str, typing.Any]]] = None,
2820
+ workflows: typing.Optional[builtins.bool] = None,
2821
+ ) -> None:
2822
+ '''
2823
+ :param project: -
2824
+ :param download_lfs: (experimental) Download files in LFS in workflows. Default: true if the associated project has ``lfsPatterns``, ``false`` otherwise
2825
+ :param merge_queue: (experimental) Whether a merge queue should be used on this repository to merge pull requests. Requires additional configuration of the repositories branch protection rules. Default: false
2826
+ :param merge_queue_options: (experimental) Options for MergeQueue. Default: - default options
2827
+ :param mergify: (experimental) Whether mergify should be enabled on this repository or not. Default: true
2828
+ :param mergify_options: (experimental) Options for Mergify. Default: - default options
2829
+ :param projen_credentials: (experimental) Choose a method of providing GitHub API access for projen workflows. Default: - use a personal access token named PROJEN_GITHUB_TOKEN
2830
+ :param projen_token_secret: (deprecated) The name of a secret which includes a GitHub Personal Access Token to be used by projen workflows. This token needs to have the ``repo``, ``workflows`` and ``packages`` scope. Default: "PROJEN_GITHUB_TOKEN"
2831
+ :param pull_request_backport: (experimental) Add a workflow that allows backport of PRs to other branches using labels. When opening a new PR add a backport label to it, and the PR will be backported to the target branches once the PR is merged. Should not be used together with mergify. Default: false
2832
+ :param pull_request_backport_options: (experimental) Options for configuring pull request backport. Default: - see defaults in ``PullRequestBackportOptions``
2833
+ :param pull_request_lint: (experimental) Add a workflow that performs basic checks for pull requests, like validating that PRs follow Conventional Commits. Default: true
2834
+ :param pull_request_lint_options: (experimental) Options for configuring a pull request linter. Default: - see defaults in ``PullRequestLintOptions``
2835
+ :param workflows: (experimental) Enables GitHub workflows. If this is set to ``false``, workflows will not be created. Default: true
2836
+
2837
+ :stability: experimental
2838
+ '''
2839
+ if __debug__:
2840
+ type_hints = typing.get_type_hints(_typecheckingstub__65db11e8703472c7fa4e013294c649e43b7f8634b29ca11be71b46d8c549c4d1)
2841
+ check_type(argname="argument project", value=project, expected_type=type_hints["project"])
2842
+ options = GitHubOptions(
2843
+ download_lfs=download_lfs,
2844
+ merge_queue=merge_queue,
2845
+ merge_queue_options=merge_queue_options,
2846
+ mergify=mergify,
2847
+ mergify_options=mergify_options,
2848
+ projen_credentials=projen_credentials,
2849
+ projen_token_secret=projen_token_secret,
2850
+ pull_request_backport=pull_request_backport,
2851
+ pull_request_backport_options=pull_request_backport_options,
2852
+ pull_request_lint=pull_request_lint,
2853
+ pull_request_lint_options=pull_request_lint_options,
2854
+ workflows=workflows,
2855
+ )
2856
+
2857
+ jsii.create(self.__class__, self, [project, options])
2858
+
2859
+ @jsii.member(jsii_name="of")
2860
+ @builtins.classmethod
2861
+ def of(cls, project: _Project_57d89203) -> typing.Optional["GitHub"]:
2862
+ '''(experimental) Returns the ``GitHub`` component of a project or ``undefined`` if the project does not have a GitHub component.
2863
+
2864
+ :param project: -
2865
+
2866
+ :stability: experimental
2867
+ '''
2868
+ if __debug__:
2869
+ type_hints = typing.get_type_hints(_typecheckingstub__f1f9f6e10bd4208bf86fd269c2d9b1be37bfe497219300efebf37a151efc972e)
2870
+ check_type(argname="argument project", value=project, expected_type=type_hints["project"])
2871
+ return typing.cast(typing.Optional["GitHub"], jsii.sinvoke(cls, "of", [project]))
2872
+
2873
+ @jsii.member(jsii_name="addDependabot")
2874
+ def add_dependabot(
2875
+ self,
2876
+ *,
2877
+ allow: typing.Optional[typing.Sequence[typing.Union[DependabotAllow, typing.Dict[builtins.str, typing.Any]]]] = None,
2878
+ assignees: typing.Optional[typing.Sequence[builtins.str]] = None,
2879
+ groups: typing.Optional[typing.Mapping[builtins.str, typing.Union[DependabotGroup, typing.Dict[builtins.str, typing.Any]]]] = None,
2880
+ ignore: typing.Optional[typing.Sequence[typing.Union[DependabotIgnore, typing.Dict[builtins.str, typing.Any]]]] = None,
2881
+ ignore_projen: typing.Optional[builtins.bool] = None,
2882
+ labels: typing.Optional[typing.Sequence[builtins.str]] = None,
2883
+ open_pull_requests_limit: typing.Optional[jsii.Number] = None,
2884
+ registries: typing.Optional[typing.Mapping[builtins.str, typing.Union[DependabotRegistry, typing.Dict[builtins.str, typing.Any]]]] = None,
2885
+ reviewers: typing.Optional[typing.Sequence[builtins.str]] = None,
2886
+ schedule_interval: typing.Optional[DependabotScheduleInterval] = None,
2887
+ target_branch: typing.Optional[builtins.str] = None,
2888
+ versioning_strategy: typing.Optional["VersioningStrategy"] = None,
2889
+ ) -> Dependabot:
2890
+ '''
2891
+ :param allow: (experimental) https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file#allow. Use the allow option to customize which dependencies are updated. This applies to both version and security updates. Default: []
2892
+ :param assignees: (experimental) Specify individual assignees or teams of assignees for all pull requests raised for a package manager. Default: []
2893
+ :param groups: (experimental) https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file#groups. You can create groups to package dependency updates together into a single PR. Default: []
2894
+ :param ignore: (experimental) You can use the ``ignore`` option to customize which dependencies are updated. The ignore option supports the following options. Default: []
2895
+ :param ignore_projen: (experimental) Ignores updates to ``projen``. This is required since projen updates may cause changes in committed files and anti-tamper checks will fail. Projen upgrades are covered through the ``ProjenUpgrade`` class. Default: true
2896
+ :param labels: (experimental) List of labels to apply to the created PR's.
2897
+ :param open_pull_requests_limit: (experimental) Sets the maximum of pull requests Dependabot opens for version updates. Dependabot will not open any new requests until some of those open requests are merged or closed. Default: 5
2898
+ :param registries: (experimental) Map of package registries to use. Default: - use public registries
2899
+ :param reviewers: (experimental) Specify individual reviewers or teams of reviewers for all pull requests raised for a package manager. Default: []
2900
+ :param schedule_interval: (experimental) How often to check for new versions and raise pull requests. Default: ScheduleInterval.DAILY
2901
+ :param target_branch: (experimental) https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file#target-branch You can configure the target branch for raising pull requests for version updates against.
2902
+ :param versioning_strategy: (experimental) The strategy to use when edits manifest and lock files. Default: VersioningStrategy.LOCKFILE_ONLY The default is to only update the lock file because package.json is controlled by projen and any outside updates will fail the build.
2903
+
2904
+ :stability: experimental
2905
+ '''
2906
+ options = DependabotOptions(
2907
+ allow=allow,
2908
+ assignees=assignees,
2909
+ groups=groups,
2910
+ ignore=ignore,
2911
+ ignore_projen=ignore_projen,
2912
+ labels=labels,
2913
+ open_pull_requests_limit=open_pull_requests_limit,
2914
+ registries=registries,
2915
+ reviewers=reviewers,
2916
+ schedule_interval=schedule_interval,
2917
+ target_branch=target_branch,
2918
+ versioning_strategy=versioning_strategy,
2919
+ )
2920
+
2921
+ return typing.cast(Dependabot, jsii.invoke(self, "addDependabot", [options]))
2922
+
2923
+ @jsii.member(jsii_name="addPullRequestTemplate")
2924
+ def add_pull_request_template(
2925
+ self,
2926
+ *content: builtins.str,
2927
+ ) -> "PullRequestTemplate":
2928
+ '''
2929
+ :param content: -
2930
+
2931
+ :stability: experimental
2932
+ '''
2933
+ if __debug__:
2934
+ type_hints = typing.get_type_hints(_typecheckingstub__4837ecd412981af090d26642873c81c7ca7b69a5c2079c390fb0d3d7168522ff)
2935
+ check_type(argname="argument content", value=content, expected_type=typing.Tuple[type_hints["content"], ...]) # pyright: ignore [reportGeneralTypeIssues]
2936
+ return typing.cast("PullRequestTemplate", jsii.invoke(self, "addPullRequestTemplate", [*content]))
2937
+
2938
+ @jsii.member(jsii_name="addWorkflow")
2939
+ def add_workflow(self, name: builtins.str) -> "GithubWorkflow":
2940
+ '''(experimental) Adds a workflow to the project.
2941
+
2942
+ :param name: Name of the workflow.
2943
+
2944
+ :return: a GithubWorkflow instance
2945
+
2946
+ :stability: experimental
2947
+ '''
2948
+ if __debug__:
2949
+ type_hints = typing.get_type_hints(_typecheckingstub__79e4dc466f25fa1bf920982b1e4d0a98ce7f5ac928835c4607e7f8879a2e1d06)
2950
+ check_type(argname="argument name", value=name, expected_type=type_hints["name"])
2951
+ return typing.cast("GithubWorkflow", jsii.invoke(self, "addWorkflow", [name]))
2105
2952
 
2106
2953
  @jsii.member(jsii_name="tryFindWorkflow")
2107
2954
  def try_find_workflow(
@@ -2124,7 +2971,8 @@ class GitHub(
2124
2971
  @builtins.property
2125
2972
  @jsii.member(jsii_name="actions")
2126
2973
  def actions(self) -> "GitHubActionsProvider":
2127
- '''
2974
+ '''(experimental) The GitHub Actions provider used to manage the versions of actions used in steps.
2975
+
2128
2976
  :stability: experimental
2129
2977
  '''
2130
2978
  return typing.cast("GitHubActionsProvider", jsii.get(self, "actions"))
@@ -2165,13 +3013,19 @@ class GitHub(
2165
3013
  '''
2166
3014
  return typing.cast(builtins.bool, jsii.get(self, "workflowsEnabled"))
2167
3015
 
3016
+ @builtins.property
3017
+ @jsii.member(jsii_name="mergeQueue")
3018
+ def merge_queue(self) -> typing.Optional["MergeQueue"]:
3019
+ '''(experimental) The ``MergeQueue`` component configured on this repository This is ``undefined`` if merge queues are not enabled for this repository.
3020
+
3021
+ :stability: experimental
3022
+ '''
3023
+ return typing.cast(typing.Optional["MergeQueue"], jsii.get(self, "mergeQueue"))
3024
+
2168
3025
  @builtins.property
2169
3026
  @jsii.member(jsii_name="mergify")
2170
3027
  def mergify(self) -> typing.Optional["Mergify"]:
2171
- '''(experimental) The ``Mergify`` configured on this repository.
2172
-
2173
- This is ``undefined`` if Mergify
2174
- was not enabled when creating the repository.
3028
+ '''(experimental) The ``Mergify`` component configured on this repository This is ``undefined`` if Mergify is not enabled for this repository.
2175
3029
 
2176
3030
  :stability: experimental
2177
3031
  '''
@@ -2226,8 +3080,8 @@ class GitHubActionsProvider(
2226
3080
  // Force any use of `actions/checkout` to use a pin a specific commit
2227
3081
  project.github.actions.set("actions/checkout", "actions/checkout@aaaaaa");
2228
3082
 
2229
- // But pin usage of `v3` to a different commit
2230
- project.github.actions.set("actions/checkout@v3", "actions/checkout@ffffff");
3083
+ // But pin usage of `v4` to a different commit
3084
+ project.github.actions.set("actions/checkout@v4", "actions/checkout@ffffff");
2231
3085
  '''
2232
3086
  if __debug__:
2233
3087
  type_hints = typing.get_type_hints(_typecheckingstub__20166ac47381861e1a45b550a5e9646380c52a927fca9ebf00ec36dab0f295ed)
@@ -2241,10 +3095,14 @@ class GitHubActionsProvider(
2241
3095
  jsii_struct_bases=[],
2242
3096
  name_mapping={
2243
3097
  "download_lfs": "downloadLfs",
3098
+ "merge_queue": "mergeQueue",
3099
+ "merge_queue_options": "mergeQueueOptions",
2244
3100
  "mergify": "mergify",
2245
3101
  "mergify_options": "mergifyOptions",
2246
3102
  "projen_credentials": "projenCredentials",
2247
3103
  "projen_token_secret": "projenTokenSecret",
3104
+ "pull_request_backport": "pullRequestBackport",
3105
+ "pull_request_backport_options": "pullRequestBackportOptions",
2248
3106
  "pull_request_lint": "pullRequestLint",
2249
3107
  "pull_request_lint_options": "pullRequestLintOptions",
2250
3108
  "workflows": "workflows",
@@ -2255,43 +3113,63 @@ class GitHubOptions:
2255
3113
  self,
2256
3114
  *,
2257
3115
  download_lfs: typing.Optional[builtins.bool] = None,
3116
+ merge_queue: typing.Optional[builtins.bool] = None,
3117
+ merge_queue_options: typing.Optional[typing.Union["MergeQueueOptions", typing.Dict[builtins.str, typing.Any]]] = None,
2258
3118
  mergify: typing.Optional[builtins.bool] = None,
2259
3119
  mergify_options: typing.Optional[typing.Union["MergifyOptions", typing.Dict[builtins.str, typing.Any]]] = None,
2260
3120
  projen_credentials: typing.Optional["GithubCredentials"] = None,
2261
3121
  projen_token_secret: typing.Optional[builtins.str] = None,
3122
+ pull_request_backport: typing.Optional[builtins.bool] = None,
3123
+ pull_request_backport_options: typing.Optional[typing.Union["PullRequestBackportOptions", typing.Dict[builtins.str, typing.Any]]] = None,
2262
3124
  pull_request_lint: typing.Optional[builtins.bool] = None,
2263
3125
  pull_request_lint_options: typing.Optional[typing.Union["PullRequestLintOptions", typing.Dict[builtins.str, typing.Any]]] = None,
2264
3126
  workflows: typing.Optional[builtins.bool] = None,
2265
3127
  ) -> None:
2266
3128
  '''
2267
3129
  :param download_lfs: (experimental) Download files in LFS in workflows. Default: true if the associated project has ``lfsPatterns``, ``false`` otherwise
3130
+ :param merge_queue: (experimental) Whether a merge queue should be used on this repository to merge pull requests. Requires additional configuration of the repositories branch protection rules. Default: false
3131
+ :param merge_queue_options: (experimental) Options for MergeQueue. Default: - default options
2268
3132
  :param mergify: (experimental) Whether mergify should be enabled on this repository or not. Default: true
2269
3133
  :param mergify_options: (experimental) Options for Mergify. Default: - default options
2270
3134
  :param projen_credentials: (experimental) Choose a method of providing GitHub API access for projen workflows. Default: - use a personal access token named PROJEN_GITHUB_TOKEN
2271
3135
  :param projen_token_secret: (deprecated) The name of a secret which includes a GitHub Personal Access Token to be used by projen workflows. This token needs to have the ``repo``, ``workflows`` and ``packages`` scope. Default: "PROJEN_GITHUB_TOKEN"
3136
+ :param pull_request_backport: (experimental) Add a workflow that allows backport of PRs to other branches using labels. When opening a new PR add a backport label to it, and the PR will be backported to the target branches once the PR is merged. Should not be used together with mergify. Default: false
3137
+ :param pull_request_backport_options: (experimental) Options for configuring pull request backport. Default: - see defaults in ``PullRequestBackportOptions``
2272
3138
  :param pull_request_lint: (experimental) Add a workflow that performs basic checks for pull requests, like validating that PRs follow Conventional Commits. Default: true
2273
3139
  :param pull_request_lint_options: (experimental) Options for configuring a pull request linter. Default: - see defaults in ``PullRequestLintOptions``
2274
3140
  :param workflows: (experimental) Enables GitHub workflows. If this is set to ``false``, workflows will not be created. Default: true
2275
3141
 
2276
3142
  :stability: experimental
2277
3143
  '''
3144
+ if isinstance(merge_queue_options, dict):
3145
+ merge_queue_options = MergeQueueOptions(**merge_queue_options)
2278
3146
  if isinstance(mergify_options, dict):
2279
3147
  mergify_options = MergifyOptions(**mergify_options)
3148
+ if isinstance(pull_request_backport_options, dict):
3149
+ pull_request_backport_options = PullRequestBackportOptions(**pull_request_backport_options)
2280
3150
  if isinstance(pull_request_lint_options, dict):
2281
3151
  pull_request_lint_options = PullRequestLintOptions(**pull_request_lint_options)
2282
3152
  if __debug__:
2283
3153
  type_hints = typing.get_type_hints(_typecheckingstub__c22e66f011c96f13a6f4e5b07bb676bf98b477678e968ee61f79ee107a7d2bd7)
2284
3154
  check_type(argname="argument download_lfs", value=download_lfs, expected_type=type_hints["download_lfs"])
3155
+ check_type(argname="argument merge_queue", value=merge_queue, expected_type=type_hints["merge_queue"])
3156
+ check_type(argname="argument merge_queue_options", value=merge_queue_options, expected_type=type_hints["merge_queue_options"])
2285
3157
  check_type(argname="argument mergify", value=mergify, expected_type=type_hints["mergify"])
2286
3158
  check_type(argname="argument mergify_options", value=mergify_options, expected_type=type_hints["mergify_options"])
2287
3159
  check_type(argname="argument projen_credentials", value=projen_credentials, expected_type=type_hints["projen_credentials"])
2288
3160
  check_type(argname="argument projen_token_secret", value=projen_token_secret, expected_type=type_hints["projen_token_secret"])
3161
+ check_type(argname="argument pull_request_backport", value=pull_request_backport, expected_type=type_hints["pull_request_backport"])
3162
+ check_type(argname="argument pull_request_backport_options", value=pull_request_backport_options, expected_type=type_hints["pull_request_backport_options"])
2289
3163
  check_type(argname="argument pull_request_lint", value=pull_request_lint, expected_type=type_hints["pull_request_lint"])
2290
3164
  check_type(argname="argument pull_request_lint_options", value=pull_request_lint_options, expected_type=type_hints["pull_request_lint_options"])
2291
3165
  check_type(argname="argument workflows", value=workflows, expected_type=type_hints["workflows"])
2292
3166
  self._values: typing.Dict[builtins.str, typing.Any] = {}
2293
3167
  if download_lfs is not None:
2294
3168
  self._values["download_lfs"] = download_lfs
3169
+ if merge_queue is not None:
3170
+ self._values["merge_queue"] = merge_queue
3171
+ if merge_queue_options is not None:
3172
+ self._values["merge_queue_options"] = merge_queue_options
2295
3173
  if mergify is not None:
2296
3174
  self._values["mergify"] = mergify
2297
3175
  if mergify_options is not None:
@@ -2300,6 +3178,10 @@ class GitHubOptions:
2300
3178
  self._values["projen_credentials"] = projen_credentials
2301
3179
  if projen_token_secret is not None:
2302
3180
  self._values["projen_token_secret"] = projen_token_secret
3181
+ if pull_request_backport is not None:
3182
+ self._values["pull_request_backport"] = pull_request_backport
3183
+ if pull_request_backport_options is not None:
3184
+ self._values["pull_request_backport_options"] = pull_request_backport_options
2303
3185
  if pull_request_lint is not None:
2304
3186
  self._values["pull_request_lint"] = pull_request_lint
2305
3187
  if pull_request_lint_options is not None:
@@ -2318,6 +3200,30 @@ class GitHubOptions:
2318
3200
  result = self._values.get("download_lfs")
2319
3201
  return typing.cast(typing.Optional[builtins.bool], result)
2320
3202
 
3203
+ @builtins.property
3204
+ def merge_queue(self) -> typing.Optional[builtins.bool]:
3205
+ '''(experimental) Whether a merge queue should be used on this repository to merge pull requests.
3206
+
3207
+ Requires additional configuration of the repositories branch protection rules.
3208
+
3209
+ :default: false
3210
+
3211
+ :stability: experimental
3212
+ '''
3213
+ result = self._values.get("merge_queue")
3214
+ return typing.cast(typing.Optional[builtins.bool], result)
3215
+
3216
+ @builtins.property
3217
+ def merge_queue_options(self) -> typing.Optional["MergeQueueOptions"]:
3218
+ '''(experimental) Options for MergeQueue.
3219
+
3220
+ :default: - default options
3221
+
3222
+ :stability: experimental
3223
+ '''
3224
+ result = self._values.get("merge_queue_options")
3225
+ return typing.cast(typing.Optional["MergeQueueOptions"], result)
3226
+
2321
3227
  @builtins.property
2322
3228
  def mergify(self) -> typing.Optional[builtins.bool]:
2323
3229
  '''(experimental) Whether mergify should be enabled on this repository or not.
@@ -2367,6 +3273,35 @@ class GitHubOptions:
2367
3273
  result = self._values.get("projen_token_secret")
2368
3274
  return typing.cast(typing.Optional[builtins.str], result)
2369
3275
 
3276
+ @builtins.property
3277
+ def pull_request_backport(self) -> typing.Optional[builtins.bool]:
3278
+ '''(experimental) Add a workflow that allows backport of PRs to other branches using labels.
3279
+
3280
+ When opening a new PR add a backport label to it,
3281
+ and the PR will be backported to the target branches once the PR is merged.
3282
+
3283
+ Should not be used together with mergify.
3284
+
3285
+ :default: false
3286
+
3287
+ :stability: experimental
3288
+ '''
3289
+ result = self._values.get("pull_request_backport")
3290
+ return typing.cast(typing.Optional[builtins.bool], result)
3291
+
3292
+ @builtins.property
3293
+ def pull_request_backport_options(
3294
+ self,
3295
+ ) -> typing.Optional["PullRequestBackportOptions"]:
3296
+ '''(experimental) Options for configuring pull request backport.
3297
+
3298
+ :default: - see defaults in ``PullRequestBackportOptions``
3299
+
3300
+ :stability: experimental
3301
+ '''
3302
+ result = self._values.get("pull_request_backport_options")
3303
+ return typing.cast(typing.Optional["PullRequestBackportOptions"], result)
3304
+
2370
3305
  @builtins.property
2371
3306
  def pull_request_lint(self) -> typing.Optional[builtins.bool]:
2372
3307
  '''(experimental) Add a workflow that performs basic checks for pull requests, like validating that PRs follow Conventional Commits.
@@ -3262,8 +4197,10 @@ class GithubCredentials(
3262
4197
  cls,
3263
4198
  *,
3264
4199
  app_id_secret: typing.Optional[builtins.str] = None,
4200
+ owner: typing.Optional[builtins.str] = None,
3265
4201
  permissions: typing.Optional[typing.Union[_AppPermissions_59709d51, typing.Dict[builtins.str, typing.Any]]] = None,
3266
4202
  private_key_secret: typing.Optional[builtins.str] = None,
4203
+ repositories: typing.Optional[typing.Sequence[builtins.str]] = None,
3267
4204
  ) -> "GithubCredentials":
3268
4205
  '''(experimental) Provide API access through a GitHub App.
3269
4206
 
@@ -3271,19 +4208,23 @@ class GithubCredentials(
3271
4208
  private key must be added as secrets to the repo. The name of the secrets
3272
4209
  can be specified here.
3273
4210
 
3274
- :param app_id_secret:
4211
+ :param app_id_secret: (experimental) The secret containing the GitHub App ID. Default: "PROJEN_APP_ID"
4212
+ :param owner: (experimental) The owner of the GitHub App installation. Default: - if empty, defaults to the current repository owner
3275
4213
  :param permissions: (experimental) The permissions granted to the token. Default: - all permissions granted to the app
3276
- :param private_key_secret:
4214
+ :param private_key_secret: (experimental) The secret containing the GitHub App private key. Escaped newlines (\\n) will be automatically replaced with actual newlines. Default: "PROJEN_APP_PRIVATE_KEY"
4215
+ :param repositories: (experimental) List of repositories to grant access to. Default: - if owner is set and repositories is empty, access will be scoped to all repositories in the provided repository owner's installation. If owner and repositories are empty, access will be scoped to only the current repository.
3277
4216
 
3278
4217
  :default: - app id stored in "PROJEN_APP_ID" and private key stored in "PROJEN_APP_PRIVATE_KEY" with all permissions attached to the app
3279
4218
 
3280
- :see: https://projen.io/github.html#github-app
4219
+ :see: https://projen.io/docs/integrations/github/#github-app
3281
4220
  :stability: experimental
3282
4221
  '''
3283
4222
  options = GithubCredentialsAppOptions(
3284
4223
  app_id_secret=app_id_secret,
4224
+ owner=owner,
3285
4225
  permissions=permissions,
3286
4226
  private_key_secret=private_key_secret,
4227
+ repositories=repositories,
3287
4228
  )
3288
4229
 
3289
4230
  return typing.cast("GithubCredentials", jsii.sinvoke(cls, "fromApp", [options]))
@@ -3338,8 +4279,10 @@ class GithubCredentials(
3338
4279
  jsii_struct_bases=[],
3339
4280
  name_mapping={
3340
4281
  "app_id_secret": "appIdSecret",
4282
+ "owner": "owner",
3341
4283
  "permissions": "permissions",
3342
4284
  "private_key_secret": "privateKeySecret",
4285
+ "repositories": "repositories",
3343
4286
  },
3344
4287
  )
3345
4288
  class GithubCredentialsAppOptions:
@@ -3347,14 +4290,18 @@ class GithubCredentialsAppOptions:
3347
4290
  self,
3348
4291
  *,
3349
4292
  app_id_secret: typing.Optional[builtins.str] = None,
4293
+ owner: typing.Optional[builtins.str] = None,
3350
4294
  permissions: typing.Optional[typing.Union[_AppPermissions_59709d51, typing.Dict[builtins.str, typing.Any]]] = None,
3351
4295
  private_key_secret: typing.Optional[builtins.str] = None,
4296
+ repositories: typing.Optional[typing.Sequence[builtins.str]] = None,
3352
4297
  ) -> None:
3353
4298
  '''(experimental) Options for ``GithubCredentials.fromApp``.
3354
4299
 
3355
- :param app_id_secret:
4300
+ :param app_id_secret: (experimental) The secret containing the GitHub App ID. Default: "PROJEN_APP_ID"
4301
+ :param owner: (experimental) The owner of the GitHub App installation. Default: - if empty, defaults to the current repository owner
3356
4302
  :param permissions: (experimental) The permissions granted to the token. Default: - all permissions granted to the app
3357
- :param private_key_secret:
4303
+ :param private_key_secret: (experimental) The secret containing the GitHub App private key. Escaped newlines (\\n) will be automatically replaced with actual newlines. Default: "PROJEN_APP_PRIVATE_KEY"
4304
+ :param repositories: (experimental) List of repositories to grant access to. Default: - if owner is set and repositories is empty, access will be scoped to all repositories in the provided repository owner's installation. If owner and repositories are empty, access will be scoped to only the current repository.
3358
4305
 
3359
4306
  :stability: experimental
3360
4307
  '''
@@ -3363,24 +4310,44 @@ class GithubCredentialsAppOptions:
3363
4310
  if __debug__:
3364
4311
  type_hints = typing.get_type_hints(_typecheckingstub__cfe552d6288d1f706792afe5f041e666db050b8d0d3bb7062899a3bdefe652a8)
3365
4312
  check_type(argname="argument app_id_secret", value=app_id_secret, expected_type=type_hints["app_id_secret"])
4313
+ check_type(argname="argument owner", value=owner, expected_type=type_hints["owner"])
3366
4314
  check_type(argname="argument permissions", value=permissions, expected_type=type_hints["permissions"])
3367
4315
  check_type(argname="argument private_key_secret", value=private_key_secret, expected_type=type_hints["private_key_secret"])
4316
+ check_type(argname="argument repositories", value=repositories, expected_type=type_hints["repositories"])
3368
4317
  self._values: typing.Dict[builtins.str, typing.Any] = {}
3369
4318
  if app_id_secret is not None:
3370
4319
  self._values["app_id_secret"] = app_id_secret
4320
+ if owner is not None:
4321
+ self._values["owner"] = owner
3371
4322
  if permissions is not None:
3372
4323
  self._values["permissions"] = permissions
3373
4324
  if private_key_secret is not None:
3374
4325
  self._values["private_key_secret"] = private_key_secret
4326
+ if repositories is not None:
4327
+ self._values["repositories"] = repositories
3375
4328
 
3376
4329
  @builtins.property
3377
4330
  def app_id_secret(self) -> typing.Optional[builtins.str]:
3378
- '''
4331
+ '''(experimental) The secret containing the GitHub App ID.
4332
+
4333
+ :default: "PROJEN_APP_ID"
4334
+
3379
4335
  :stability: experimental
3380
4336
  '''
3381
4337
  result = self._values.get("app_id_secret")
3382
4338
  return typing.cast(typing.Optional[builtins.str], result)
3383
4339
 
4340
+ @builtins.property
4341
+ def owner(self) -> typing.Optional[builtins.str]:
4342
+ '''(experimental) The owner of the GitHub App installation.
4343
+
4344
+ :default: - if empty, defaults to the current repository owner
4345
+
4346
+ :stability: experimental
4347
+ '''
4348
+ result = self._values.get("owner")
4349
+ return typing.cast(typing.Optional[builtins.str], result)
4350
+
3384
4351
  @builtins.property
3385
4352
  def permissions(self) -> typing.Optional[_AppPermissions_59709d51]:
3386
4353
  '''(experimental) The permissions granted to the token.
@@ -3394,12 +4361,31 @@ class GithubCredentialsAppOptions:
3394
4361
 
3395
4362
  @builtins.property
3396
4363
  def private_key_secret(self) -> typing.Optional[builtins.str]:
3397
- '''
4364
+ '''(experimental) The secret containing the GitHub App private key.
4365
+
4366
+ Escaped newlines (\\n) will be automatically replaced with actual newlines.
4367
+
4368
+ :default: "PROJEN_APP_PRIVATE_KEY"
4369
+
3398
4370
  :stability: experimental
3399
4371
  '''
3400
4372
  result = self._values.get("private_key_secret")
3401
4373
  return typing.cast(typing.Optional[builtins.str], result)
3402
4374
 
4375
+ @builtins.property
4376
+ def repositories(self) -> typing.Optional[typing.List[builtins.str]]:
4377
+ '''(experimental) List of repositories to grant access to.
4378
+
4379
+ :default:
4380
+
4381
+ - if owner is set and repositories is empty, access will be scoped to all repositories in the provided repository owner's installation.
4382
+ If owner and repositories are empty, access will be scoped to only the current repository.
4383
+
4384
+ :stability: experimental
4385
+ '''
4386
+ result = self._values.get("repositories")
4387
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
4388
+
3403
4389
  def __eq__(self, rhs: typing.Any) -> builtins.bool:
3404
4390
  return isinstance(rhs, self.__class__) and rhs._values == self._values
3405
4391
 
@@ -3470,14 +4456,20 @@ class GithubWorkflow(
3470
4456
  github: GitHub,
3471
4457
  name: builtins.str,
3472
4458
  *,
3473
- concurrency: typing.Optional[builtins.str] = None,
4459
+ concurrency_options: typing.Optional[typing.Union[ConcurrencyOptions, typing.Dict[builtins.str, typing.Any]]] = None,
4460
+ env: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
4461
+ file_name: typing.Optional[builtins.str] = None,
3474
4462
  force: typing.Optional[builtins.bool] = None,
4463
+ limit_concurrency: typing.Optional[builtins.bool] = None,
3475
4464
  ) -> None:
3476
4465
  '''
3477
- :param github: -
3478
- :param name: -
3479
- :param concurrency: (experimental) Concurrency ensures that only a single job or workflow using the same concurrency group will run at a time. Currently in beta. Default: - disabled
4466
+ :param github: The GitHub component of the project this workflow belongs to.
4467
+ :param name: The name of the workflow, displayed under the repository's "Actions" tab.
4468
+ :param concurrency_options: (experimental) Concurrency ensures that only a single job or workflow using the same concurrency group will run at a time. Currently in beta. Default: - { group: ${{ github.workflow }}, cancelInProgress: false }
4469
+ :param env: (experimental) Additional environment variables to set for the workflow. Default: - no additional environment variables
4470
+ :param file_name: (experimental) Set a custom file name for the workflow definition file. Must include either a .yml or .yaml file extension. Use this option to set a file name for the workflow file, that is different than the display name. Default: - a path-safe version of the workflow name plus the .yml file ending, e.g. build.yml
3480
4471
  :param force: (experimental) Force the creation of the workflow even if ``workflows`` is disabled in ``GitHub``. Default: false
4472
+ :param limit_concurrency: (experimental) Enable concurrency limitations. Use ``concurrencyOptions`` to configure specific non default values. Default: false
3481
4473
 
3482
4474
  :stability: experimental
3483
4475
  '''
@@ -3485,7 +4477,13 @@ class GithubWorkflow(
3485
4477
  type_hints = typing.get_type_hints(_typecheckingstub__ca4f375b4fda039fc4fb5b2f4ad26a9d1695085d170d2d76e6d720c7cc22d02a)
3486
4478
  check_type(argname="argument github", value=github, expected_type=type_hints["github"])
3487
4479
  check_type(argname="argument name", value=name, expected_type=type_hints["name"])
3488
- options = GithubWorkflowOptions(concurrency=concurrency, force=force)
4480
+ options = GithubWorkflowOptions(
4481
+ concurrency_options=concurrency_options,
4482
+ env=env,
4483
+ file_name=file_name,
4484
+ force=force,
4485
+ limit_concurrency=limit_concurrency,
4486
+ )
3489
4487
 
3490
4488
  jsii.create(self.__class__, self, [github, name, options])
3491
4489
 
@@ -3697,7 +4695,7 @@ class GithubWorkflow(
3697
4695
  self,
3698
4696
  jobs: typing.Mapping[builtins.str, typing.Union[typing.Union[_JobCallingReusableWorkflow_12ad1018, typing.Dict[builtins.str, typing.Any]], typing.Union[_Job_20ffcf45, typing.Dict[builtins.str, typing.Any]]]],
3699
4697
  ) -> None:
3700
- '''(experimental) Updates jobs for this worklow Does a complete replace, it does not try to merge the jobs.
4698
+ '''(experimental) Updates jobs for this workflow Does a complete replace, it does not try to merge the jobs.
3701
4699
 
3702
4700
  :param jobs: Jobs to update.
3703
4701
 
@@ -3708,11 +4706,28 @@ class GithubWorkflow(
3708
4706
  check_type(argname="argument jobs", value=jobs, expected_type=type_hints["jobs"])
3709
4707
  return typing.cast(None, jsii.invoke(self, "updateJobs", [jobs]))
3710
4708
 
4709
+ @builtins.property
4710
+ @jsii.member(jsii_name="jobs")
4711
+ def jobs(
4712
+ self,
4713
+ ) -> typing.Mapping[builtins.str, typing.Union[_JobCallingReusableWorkflow_12ad1018, _Job_20ffcf45]]:
4714
+ '''(experimental) All current jobs of the workflow.
4715
+
4716
+ This is a read-only copy, use the respective helper methods to add, update or remove jobs.
4717
+
4718
+ :stability: experimental
4719
+ '''
4720
+ return typing.cast(typing.Mapping[builtins.str, typing.Union[_JobCallingReusableWorkflow_12ad1018, _Job_20ffcf45]], jsii.get(self, "jobs"))
4721
+
3711
4722
  @builtins.property
3712
4723
  @jsii.member(jsii_name="name")
3713
4724
  def name(self) -> builtins.str:
3714
4725
  '''(experimental) The name of the workflow.
3715
4726
 
4727
+ GitHub displays the names of your workflows under your repository's
4728
+ "Actions" tab.
4729
+
4730
+ :see: https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions#name
3716
4731
  :stability: experimental
3717
4732
  '''
3718
4733
  return typing.cast(builtins.str, jsii.get(self, "name"))
@@ -3728,14 +4743,23 @@ class GithubWorkflow(
3728
4743
 
3729
4744
  @builtins.property
3730
4745
  @jsii.member(jsii_name="concurrency")
3731
- def concurrency(self) -> typing.Optional[builtins.str]:
3732
- '''(experimental) Concurrency ensures that only a single job or workflow using the same concurrency group will run at a time.
4746
+ def concurrency(self) -> typing.Optional[ConcurrencyOptions]:
4747
+ '''(experimental) The concurrency configuration of the workflow.
4748
+
4749
+ undefined means no concurrency limitations.
4750
+
4751
+ :stability: experimental
4752
+ '''
4753
+ return typing.cast(typing.Optional[ConcurrencyOptions], jsii.get(self, "concurrency"))
3733
4754
 
3734
- :default: disabled
4755
+ @builtins.property
4756
+ @jsii.member(jsii_name="env")
4757
+ def env(self) -> typing.Optional[typing.Mapping[builtins.str, builtins.str]]:
4758
+ '''(experimental) Additional environment variables to set for the workflow.
3735
4759
 
3736
4760
  :stability: experimental
3737
4761
  '''
3738
- return typing.cast(typing.Optional[builtins.str], jsii.get(self, "concurrency"))
4762
+ return typing.cast(typing.Optional[typing.Mapping[builtins.str, builtins.str]], jsii.get(self, "env"))
3739
4763
 
3740
4764
  @builtins.property
3741
4765
  @jsii.member(jsii_name="file")
@@ -3772,62 +4796,312 @@ class GithubWorkflow(
3772
4796
  if __debug__:
3773
4797
  type_hints = typing.get_type_hints(_typecheckingstub__a6273080200c7722c9774364ee8460bccd3337cd48edc420530ca75f7c2974d9)
3774
4798
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
3775
- jsii.set(self, "runName", value)
4799
+ jsii.set(self, "runName", value) # pyright: ignore[reportArgumentType]
3776
4800
 
3777
4801
 
3778
4802
  @jsii.data_type(
3779
4803
  jsii_type="projen.github.GithubWorkflowOptions",
3780
4804
  jsii_struct_bases=[],
3781
- name_mapping={"concurrency": "concurrency", "force": "force"},
4805
+ name_mapping={
4806
+ "concurrency_options": "concurrencyOptions",
4807
+ "env": "env",
4808
+ "file_name": "fileName",
4809
+ "force": "force",
4810
+ "limit_concurrency": "limitConcurrency",
4811
+ },
3782
4812
  )
3783
4813
  class GithubWorkflowOptions:
3784
4814
  def __init__(
3785
4815
  self,
3786
4816
  *,
3787
- concurrency: typing.Optional[builtins.str] = None,
4817
+ concurrency_options: typing.Optional[typing.Union[ConcurrencyOptions, typing.Dict[builtins.str, typing.Any]]] = None,
4818
+ env: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
4819
+ file_name: typing.Optional[builtins.str] = None,
3788
4820
  force: typing.Optional[builtins.bool] = None,
4821
+ limit_concurrency: typing.Optional[builtins.bool] = None,
3789
4822
  ) -> None:
3790
4823
  '''(experimental) Options for ``GithubWorkflow``.
3791
4824
 
3792
- :param concurrency: (experimental) Concurrency ensures that only a single job or workflow using the same concurrency group will run at a time. Currently in beta. Default: - disabled
4825
+ :param concurrency_options: (experimental) Concurrency ensures that only a single job or workflow using the same concurrency group will run at a time. Currently in beta. Default: - { group: ${{ github.workflow }}, cancelInProgress: false }
4826
+ :param env: (experimental) Additional environment variables to set for the workflow. Default: - no additional environment variables
4827
+ :param file_name: (experimental) Set a custom file name for the workflow definition file. Must include either a .yml or .yaml file extension. Use this option to set a file name for the workflow file, that is different than the display name. Default: - a path-safe version of the workflow name plus the .yml file ending, e.g. build.yml
3793
4828
  :param force: (experimental) Force the creation of the workflow even if ``workflows`` is disabled in ``GitHub``. Default: false
4829
+ :param limit_concurrency: (experimental) Enable concurrency limitations. Use ``concurrencyOptions`` to configure specific non default values. Default: false
3794
4830
 
3795
4831
  :stability: experimental
3796
4832
  '''
4833
+ if isinstance(concurrency_options, dict):
4834
+ concurrency_options = ConcurrencyOptions(**concurrency_options)
3797
4835
  if __debug__:
3798
4836
  type_hints = typing.get_type_hints(_typecheckingstub__c779b00d3df0cff3a9570cc6ed35339952399a898d5854423c3329b55bf736ec)
3799
- check_type(argname="argument concurrency", value=concurrency, expected_type=type_hints["concurrency"])
4837
+ check_type(argname="argument concurrency_options", value=concurrency_options, expected_type=type_hints["concurrency_options"])
4838
+ check_type(argname="argument env", value=env, expected_type=type_hints["env"])
4839
+ check_type(argname="argument file_name", value=file_name, expected_type=type_hints["file_name"])
3800
4840
  check_type(argname="argument force", value=force, expected_type=type_hints["force"])
4841
+ check_type(argname="argument limit_concurrency", value=limit_concurrency, expected_type=type_hints["limit_concurrency"])
3801
4842
  self._values: typing.Dict[builtins.str, typing.Any] = {}
3802
- if concurrency is not None:
3803
- self._values["concurrency"] = concurrency
4843
+ if concurrency_options is not None:
4844
+ self._values["concurrency_options"] = concurrency_options
4845
+ if env is not None:
4846
+ self._values["env"] = env
4847
+ if file_name is not None:
4848
+ self._values["file_name"] = file_name
3804
4849
  if force is not None:
3805
4850
  self._values["force"] = force
4851
+ if limit_concurrency is not None:
4852
+ self._values["limit_concurrency"] = limit_concurrency
4853
+
4854
+ @builtins.property
4855
+ def concurrency_options(self) -> typing.Optional[ConcurrencyOptions]:
4856
+ '''(experimental) Concurrency ensures that only a single job or workflow using the same concurrency group will run at a time.
4857
+
4858
+ Currently in beta.
4859
+
4860
+ :default: - { group: ${{ github.workflow }}, cancelInProgress: false }
4861
+
4862
+ :see: https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#concurrency
4863
+ :stability: experimental
4864
+ '''
4865
+ result = self._values.get("concurrency_options")
4866
+ return typing.cast(typing.Optional[ConcurrencyOptions], result)
4867
+
4868
+ @builtins.property
4869
+ def env(self) -> typing.Optional[typing.Mapping[builtins.str, builtins.str]]:
4870
+ '''(experimental) Additional environment variables to set for the workflow.
4871
+
4872
+ :default: - no additional environment variables
4873
+
4874
+ :stability: experimental
4875
+ '''
4876
+ result = self._values.get("env")
4877
+ return typing.cast(typing.Optional[typing.Mapping[builtins.str, builtins.str]], result)
4878
+
4879
+ @builtins.property
4880
+ def file_name(self) -> typing.Optional[builtins.str]:
4881
+ '''(experimental) Set a custom file name for the workflow definition file. Must include either a .yml or .yaml file extension.
4882
+
4883
+ Use this option to set a file name for the workflow file, that is different than the display name.
4884
+
4885
+ :default: - a path-safe version of the workflow name plus the .yml file ending, e.g. build.yml
4886
+
4887
+ :stability: experimental
4888
+
4889
+ Example::
4890
+
4891
+ "my-workflow.yaml"
4892
+ '''
4893
+ result = self._values.get("file_name")
4894
+ return typing.cast(typing.Optional[builtins.str], result)
4895
+
4896
+ @builtins.property
4897
+ def force(self) -> typing.Optional[builtins.bool]:
4898
+ '''(experimental) Force the creation of the workflow even if ``workflows`` is disabled in ``GitHub``.
4899
+
4900
+ :default: false
4901
+
4902
+ :stability: experimental
4903
+ '''
4904
+ result = self._values.get("force")
4905
+ return typing.cast(typing.Optional[builtins.bool], result)
4906
+
4907
+ @builtins.property
4908
+ def limit_concurrency(self) -> typing.Optional[builtins.bool]:
4909
+ '''(experimental) Enable concurrency limitations.
4910
+
4911
+ Use ``concurrencyOptions`` to configure specific non default values.
4912
+
4913
+ :default: false
4914
+
4915
+ :stability: experimental
4916
+ '''
4917
+ result = self._values.get("limit_concurrency")
4918
+ return typing.cast(typing.Optional[builtins.bool], result)
4919
+
4920
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
4921
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
4922
+
4923
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
4924
+ return not (rhs == self)
4925
+
4926
+ def __repr__(self) -> str:
4927
+ return "GithubWorkflowOptions(%s)" % ", ".join(
4928
+ k + "=" + repr(v) for k, v in self._values.items()
4929
+ )
4930
+
4931
+
4932
+ @jsii.interface(jsii_type="projen.github.IAddConditionsLater")
4933
+ class IAddConditionsLater(typing_extensions.Protocol):
4934
+ '''
4935
+ :stability: experimental
4936
+ '''
4937
+
4938
+ @jsii.member(jsii_name="render")
4939
+ def render(self) -> typing.List[builtins.str]:
4940
+ '''
4941
+ :stability: experimental
4942
+ '''
4943
+ ...
4944
+
4945
+
4946
+ class _IAddConditionsLaterProxy:
4947
+ '''
4948
+ :stability: experimental
4949
+ '''
4950
+
4951
+ __jsii_type__: typing.ClassVar[str] = "projen.github.IAddConditionsLater"
4952
+
4953
+ @jsii.member(jsii_name="render")
4954
+ def render(self) -> typing.List[builtins.str]:
4955
+ '''
4956
+ :stability: experimental
4957
+ '''
4958
+ return typing.cast(typing.List[builtins.str], jsii.invoke(self, "render", []))
4959
+
4960
+ # Adding a "__jsii_proxy_class__(): typing.Type" function to the interface
4961
+ typing.cast(typing.Any, IAddConditionsLater).__jsii_proxy_class__ = lambda : _IAddConditionsLaterProxy
4962
+
4963
+
4964
+ @jsii.enum(jsii_type="projen.github.MergeMethod")
4965
+ class MergeMethod(enum.Enum):
4966
+ '''(experimental) The merge method used to add the PR to the merge queue.
4967
+
4968
+ Behavior can be further configured in repository settings.
4969
+
4970
+ :stability: experimental
4971
+ '''
4972
+
4973
+ SQUASH = "SQUASH"
4974
+ '''
4975
+ :stability: experimental
4976
+ '''
4977
+ MERGE = "MERGE"
4978
+ '''
4979
+ :stability: experimental
4980
+ '''
4981
+ REBASE = "REBASE"
4982
+ '''
4983
+ :stability: experimental
4984
+ '''
4985
+
4986
+
4987
+ class MergeQueue(
4988
+ _Component_2b0ad27f,
4989
+ metaclass=jsii.JSIIMeta,
4990
+ jsii_type="projen.github.MergeQueue",
4991
+ ):
4992
+ '''(experimental) Merge pull requests using a merge queue.
4993
+
4994
+ :stability: experimental
4995
+ '''
4996
+
4997
+ def __init__(
4998
+ self,
4999
+ scope: _constructs_77d1e7e8.IConstruct,
5000
+ *,
5001
+ auto_queue: typing.Optional[builtins.bool] = None,
5002
+ auto_queue_options: typing.Optional[typing.Union[AutoQueueOptions, typing.Dict[builtins.str, typing.Any]]] = None,
5003
+ target_branches: typing.Optional[typing.Sequence[builtins.str]] = None,
5004
+ ) -> None:
5005
+ '''
5006
+ :param scope: -
5007
+ :param auto_queue: (experimental) Should pull requests be queued automatically to be merged once they pass required checks. Default: true
5008
+ :param auto_queue_options: (experimental) Configure auto-queue pull requests. Default: - see AutoQueueOptions
5009
+ :param target_branches: (experimental) The branches that can be merged into using MergeQueue. Default: - all branches
5010
+
5011
+ :stability: experimental
5012
+ '''
5013
+ if __debug__:
5014
+ type_hints = typing.get_type_hints(_typecheckingstub__8d0860f4805d4f3404f9b940157e555ab934aaea8c3deecc2681f63f23129dc7)
5015
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
5016
+ options = MergeQueueOptions(
5017
+ auto_queue=auto_queue,
5018
+ auto_queue_options=auto_queue_options,
5019
+ target_branches=target_branches,
5020
+ )
5021
+
5022
+ jsii.create(self.__class__, self, [scope, options])
5023
+
5024
+ @jsii.member(jsii_name="preSynthesize")
5025
+ def pre_synthesize(self) -> None:
5026
+ '''(experimental) Called before synthesis.
5027
+
5028
+ :stability: experimental
5029
+ '''
5030
+ return typing.cast(None, jsii.invoke(self, "preSynthesize", []))
5031
+
5032
+
5033
+ @jsii.data_type(
5034
+ jsii_type="projen.github.MergeQueueOptions",
5035
+ jsii_struct_bases=[],
5036
+ name_mapping={
5037
+ "auto_queue": "autoQueue",
5038
+ "auto_queue_options": "autoQueueOptions",
5039
+ "target_branches": "targetBranches",
5040
+ },
5041
+ )
5042
+ class MergeQueueOptions:
5043
+ def __init__(
5044
+ self,
5045
+ *,
5046
+ auto_queue: typing.Optional[builtins.bool] = None,
5047
+ auto_queue_options: typing.Optional[typing.Union[AutoQueueOptions, typing.Dict[builtins.str, typing.Any]]] = None,
5048
+ target_branches: typing.Optional[typing.Sequence[builtins.str]] = None,
5049
+ ) -> None:
5050
+ '''(experimental) Options for 'MergeQueue'.
5051
+
5052
+ :param auto_queue: (experimental) Should pull requests be queued automatically to be merged once they pass required checks. Default: true
5053
+ :param auto_queue_options: (experimental) Configure auto-queue pull requests. Default: - see AutoQueueOptions
5054
+ :param target_branches: (experimental) The branches that can be merged into using MergeQueue. Default: - all branches
5055
+
5056
+ :stability: experimental
5057
+ '''
5058
+ if isinstance(auto_queue_options, dict):
5059
+ auto_queue_options = AutoQueueOptions(**auto_queue_options)
5060
+ if __debug__:
5061
+ type_hints = typing.get_type_hints(_typecheckingstub__5ed41b74ffbee4fd52a12674b58bd68e113a707d7c3dec6e1ecb7f9647debbc3)
5062
+ check_type(argname="argument auto_queue", value=auto_queue, expected_type=type_hints["auto_queue"])
5063
+ check_type(argname="argument auto_queue_options", value=auto_queue_options, expected_type=type_hints["auto_queue_options"])
5064
+ check_type(argname="argument target_branches", value=target_branches, expected_type=type_hints["target_branches"])
5065
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
5066
+ if auto_queue is not None:
5067
+ self._values["auto_queue"] = auto_queue
5068
+ if auto_queue_options is not None:
5069
+ self._values["auto_queue_options"] = auto_queue_options
5070
+ if target_branches is not None:
5071
+ self._values["target_branches"] = target_branches
5072
+
5073
+ @builtins.property
5074
+ def auto_queue(self) -> typing.Optional[builtins.bool]:
5075
+ '''(experimental) Should pull requests be queued automatically to be merged once they pass required checks.
5076
+
5077
+ :default: true
3806
5078
 
3807
- @builtins.property
3808
- def concurrency(self) -> typing.Optional[builtins.str]:
3809
- '''(experimental) Concurrency ensures that only a single job or workflow using the same concurrency group will run at a time.
5079
+ :stability: experimental
5080
+ '''
5081
+ result = self._values.get("auto_queue")
5082
+ return typing.cast(typing.Optional[builtins.bool], result)
3810
5083
 
3811
- Currently in beta.
5084
+ @builtins.property
5085
+ def auto_queue_options(self) -> typing.Optional[AutoQueueOptions]:
5086
+ '''(experimental) Configure auto-queue pull requests.
3812
5087
 
3813
- :default: - disabled
5088
+ :default: - see AutoQueueOptions
3814
5089
 
3815
- :see: https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#concurrency
3816
5090
  :stability: experimental
3817
5091
  '''
3818
- result = self._values.get("concurrency")
3819
- return typing.cast(typing.Optional[builtins.str], result)
5092
+ result = self._values.get("auto_queue_options")
5093
+ return typing.cast(typing.Optional[AutoQueueOptions], result)
3820
5094
 
3821
5095
  @builtins.property
3822
- def force(self) -> typing.Optional[builtins.bool]:
3823
- '''(experimental) Force the creation of the workflow even if ``workflows`` is disabled in ``GitHub``.
5096
+ def target_branches(self) -> typing.Optional[typing.List[builtins.str]]:
5097
+ '''(experimental) The branches that can be merged into using MergeQueue.
3824
5098
 
3825
- :default: false
5099
+ :default: - all branches
3826
5100
 
3827
5101
  :stability: experimental
3828
5102
  '''
3829
- result = self._values.get("force")
3830
- return typing.cast(typing.Optional[builtins.bool], result)
5103
+ result = self._values.get("target_branches")
5104
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
3831
5105
 
3832
5106
  def __eq__(self, rhs: typing.Any) -> builtins.bool:
3833
5107
  return isinstance(rhs, self.__class__) and rhs._values == self._values
@@ -3836,43 +5110,11 @@ class GithubWorkflowOptions:
3836
5110
  return not (rhs == self)
3837
5111
 
3838
5112
  def __repr__(self) -> str:
3839
- return "GithubWorkflowOptions(%s)" % ", ".join(
5113
+ return "MergeQueueOptions(%s)" % ", ".join(
3840
5114
  k + "=" + repr(v) for k, v in self._values.items()
3841
5115
  )
3842
5116
 
3843
5117
 
3844
- @jsii.interface(jsii_type="projen.github.IAddConditionsLater")
3845
- class IAddConditionsLater(typing_extensions.Protocol):
3846
- '''
3847
- :stability: experimental
3848
- '''
3849
-
3850
- @jsii.member(jsii_name="render")
3851
- def render(self) -> typing.List[builtins.str]:
3852
- '''
3853
- :stability: experimental
3854
- '''
3855
- ...
3856
-
3857
-
3858
- class _IAddConditionsLaterProxy:
3859
- '''
3860
- :stability: experimental
3861
- '''
3862
-
3863
- __jsii_type__: typing.ClassVar[str] = "projen.github.IAddConditionsLater"
3864
-
3865
- @jsii.member(jsii_name="render")
3866
- def render(self) -> typing.List[builtins.str]:
3867
- '''
3868
- :stability: experimental
3869
- '''
3870
- return typing.cast(typing.List[builtins.str], jsii.invoke(self, "render", []))
3871
-
3872
- # Adding a "__jsii_proxy_class__(): typing.Type" function to the interface
3873
- typing.cast(typing.Any, IAddConditionsLater).__jsii_proxy_class__ = lambda : _IAddConditionsLaterProxy
3874
-
3875
-
3876
5118
  class Mergify(
3877
5119
  _Component_2b0ad27f,
3878
5120
  metaclass=jsii.JSIIMeta,
@@ -3891,8 +5133,8 @@ class Mergify(
3891
5133
  ) -> None:
3892
5134
  '''
3893
5135
  :param github: -
3894
- :param queues:
3895
- :param rules:
5136
+ :param queues: (experimental) The available merge queues.
5137
+ :param rules: (experimental) Pull request automation rules.
3896
5138
 
3897
5139
  :stability: experimental
3898
5140
  '''
@@ -3907,23 +5149,32 @@ class Mergify(
3907
5149
  def add_queue(
3908
5150
  self,
3909
5151
  *,
3910
- conditions: typing.Sequence[typing.Union[builtins.str, typing.Union["MergifyConditionalOperator", typing.Dict[builtins.str, typing.Any]]]],
5152
+ commit_message_template: builtins.str,
3911
5153
  name: builtins.str,
5154
+ conditions: typing.Optional[typing.Sequence[typing.Union[builtins.str, typing.Union["MergifyConditionalOperator", typing.Dict[builtins.str, typing.Any]]]]] = None,
5155
+ merge_conditions: typing.Optional[typing.Sequence[typing.Union[builtins.str, typing.Union["MergifyConditionalOperator", typing.Dict[builtins.str, typing.Any]]]]] = None,
3912
5156
  merge_method: typing.Optional[builtins.str] = None,
5157
+ queue_conditions: typing.Optional[typing.Sequence[typing.Union[builtins.str, typing.Union["MergifyConditionalOperator", typing.Dict[builtins.str, typing.Any]]]]] = None,
3913
5158
  update_method: typing.Optional[builtins.str] = None,
3914
5159
  ) -> None:
3915
5160
  '''
3916
- :param conditions: (experimental) A list of Conditions string that must match against the pull request for the pull request to be added to the queue.
5161
+ :param commit_message_template: (experimental) Template to use as the commit message when using the merge or squash merge method.
3917
5162
  :param name: (experimental) The name of the queue.
5163
+ :param conditions: (deprecated) The list of conditions that needs to match to queue the pull request.
5164
+ :param merge_conditions: (experimental) The list of conditions to match to get the queued pull request merged. This automatically includes the queueConditions. In case of speculative merge pull request, the merge conditions are evaluated against the temporary pull request instead of the original one.
3918
5165
  :param merge_method: (experimental) Merge method to use. Possible values are ``merge``, ``squash``, ``rebase`` or ``fast-forward``. ``fast-forward`` is not supported on queues with ``speculative_checks`` > 1, ``batch_size`` > 1, or with ``allow_inplace_checks`` set to false. Default: "merge"
5166
+ :param queue_conditions: (experimental) The list of conditions that needs to match to queue the pull request.
3919
5167
  :param update_method: (experimental) Method to use to update the pull request with its base branch when the speculative check is done in-place. Possible values: - ``merge`` to merge the base branch into the pull request. - ``rebase`` to rebase the pull request against its base branch. Note that the ``rebase`` method has some drawbacks, see Mergify docs for details. Default: - ``merge`` for all merge methods except ``fast-forward`` where ``rebase`` is used
3920
5168
 
3921
5169
  :stability: experimental
3922
5170
  '''
3923
5171
  queue = MergifyQueue(
3924
- conditions=conditions,
5172
+ commit_message_template=commit_message_template,
3925
5173
  name=name,
5174
+ conditions=conditions,
5175
+ merge_conditions=merge_conditions,
3926
5176
  merge_method=merge_method,
5177
+ queue_conditions=queue_conditions,
3927
5178
  update_method=update_method,
3928
5179
  )
3929
5180
 
@@ -4025,10 +5276,14 @@ class MergifyOptions:
4025
5276
  queues: typing.Optional[typing.Sequence[typing.Union["MergifyQueue", typing.Dict[builtins.str, typing.Any]]]] = None,
4026
5277
  rules: typing.Optional[typing.Sequence[typing.Union["MergifyRule", typing.Dict[builtins.str, typing.Any]]]] = None,
4027
5278
  ) -> None:
4028
- '''
4029
- :param queues:
4030
- :param rules:
5279
+ '''(experimental) Configure Mergify.
4031
5280
 
5281
+ This currently only offers a subset of options available.
5282
+
5283
+ :param queues: (experimental) The available merge queues.
5284
+ :param rules: (experimental) Pull request automation rules.
5285
+
5286
+ :see: https://docs.mergify.com/configuration/file-format/
4032
5287
  :stability: experimental
4033
5288
  '''
4034
5289
  if __debug__:
@@ -4043,7 +5298,8 @@ class MergifyOptions:
4043
5298
 
4044
5299
  @builtins.property
4045
5300
  def queues(self) -> typing.Optional[typing.List["MergifyQueue"]]:
4046
- '''
5301
+ '''(experimental) The available merge queues.
5302
+
4047
5303
  :stability: experimental
4048
5304
  '''
4049
5305
  result = self._values.get("queues")
@@ -4051,7 +5307,8 @@ class MergifyOptions:
4051
5307
 
4052
5308
  @builtins.property
4053
5309
  def rules(self) -> typing.Optional[typing.List["MergifyRule"]]:
4054
- '''
5310
+ '''(experimental) Pull request automation rules.
5311
+
4055
5312
  :stability: experimental
4056
5313
  '''
4057
5314
  result = self._values.get("rules")
@@ -4073,9 +5330,12 @@ class MergifyOptions:
4073
5330
  jsii_type="projen.github.MergifyQueue",
4074
5331
  jsii_struct_bases=[],
4075
5332
  name_mapping={
4076
- "conditions": "conditions",
5333
+ "commit_message_template": "commitMessageTemplate",
4077
5334
  "name": "name",
5335
+ "conditions": "conditions",
5336
+ "merge_conditions": "mergeConditions",
4078
5337
  "merge_method": "mergeMethod",
5338
+ "queue_conditions": "queueConditions",
4079
5339
  "update_method": "updateMethod",
4080
5340
  },
4081
5341
  )
@@ -4083,46 +5343,58 @@ class MergifyQueue:
4083
5343
  def __init__(
4084
5344
  self,
4085
5345
  *,
4086
- conditions: typing.Sequence[typing.Union[builtins.str, typing.Union[MergifyConditionalOperator, typing.Dict[builtins.str, typing.Any]]]],
5346
+ commit_message_template: builtins.str,
4087
5347
  name: builtins.str,
5348
+ conditions: typing.Optional[typing.Sequence[typing.Union[builtins.str, typing.Union[MergifyConditionalOperator, typing.Dict[builtins.str, typing.Any]]]]] = None,
5349
+ merge_conditions: typing.Optional[typing.Sequence[typing.Union[builtins.str, typing.Union[MergifyConditionalOperator, typing.Dict[builtins.str, typing.Any]]]]] = None,
4088
5350
  merge_method: typing.Optional[builtins.str] = None,
5351
+ queue_conditions: typing.Optional[typing.Sequence[typing.Union[builtins.str, typing.Union[MergifyConditionalOperator, typing.Dict[builtins.str, typing.Any]]]]] = None,
4089
5352
  update_method: typing.Optional[builtins.str] = None,
4090
5353
  ) -> None:
4091
5354
  '''
4092
- :param conditions: (experimental) A list of Conditions string that must match against the pull request for the pull request to be added to the queue.
5355
+ :param commit_message_template: (experimental) Template to use as the commit message when using the merge or squash merge method.
4093
5356
  :param name: (experimental) The name of the queue.
5357
+ :param conditions: (deprecated) The list of conditions that needs to match to queue the pull request.
5358
+ :param merge_conditions: (experimental) The list of conditions to match to get the queued pull request merged. This automatically includes the queueConditions. In case of speculative merge pull request, the merge conditions are evaluated against the temporary pull request instead of the original one.
4094
5359
  :param merge_method: (experimental) Merge method to use. Possible values are ``merge``, ``squash``, ``rebase`` or ``fast-forward``. ``fast-forward`` is not supported on queues with ``speculative_checks`` > 1, ``batch_size`` > 1, or with ``allow_inplace_checks`` set to false. Default: "merge"
5360
+ :param queue_conditions: (experimental) The list of conditions that needs to match to queue the pull request.
4095
5361
  :param update_method: (experimental) Method to use to update the pull request with its base branch when the speculative check is done in-place. Possible values: - ``merge`` to merge the base branch into the pull request. - ``rebase`` to rebase the pull request against its base branch. Note that the ``rebase`` method has some drawbacks, see Mergify docs for details. Default: - ``merge`` for all merge methods except ``fast-forward`` where ``rebase`` is used
4096
5362
 
4097
5363
  :stability: experimental
4098
5364
  '''
4099
5365
  if __debug__:
4100
5366
  type_hints = typing.get_type_hints(_typecheckingstub__0471efd0a49bc64e556512e765a1df23d4a975f26cb6de765579b4173907f467)
4101
- check_type(argname="argument conditions", value=conditions, expected_type=type_hints["conditions"])
5367
+ check_type(argname="argument commit_message_template", value=commit_message_template, expected_type=type_hints["commit_message_template"])
4102
5368
  check_type(argname="argument name", value=name, expected_type=type_hints["name"])
5369
+ check_type(argname="argument conditions", value=conditions, expected_type=type_hints["conditions"])
5370
+ check_type(argname="argument merge_conditions", value=merge_conditions, expected_type=type_hints["merge_conditions"])
4103
5371
  check_type(argname="argument merge_method", value=merge_method, expected_type=type_hints["merge_method"])
5372
+ check_type(argname="argument queue_conditions", value=queue_conditions, expected_type=type_hints["queue_conditions"])
4104
5373
  check_type(argname="argument update_method", value=update_method, expected_type=type_hints["update_method"])
4105
5374
  self._values: typing.Dict[builtins.str, typing.Any] = {
4106
- "conditions": conditions,
5375
+ "commit_message_template": commit_message_template,
4107
5376
  "name": name,
4108
5377
  }
5378
+ if conditions is not None:
5379
+ self._values["conditions"] = conditions
5380
+ if merge_conditions is not None:
5381
+ self._values["merge_conditions"] = merge_conditions
4109
5382
  if merge_method is not None:
4110
5383
  self._values["merge_method"] = merge_method
5384
+ if queue_conditions is not None:
5385
+ self._values["queue_conditions"] = queue_conditions
4111
5386
  if update_method is not None:
4112
5387
  self._values["update_method"] = update_method
4113
5388
 
4114
5389
  @builtins.property
4115
- def conditions(
4116
- self,
4117
- ) -> typing.List[typing.Union[builtins.str, MergifyConditionalOperator]]:
4118
- '''(experimental) A list of Conditions string that must match against the pull request for the pull request to be added to the queue.
5390
+ def commit_message_template(self) -> builtins.str:
5391
+ '''(experimental) Template to use as the commit message when using the merge or squash merge method.
4119
5392
 
4120
- :see: https://docs.mergify.com/conditions/#conditions
4121
5393
  :stability: experimental
4122
5394
  '''
4123
- result = self._values.get("conditions")
4124
- assert result is not None, "Required property 'conditions' is missing"
4125
- return typing.cast(typing.List[typing.Union[builtins.str, MergifyConditionalOperator]], result)
5395
+ result = self._values.get("commit_message_template")
5396
+ assert result is not None, "Required property 'commit_message_template' is missing"
5397
+ return typing.cast(builtins.str, result)
4126
5398
 
4127
5399
  @builtins.property
4128
5400
  def name(self) -> builtins.str:
@@ -4134,6 +5406,35 @@ class MergifyQueue:
4134
5406
  assert result is not None, "Required property 'name' is missing"
4135
5407
  return typing.cast(builtins.str, result)
4136
5408
 
5409
+ @builtins.property
5410
+ def conditions(
5411
+ self,
5412
+ ) -> typing.Optional[typing.List[typing.Union[builtins.str, MergifyConditionalOperator]]]:
5413
+ '''(deprecated) The list of conditions that needs to match to queue the pull request.
5414
+
5415
+ :deprecated: use ``queueConditions`` instead
5416
+
5417
+ :see: https://docs.mergify.com/configuration/file-format/#queue-rules
5418
+ :stability: deprecated
5419
+ '''
5420
+ result = self._values.get("conditions")
5421
+ return typing.cast(typing.Optional[typing.List[typing.Union[builtins.str, MergifyConditionalOperator]]], result)
5422
+
5423
+ @builtins.property
5424
+ def merge_conditions(
5425
+ self,
5426
+ ) -> typing.Optional[typing.List[typing.Union[builtins.str, MergifyConditionalOperator]]]:
5427
+ '''(experimental) The list of conditions to match to get the queued pull request merged.
5428
+
5429
+ This automatically includes the queueConditions.
5430
+ In case of speculative merge pull request, the merge conditions are evaluated against the temporary pull request instead of the original one.
5431
+
5432
+ :see: https://docs.mergify.com/conditions/#conditions
5433
+ :stability: experimental
5434
+ '''
5435
+ result = self._values.get("merge_conditions")
5436
+ return typing.cast(typing.Optional[typing.List[typing.Union[builtins.str, MergifyConditionalOperator]]], result)
5437
+
4137
5438
  @builtins.property
4138
5439
  def merge_method(self) -> typing.Optional[builtins.str]:
4139
5440
  '''(experimental) Merge method to use.
@@ -4148,104 +5449,336 @@ class MergifyQueue:
4148
5449
  result = self._values.get("merge_method")
4149
5450
  return typing.cast(typing.Optional[builtins.str], result)
4150
5451
 
5452
+ @builtins.property
5453
+ def queue_conditions(
5454
+ self,
5455
+ ) -> typing.Optional[typing.List[typing.Union[builtins.str, MergifyConditionalOperator]]]:
5456
+ '''(experimental) The list of conditions that needs to match to queue the pull request.
5457
+
5458
+ :see: https://docs.mergify.com/conditions/#conditions
5459
+ :stability: experimental
5460
+ '''
5461
+ result = self._values.get("queue_conditions")
5462
+ return typing.cast(typing.Optional[typing.List[typing.Union[builtins.str, MergifyConditionalOperator]]], result)
5463
+
4151
5464
  @builtins.property
4152
5465
  def update_method(self) -> typing.Optional[builtins.str]:
4153
5466
  '''(experimental) Method to use to update the pull request with its base branch when the speculative check is done in-place.
4154
5467
 
4155
- Possible values:
5468
+ Possible values:
5469
+
5470
+ - ``merge`` to merge the base branch into the pull request.
5471
+ - ``rebase`` to rebase the pull request against its base branch.
5472
+
5473
+ Note that the ``rebase`` method has some drawbacks, see Mergify docs for details.
5474
+
5475
+ :default: - ``merge`` for all merge methods except ``fast-forward`` where ``rebase`` is used
5476
+
5477
+ :see: https://docs.mergify.com/actions/queue/#queue-rules
5478
+ :stability: experimental
5479
+ '''
5480
+ result = self._values.get("update_method")
5481
+ return typing.cast(typing.Optional[builtins.str], result)
5482
+
5483
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
5484
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
5485
+
5486
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
5487
+ return not (rhs == self)
5488
+
5489
+ def __repr__(self) -> str:
5490
+ return "MergifyQueue(%s)" % ", ".join(
5491
+ k + "=" + repr(v) for k, v in self._values.items()
5492
+ )
5493
+
5494
+
5495
+ @jsii.data_type(
5496
+ jsii_type="projen.github.MergifyRule",
5497
+ jsii_struct_bases=[],
5498
+ name_mapping={"actions": "actions", "conditions": "conditions", "name": "name"},
5499
+ )
5500
+ class MergifyRule:
5501
+ def __init__(
5502
+ self,
5503
+ *,
5504
+ actions: typing.Mapping[builtins.str, typing.Any],
5505
+ conditions: typing.Sequence[typing.Union[builtins.str, typing.Union[MergifyConditionalOperator, typing.Dict[builtins.str, typing.Any]]]],
5506
+ name: builtins.str,
5507
+ ) -> None:
5508
+ '''
5509
+ :param actions: (experimental) A dictionary made of Actions that will be executed on the matching pull requests.
5510
+ :param conditions: (experimental) A list of Conditions string that must match against the pull request for the rule to be applied.
5511
+ :param name: (experimental) The name of the rule. This is not used by the engine directly, but is used when reporting information about a rule.
5512
+
5513
+ :stability: experimental
5514
+ '''
5515
+ if __debug__:
5516
+ type_hints = typing.get_type_hints(_typecheckingstub__95405391335691b357d88cc73d37d1ee20fceae6cf671811812f639729b5accd)
5517
+ check_type(argname="argument actions", value=actions, expected_type=type_hints["actions"])
5518
+ check_type(argname="argument conditions", value=conditions, expected_type=type_hints["conditions"])
5519
+ check_type(argname="argument name", value=name, expected_type=type_hints["name"])
5520
+ self._values: typing.Dict[builtins.str, typing.Any] = {
5521
+ "actions": actions,
5522
+ "conditions": conditions,
5523
+ "name": name,
5524
+ }
5525
+
5526
+ @builtins.property
5527
+ def actions(self) -> typing.Mapping[builtins.str, typing.Any]:
5528
+ '''(experimental) A dictionary made of Actions that will be executed on the matching pull requests.
5529
+
5530
+ :see: https://docs.mergify.io/actions/#actions
5531
+ :stability: experimental
5532
+ '''
5533
+ result = self._values.get("actions")
5534
+ assert result is not None, "Required property 'actions' is missing"
5535
+ return typing.cast(typing.Mapping[builtins.str, typing.Any], result)
5536
+
5537
+ @builtins.property
5538
+ def conditions(
5539
+ self,
5540
+ ) -> typing.List[typing.Union[builtins.str, MergifyConditionalOperator]]:
5541
+ '''(experimental) A list of Conditions string that must match against the pull request for the rule to be applied.
5542
+
5543
+ :see: https://docs.mergify.io/conditions/#conditions
5544
+ :stability: experimental
5545
+ '''
5546
+ result = self._values.get("conditions")
5547
+ assert result is not None, "Required property 'conditions' is missing"
5548
+ return typing.cast(typing.List[typing.Union[builtins.str, MergifyConditionalOperator]], result)
5549
+
5550
+ @builtins.property
5551
+ def name(self) -> builtins.str:
5552
+ '''(experimental) The name of the rule.
5553
+
5554
+ This is not used by the engine directly,
5555
+ but is used when reporting information about a rule.
5556
+
5557
+ :stability: experimental
5558
+ '''
5559
+ result = self._values.get("name")
5560
+ assert result is not None, "Required property 'name' is missing"
5561
+ return typing.cast(builtins.str, result)
5562
+
5563
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
5564
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
5565
+
5566
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
5567
+ return not (rhs == self)
5568
+
5569
+ def __repr__(self) -> str:
5570
+ return "MergifyRule(%s)" % ", ".join(
5571
+ k + "=" + repr(v) for k, v in self._values.items()
5572
+ )
5573
+
5574
+
5575
+ class PullRequestBackport(
5576
+ _Component_2b0ad27f,
5577
+ metaclass=jsii.JSIIMeta,
5578
+ jsii_type="projen.github.PullRequestBackport",
5579
+ ):
5580
+ '''
5581
+ :stability: experimental
5582
+ '''
5583
+
5584
+ def __init__(
5585
+ self,
5586
+ scope: _constructs_77d1e7e8.IConstruct,
5587
+ *,
5588
+ auto_approve_backport: typing.Optional[builtins.bool] = None,
5589
+ backport_branch_name_prefix: typing.Optional[builtins.str] = None,
5590
+ backport_pr_labels: typing.Optional[typing.Sequence[builtins.str]] = None,
5591
+ branches: typing.Optional[typing.Sequence[builtins.str]] = None,
5592
+ create_with_conflicts: typing.Optional[builtins.bool] = None,
5593
+ label_prefix: typing.Optional[builtins.str] = None,
5594
+ workflow_name: typing.Optional[builtins.str] = None,
5595
+ ) -> None:
5596
+ '''
5597
+ :param scope: -
5598
+ :param auto_approve_backport: (experimental) Automatically approve backport PRs if the 'auto approve' workflow is available. Default: true
5599
+ :param backport_branch_name_prefix: (experimental) The prefix used to name backport branches. Make sure to include a separator at the end like ``/`` or ``_``. Default: "backport/"
5600
+ :param backport_pr_labels: (experimental) The labels added to the created backport PR. Default: ["backport"]
5601
+ :param branches: (experimental) List of branches that can be a target for backports. Default: - allow backports to all release branches
5602
+ :param create_with_conflicts: (experimental) Should this created Backport PRs with conflicts. Conflicts will have to be resolved manually, but a PR is always created. Set to ``false`` to prevent the backport PR from being created if there are conflicts. Default: true
5603
+ :param label_prefix: (experimental) The prefix used to detect PRs that should be backported. Default: "backport-to-"
5604
+ :param workflow_name: (experimental) The name of the workflow. Default: "backport"
5605
+
5606
+ :stability: experimental
5607
+ '''
5608
+ if __debug__:
5609
+ type_hints = typing.get_type_hints(_typecheckingstub__a321227b5ffc19f1220367db19ad9a6c84aec3e2bf74ba19db5a89f3ee8c9ce4)
5610
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
5611
+ options = PullRequestBackportOptions(
5612
+ auto_approve_backport=auto_approve_backport,
5613
+ backport_branch_name_prefix=backport_branch_name_prefix,
5614
+ backport_pr_labels=backport_pr_labels,
5615
+ branches=branches,
5616
+ create_with_conflicts=create_with_conflicts,
5617
+ label_prefix=label_prefix,
5618
+ workflow_name=workflow_name,
5619
+ )
5620
+
5621
+ jsii.create(self.__class__, self, [scope, options])
5622
+
5623
+ @builtins.property
5624
+ @jsii.member(jsii_name="file")
5625
+ def file(self) -> _JsonFile_fa8164db:
5626
+ '''
5627
+ :stability: experimental
5628
+ '''
5629
+ return typing.cast(_JsonFile_fa8164db, jsii.get(self, "file"))
5630
+
5631
+ @builtins.property
5632
+ @jsii.member(jsii_name="workflow")
5633
+ def workflow(self) -> GithubWorkflow:
5634
+ '''
5635
+ :stability: experimental
5636
+ '''
5637
+ return typing.cast(GithubWorkflow, jsii.get(self, "workflow"))
5638
+
5639
+
5640
+ @jsii.data_type(
5641
+ jsii_type="projen.github.PullRequestBackportOptions",
5642
+ jsii_struct_bases=[],
5643
+ name_mapping={
5644
+ "auto_approve_backport": "autoApproveBackport",
5645
+ "backport_branch_name_prefix": "backportBranchNamePrefix",
5646
+ "backport_pr_labels": "backportPRLabels",
5647
+ "branches": "branches",
5648
+ "create_with_conflicts": "createWithConflicts",
5649
+ "label_prefix": "labelPrefix",
5650
+ "workflow_name": "workflowName",
5651
+ },
5652
+ )
5653
+ class PullRequestBackportOptions:
5654
+ def __init__(
5655
+ self,
5656
+ *,
5657
+ auto_approve_backport: typing.Optional[builtins.bool] = None,
5658
+ backport_branch_name_prefix: typing.Optional[builtins.str] = None,
5659
+ backport_pr_labels: typing.Optional[typing.Sequence[builtins.str]] = None,
5660
+ branches: typing.Optional[typing.Sequence[builtins.str]] = None,
5661
+ create_with_conflicts: typing.Optional[builtins.bool] = None,
5662
+ label_prefix: typing.Optional[builtins.str] = None,
5663
+ workflow_name: typing.Optional[builtins.str] = None,
5664
+ ) -> None:
5665
+ '''
5666
+ :param auto_approve_backport: (experimental) Automatically approve backport PRs if the 'auto approve' workflow is available. Default: true
5667
+ :param backport_branch_name_prefix: (experimental) The prefix used to name backport branches. Make sure to include a separator at the end like ``/`` or ``_``. Default: "backport/"
5668
+ :param backport_pr_labels: (experimental) The labels added to the created backport PR. Default: ["backport"]
5669
+ :param branches: (experimental) List of branches that can be a target for backports. Default: - allow backports to all release branches
5670
+ :param create_with_conflicts: (experimental) Should this created Backport PRs with conflicts. Conflicts will have to be resolved manually, but a PR is always created. Set to ``false`` to prevent the backport PR from being created if there are conflicts. Default: true
5671
+ :param label_prefix: (experimental) The prefix used to detect PRs that should be backported. Default: "backport-to-"
5672
+ :param workflow_name: (experimental) The name of the workflow. Default: "backport"
5673
+
5674
+ :stability: experimental
5675
+ '''
5676
+ if __debug__:
5677
+ type_hints = typing.get_type_hints(_typecheckingstub__066696cdba0d516ea035e9580a9e5c79c5a552ca23f78e5291d21811124a2a62)
5678
+ check_type(argname="argument auto_approve_backport", value=auto_approve_backport, expected_type=type_hints["auto_approve_backport"])
5679
+ check_type(argname="argument backport_branch_name_prefix", value=backport_branch_name_prefix, expected_type=type_hints["backport_branch_name_prefix"])
5680
+ check_type(argname="argument backport_pr_labels", value=backport_pr_labels, expected_type=type_hints["backport_pr_labels"])
5681
+ check_type(argname="argument branches", value=branches, expected_type=type_hints["branches"])
5682
+ check_type(argname="argument create_with_conflicts", value=create_with_conflicts, expected_type=type_hints["create_with_conflicts"])
5683
+ check_type(argname="argument label_prefix", value=label_prefix, expected_type=type_hints["label_prefix"])
5684
+ check_type(argname="argument workflow_name", value=workflow_name, expected_type=type_hints["workflow_name"])
5685
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
5686
+ if auto_approve_backport is not None:
5687
+ self._values["auto_approve_backport"] = auto_approve_backport
5688
+ if backport_branch_name_prefix is not None:
5689
+ self._values["backport_branch_name_prefix"] = backport_branch_name_prefix
5690
+ if backport_pr_labels is not None:
5691
+ self._values["backport_pr_labels"] = backport_pr_labels
5692
+ if branches is not None:
5693
+ self._values["branches"] = branches
5694
+ if create_with_conflicts is not None:
5695
+ self._values["create_with_conflicts"] = create_with_conflicts
5696
+ if label_prefix is not None:
5697
+ self._values["label_prefix"] = label_prefix
5698
+ if workflow_name is not None:
5699
+ self._values["workflow_name"] = workflow_name
5700
+
5701
+ @builtins.property
5702
+ def auto_approve_backport(self) -> typing.Optional[builtins.bool]:
5703
+ '''(experimental) Automatically approve backport PRs if the 'auto approve' workflow is available.
5704
+
5705
+ :default: true
5706
+
5707
+ :stability: experimental
5708
+ '''
5709
+ result = self._values.get("auto_approve_backport")
5710
+ return typing.cast(typing.Optional[builtins.bool], result)
4156
5711
 
4157
- - ``merge`` to merge the base branch into the pull request.
4158
- - ``rebase`` to rebase the pull request against its base branch.
5712
+ @builtins.property
5713
+ def backport_branch_name_prefix(self) -> typing.Optional[builtins.str]:
5714
+ '''(experimental) The prefix used to name backport branches.
4159
5715
 
4160
- Note that the ``rebase`` method has some drawbacks, see Mergify docs for details.
5716
+ Make sure to include a separator at the end like ``/`` or ``_``.
4161
5717
 
4162
- :default: - ``merge`` for all merge methods except ``fast-forward`` where ``rebase`` is used
5718
+ :default: "backport/"
4163
5719
 
4164
- :see: https://docs.mergify.com/actions/queue/#queue-rules
4165
5720
  :stability: experimental
4166
5721
  '''
4167
- result = self._values.get("update_method")
5722
+ result = self._values.get("backport_branch_name_prefix")
4168
5723
  return typing.cast(typing.Optional[builtins.str], result)
4169
5724
 
4170
- def __eq__(self, rhs: typing.Any) -> builtins.bool:
4171
- return isinstance(rhs, self.__class__) and rhs._values == self._values
5725
+ @builtins.property
5726
+ def backport_pr_labels(self) -> typing.Optional[typing.List[builtins.str]]:
5727
+ '''(experimental) The labels added to the created backport PR.
4172
5728
 
4173
- def __ne__(self, rhs: typing.Any) -> builtins.bool:
4174
- return not (rhs == self)
5729
+ :default: ["backport"]
4175
5730
 
4176
- def __repr__(self) -> str:
4177
- return "MergifyQueue(%s)" % ", ".join(
4178
- k + "=" + repr(v) for k, v in self._values.items()
4179
- )
5731
+ :stability: experimental
5732
+ '''
5733
+ result = self._values.get("backport_pr_labels")
5734
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
4180
5735
 
5736
+ @builtins.property
5737
+ def branches(self) -> typing.Optional[typing.List[builtins.str]]:
5738
+ '''(experimental) List of branches that can be a target for backports.
4181
5739
 
4182
- @jsii.data_type(
4183
- jsii_type="projen.github.MergifyRule",
4184
- jsii_struct_bases=[],
4185
- name_mapping={"actions": "actions", "conditions": "conditions", "name": "name"},
4186
- )
4187
- class MergifyRule:
4188
- def __init__(
4189
- self,
4190
- *,
4191
- actions: typing.Mapping[builtins.str, typing.Any],
4192
- conditions: typing.Sequence[typing.Union[builtins.str, typing.Union[MergifyConditionalOperator, typing.Dict[builtins.str, typing.Any]]]],
4193
- name: builtins.str,
4194
- ) -> None:
4195
- '''
4196
- :param actions: (experimental) A dictionary made of Actions that will be executed on the matching pull requests.
4197
- :param conditions: (experimental) A list of Conditions string that must match against the pull request for the rule to be applied.
4198
- :param name: (experimental) The name of the rule. This is not used by the engine directly, but is used when reporting information about a rule.
5740
+ :default: - allow backports to all release branches
4199
5741
 
4200
5742
  :stability: experimental
4201
5743
  '''
4202
- if __debug__:
4203
- type_hints = typing.get_type_hints(_typecheckingstub__95405391335691b357d88cc73d37d1ee20fceae6cf671811812f639729b5accd)
4204
- check_type(argname="argument actions", value=actions, expected_type=type_hints["actions"])
4205
- check_type(argname="argument conditions", value=conditions, expected_type=type_hints["conditions"])
4206
- check_type(argname="argument name", value=name, expected_type=type_hints["name"])
4207
- self._values: typing.Dict[builtins.str, typing.Any] = {
4208
- "actions": actions,
4209
- "conditions": conditions,
4210
- "name": name,
4211
- }
5744
+ result = self._values.get("branches")
5745
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
4212
5746
 
4213
5747
  @builtins.property
4214
- def actions(self) -> typing.Mapping[builtins.str, typing.Any]:
4215
- '''(experimental) A dictionary made of Actions that will be executed on the matching pull requests.
5748
+ def create_with_conflicts(self) -> typing.Optional[builtins.bool]:
5749
+ '''(experimental) Should this created Backport PRs with conflicts.
5750
+
5751
+ Conflicts will have to be resolved manually, but a PR is always created.
5752
+ Set to ``false`` to prevent the backport PR from being created if there are conflicts.
5753
+
5754
+ :default: true
4216
5755
 
4217
- :see: https://docs.mergify.io/actions/#actions
4218
5756
  :stability: experimental
4219
5757
  '''
4220
- result = self._values.get("actions")
4221
- assert result is not None, "Required property 'actions' is missing"
4222
- return typing.cast(typing.Mapping[builtins.str, typing.Any], result)
5758
+ result = self._values.get("create_with_conflicts")
5759
+ return typing.cast(typing.Optional[builtins.bool], result)
4223
5760
 
4224
5761
  @builtins.property
4225
- def conditions(
4226
- self,
4227
- ) -> typing.List[typing.Union[builtins.str, MergifyConditionalOperator]]:
4228
- '''(experimental) A list of Conditions string that must match against the pull request for the rule to be applied.
5762
+ def label_prefix(self) -> typing.Optional[builtins.str]:
5763
+ '''(experimental) The prefix used to detect PRs that should be backported.
5764
+
5765
+ :default: "backport-to-"
4229
5766
 
4230
- :see: https://docs.mergify.io/conditions/#conditions
4231
5767
  :stability: experimental
4232
5768
  '''
4233
- result = self._values.get("conditions")
4234
- assert result is not None, "Required property 'conditions' is missing"
4235
- return typing.cast(typing.List[typing.Union[builtins.str, MergifyConditionalOperator]], result)
5769
+ result = self._values.get("label_prefix")
5770
+ return typing.cast(typing.Optional[builtins.str], result)
4236
5771
 
4237
5772
  @builtins.property
4238
- def name(self) -> builtins.str:
4239
- '''(experimental) The name of the rule.
5773
+ def workflow_name(self) -> typing.Optional[builtins.str]:
5774
+ '''(experimental) The name of the workflow.
4240
5775
 
4241
- This is not used by the engine directly,
4242
- but is used when reporting information about a rule.
5776
+ :default: "backport"
4243
5777
 
4244
5778
  :stability: experimental
4245
5779
  '''
4246
- result = self._values.get("name")
4247
- assert result is not None, "Required property 'name' is missing"
4248
- return typing.cast(builtins.str, result)
5780
+ result = self._values.get("workflow_name")
5781
+ return typing.cast(typing.Optional[builtins.str], result)
4249
5782
 
4250
5783
  def __eq__(self, rhs: typing.Any) -> builtins.bool:
4251
5784
  return isinstance(rhs, self.__class__) and rhs._values == self._values
@@ -4254,7 +5787,7 @@ class MergifyRule:
4254
5787
  return not (rhs == self)
4255
5788
 
4256
5789
  def __repr__(self) -> str:
4257
- return "MergifyRule(%s)" % ", ".join(
5790
+ return "PullRequestBackportOptions(%s)" % ", ".join(
4258
5791
  k + "=" + repr(v) for k, v in self._values.items()
4259
5792
  )
4260
5793
 
@@ -4310,7 +5843,7 @@ class PullRequestFromPatchOptions(CreatePullRequestOptions):
4310
5843
  :param base_branch: (experimental) Sets the pull request base branch. Default: - The branch checked out in the workflow.
4311
5844
  :param branch_name: (experimental) The pull request branch name. Default: ``github-actions/${options.workflowName}``
4312
5845
  :param credentials: (experimental) The job credentials used to create the pull request. Provided credentials must have permissions to create a pull request on the repository.
4313
- :param git_identity: (experimental) The git identity used to create the commit. Default: - the default github-actions user
5846
+ :param git_identity: (experimental) The git identity used to create the commit. Default: - default GitHub Actions user
4314
5847
  :param labels: (experimental) Labels to apply on the PR. Default: - no labels.
4315
5848
  :param signoff: (experimental) Add Signed-off-by line by the committer at the end of the commit log message. Default: true
4316
5849
  :param step_id: (experimental) The step ID which produces the output which indicates if a patch was created. Default: "create_pr"
@@ -4459,7 +5992,7 @@ class PullRequestFromPatchOptions(CreatePullRequestOptions):
4459
5992
  def git_identity(self) -> typing.Optional[GitIdentity]:
4460
5993
  '''(experimental) The git identity used to create the commit.
4461
5994
 
4462
- :default: - the default github-actions user
5995
+ :default: - default GitHub Actions user
4463
5996
 
4464
5997
  :stability: experimental
4465
5998
  '''
@@ -4779,6 +6312,7 @@ class PullRequestLintOptions:
4779
6312
  name_mapping={
4780
6313
  "fetch_depth": "fetchDepth",
4781
6314
  "lfs": "lfs",
6315
+ "path": "path",
4782
6316
  "ref": "ref",
4783
6317
  "repository": "repository",
4784
6318
  "token": "token",
@@ -4793,6 +6327,7 @@ class PullRequestPatchSource(CheckoutWithPatchOptions):
4793
6327
  *,
4794
6328
  fetch_depth: typing.Optional[jsii.Number] = None,
4795
6329
  lfs: typing.Optional[builtins.bool] = None,
6330
+ path: typing.Optional[builtins.str] = None,
4796
6331
  ref: typing.Optional[builtins.str] = None,
4797
6332
  repository: typing.Optional[builtins.str] = None,
4798
6333
  token: typing.Optional[builtins.str] = None,
@@ -4803,6 +6338,7 @@ class PullRequestPatchSource(CheckoutWithPatchOptions):
4803
6338
  '''
4804
6339
  :param fetch_depth: (experimental) Number of commits to fetch. 0 indicates all history for all branches and tags. Default: 1
4805
6340
  :param lfs: (experimental) Whether LFS is enabled for the GitHub repository. Default: false
6341
+ :param path: (experimental) Relative path under $GITHUB_WORKSPACE to place the repository. Default: - $GITHUB_WORKSPACE
4806
6342
  :param ref: (experimental) Branch or tag name. Default: - the default branch is implicitly used
4807
6343
  :param repository: (experimental) The repository (owner/repo) to use. Default: - the default repository is implicitly used
4808
6344
  :param token: (experimental) A GitHub token to use when checking out the repository. If the intent is to push changes back to the branch, then you must use a PAT with ``repo`` (and possibly ``workflows``) permissions. Default: - the default GITHUB_TOKEN is implicitly used
@@ -4816,6 +6352,7 @@ class PullRequestPatchSource(CheckoutWithPatchOptions):
4816
6352
  type_hints = typing.get_type_hints(_typecheckingstub__c3c9a28aa8266154d9a36adad571b3695e958b931e79b9eaff4a7dc55e95dec8)
4817
6353
  check_type(argname="argument fetch_depth", value=fetch_depth, expected_type=type_hints["fetch_depth"])
4818
6354
  check_type(argname="argument lfs", value=lfs, expected_type=type_hints["lfs"])
6355
+ check_type(argname="argument path", value=path, expected_type=type_hints["path"])
4819
6356
  check_type(argname="argument ref", value=ref, expected_type=type_hints["ref"])
4820
6357
  check_type(argname="argument repository", value=repository, expected_type=type_hints["repository"])
4821
6358
  check_type(argname="argument token", value=token, expected_type=type_hints["token"])
@@ -4830,6 +6367,8 @@ class PullRequestPatchSource(CheckoutWithPatchOptions):
4830
6367
  self._values["fetch_depth"] = fetch_depth
4831
6368
  if lfs is not None:
4832
6369
  self._values["lfs"] = lfs
6370
+ if path is not None:
6371
+ self._values["path"] = path
4833
6372
  if ref is not None:
4834
6373
  self._values["ref"] = ref
4835
6374
  if repository is not None:
@@ -4863,6 +6402,17 @@ class PullRequestPatchSource(CheckoutWithPatchOptions):
4863
6402
  result = self._values.get("lfs")
4864
6403
  return typing.cast(typing.Optional[builtins.bool], result)
4865
6404
 
6405
+ @builtins.property
6406
+ def path(self) -> typing.Optional[builtins.str]:
6407
+ '''(experimental) Relative path under $GITHUB_WORKSPACE to place the repository.
6408
+
6409
+ :default: - $GITHUB_WORKSPACE
6410
+
6411
+ :stability: experimental
6412
+ '''
6413
+ result = self._values.get("path")
6414
+ return typing.cast(typing.Optional[builtins.str], result)
6415
+
4866
6416
  @builtins.property
4867
6417
  def ref(self) -> typing.Optional[builtins.str]:
4868
6418
  '''(experimental) Branch or tag name.
@@ -5040,18 +6590,24 @@ class PullRequestTemplateOptions:
5040
6590
  @jsii.data_type(
5041
6591
  jsii_type="projen.github.SemanticTitleOptions",
5042
6592
  jsii_struct_bases=[],
5043
- name_mapping={"require_scope": "requireScope", "types": "types"},
6593
+ name_mapping={
6594
+ "require_scope": "requireScope",
6595
+ "scopes": "scopes",
6596
+ "types": "types",
6597
+ },
5044
6598
  )
5045
6599
  class SemanticTitleOptions:
5046
6600
  def __init__(
5047
6601
  self,
5048
6602
  *,
5049
6603
  require_scope: typing.Optional[builtins.bool] = None,
6604
+ scopes: typing.Optional[typing.Sequence[builtins.str]] = None,
5050
6605
  types: typing.Optional[typing.Sequence[builtins.str]] = None,
5051
6606
  ) -> None:
5052
6607
  '''(experimental) Options for linting that PR titles follow Conventional Commits.
5053
6608
 
5054
6609
  :param require_scope: (experimental) Configure that a scope must always be provided. e.g. feat(ui), fix(core) Default: false
6610
+ :param scopes: (experimental) Configure which scopes are allowed (newline-delimited). These are regex patterns auto-wrapped in ``^ $``. Default: - all scopes allowed
5055
6611
  :param types: (experimental) Configure a list of commit types that are allowed. Default: ["feat", "fix", "chore"]
5056
6612
 
5057
6613
  :see: https://www.conventionalcommits.org/
@@ -5060,10 +6616,13 @@ class SemanticTitleOptions:
5060
6616
  if __debug__:
5061
6617
  type_hints = typing.get_type_hints(_typecheckingstub__9d043d0484269cca19493b2d2d5c51f9cfe65a12520148f80ef37f6855457de0)
5062
6618
  check_type(argname="argument require_scope", value=require_scope, expected_type=type_hints["require_scope"])
6619
+ check_type(argname="argument scopes", value=scopes, expected_type=type_hints["scopes"])
5063
6620
  check_type(argname="argument types", value=types, expected_type=type_hints["types"])
5064
6621
  self._values: typing.Dict[builtins.str, typing.Any] = {}
5065
6622
  if require_scope is not None:
5066
6623
  self._values["require_scope"] = require_scope
6624
+ if scopes is not None:
6625
+ self._values["scopes"] = scopes
5067
6626
  if types is not None:
5068
6627
  self._values["types"] = types
5069
6628
 
@@ -5080,6 +6639,19 @@ class SemanticTitleOptions:
5080
6639
  result = self._values.get("require_scope")
5081
6640
  return typing.cast(typing.Optional[builtins.bool], result)
5082
6641
 
6642
+ @builtins.property
6643
+ def scopes(self) -> typing.Optional[typing.List[builtins.str]]:
6644
+ '''(experimental) Configure which scopes are allowed (newline-delimited).
6645
+
6646
+ These are regex patterns auto-wrapped in ``^ $``.
6647
+
6648
+ :default: - all scopes allowed
6649
+
6650
+ :stability: experimental
6651
+ '''
6652
+ result = self._values.get("scopes")
6653
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
6654
+
5083
6655
  @builtins.property
5084
6656
  def types(self) -> typing.Optional[typing.List[builtins.str]]:
5085
6657
  '''(experimental) Configure a list of commit types that are allowed.
@@ -5111,6 +6683,7 @@ class SemanticTitleOptions:
5111
6683
  "id": "id",
5112
6684
  "if_": "if",
5113
6685
  "name": "name",
6686
+ "shell": "shell",
5114
6687
  "working_directory": "workingDirectory",
5115
6688
  "continue_on_error": "continueOnError",
5116
6689
  "timeout_minutes": "timeoutMinutes",
@@ -5125,6 +6698,7 @@ class SetupGitIdentityOptions(_JobStepConfiguration_9caff420):
5125
6698
  id: typing.Optional[builtins.str] = None,
5126
6699
  if_: typing.Optional[builtins.str] = None,
5127
6700
  name: typing.Optional[builtins.str] = None,
6701
+ shell: typing.Optional[builtins.str] = None,
5128
6702
  working_directory: typing.Optional[builtins.str] = None,
5129
6703
  continue_on_error: typing.Optional[builtins.bool] = None,
5130
6704
  timeout_minutes: typing.Optional[jsii.Number] = None,
@@ -5135,6 +6709,7 @@ class SetupGitIdentityOptions(_JobStepConfiguration_9caff420):
5135
6709
  :param id: (experimental) A unique identifier for the step. You can use the id to reference the step in contexts.
5136
6710
  :param if_: (experimental) You can use the if conditional to prevent a job from running unless a condition is met. You can use any supported context and expression to create a conditional.
5137
6711
  :param name: (experimental) A name for your step to display on GitHub.
6712
+ :param shell: (experimental) Overrides the default shell settings in the runner's operating system and the job's default. Refer to GitHub documentation for allowed values.
5138
6713
  :param working_directory: (experimental) Specifies a working directory for a step. Overrides a job's working directory.
5139
6714
  :param continue_on_error: (experimental) Prevents a job from failing when a step fails. Set to true to allow a job to pass when this step fails.
5140
6715
  :param timeout_minutes: (experimental) The maximum number of minutes to run the step before killing the process.
@@ -5150,6 +6725,7 @@ class SetupGitIdentityOptions(_JobStepConfiguration_9caff420):
5150
6725
  check_type(argname="argument id", value=id, expected_type=type_hints["id"])
5151
6726
  check_type(argname="argument if_", value=if_, expected_type=type_hints["if_"])
5152
6727
  check_type(argname="argument name", value=name, expected_type=type_hints["name"])
6728
+ check_type(argname="argument shell", value=shell, expected_type=type_hints["shell"])
5153
6729
  check_type(argname="argument working_directory", value=working_directory, expected_type=type_hints["working_directory"])
5154
6730
  check_type(argname="argument continue_on_error", value=continue_on_error, expected_type=type_hints["continue_on_error"])
5155
6731
  check_type(argname="argument timeout_minutes", value=timeout_minutes, expected_type=type_hints["timeout_minutes"])
@@ -5165,6 +6741,8 @@ class SetupGitIdentityOptions(_JobStepConfiguration_9caff420):
5165
6741
  self._values["if_"] = if_
5166
6742
  if name is not None:
5167
6743
  self._values["name"] = name
6744
+ if shell is not None:
6745
+ self._values["shell"] = shell
5168
6746
  if working_directory is not None:
5169
6747
  self._values["working_directory"] = working_directory
5170
6748
  if continue_on_error is not None:
@@ -5216,6 +6794,18 @@ class SetupGitIdentityOptions(_JobStepConfiguration_9caff420):
5216
6794
  result = self._values.get("name")
5217
6795
  return typing.cast(typing.Optional[builtins.str], result)
5218
6796
 
6797
+ @builtins.property
6798
+ def shell(self) -> typing.Optional[builtins.str]:
6799
+ '''(experimental) Overrides the default shell settings in the runner's operating system and the job's default.
6800
+
6801
+ Refer to GitHub documentation for allowed values.
6802
+
6803
+ :see: https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsshell
6804
+ :stability: experimental
6805
+ '''
6806
+ result = self._values.get("shell")
6807
+ return typing.cast(typing.Optional[builtins.str], result)
6808
+
5219
6809
  @builtins.property
5220
6810
  def working_directory(self) -> typing.Optional[builtins.str]:
5221
6811
  '''(experimental) Specifies a working directory for a step.
@@ -5617,6 +7207,7 @@ class TaskWorkflow(
5617
7207
  container: typing.Optional[typing.Union[_ContainerOptions_f50907af, typing.Dict[builtins.str, typing.Any]]] = None,
5618
7208
  download_lfs: typing.Optional[builtins.bool] = None,
5619
7209
  env: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
7210
+ environment: typing.Optional[builtins.str] = None,
5620
7211
  git_identity: typing.Optional[typing.Union[GitIdentity, typing.Dict[builtins.str, typing.Any]]] = None,
5621
7212
  job_defaults: typing.Optional[typing.Union[_JobDefaults_965f0d10, typing.Dict[builtins.str, typing.Any]]] = None,
5622
7213
  outputs: typing.Optional[typing.Mapping[builtins.str, typing.Union[_JobStepOutput_acebe827, typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -5639,7 +7230,8 @@ class TaskWorkflow(
5639
7230
  :param container: Default: - default image
5640
7231
  :param download_lfs: (experimental) Whether to download files from Git LFS for this workflow. Default: - Use the setting on the corresponding GitHub project
5641
7232
  :param env: (experimental) Workflow environment variables. Default: {}
5642
- :param git_identity: (experimental) The git identity to use in this workflow.
7233
+ :param environment: (experimental) The GitHub Actions environment used for the job. Default: - no environment used
7234
+ :param git_identity: (experimental) The git identity to use in this workflow. Default: - default GitHub Actions user
5643
7235
  :param job_defaults: (experimental) Default settings for all steps in the TaskWorkflow Job.
5644
7236
  :param outputs: (experimental) Mapping of job output names to values/expressions. Default: {}
5645
7237
  :param post_build_steps: (experimental) Actions to run after the main build step. Default: - not set
@@ -5665,6 +7257,7 @@ class TaskWorkflow(
5665
7257
  container=container,
5666
7258
  download_lfs=download_lfs,
5667
7259
  env=env,
7260
+ environment=environment,
5668
7261
  git_identity=git_identity,
5669
7262
  job_defaults=job_defaults,
5670
7263
  outputs=outputs,
@@ -5717,6 +7310,7 @@ class TaskWorkflowJob(
5717
7310
  container: typing.Optional[typing.Union[_ContainerOptions_f50907af, typing.Dict[builtins.str, typing.Any]]] = None,
5718
7311
  download_lfs: typing.Optional[builtins.bool] = None,
5719
7312
  env: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
7313
+ environment: typing.Optional[builtins.str] = None,
5720
7314
  git_identity: typing.Optional[typing.Union[GitIdentity, typing.Dict[builtins.str, typing.Any]]] = None,
5721
7315
  job_defaults: typing.Optional[typing.Union[_JobDefaults_965f0d10, typing.Dict[builtins.str, typing.Any]]] = None,
5722
7316
  outputs: typing.Optional[typing.Mapping[builtins.str, typing.Union[_JobStepOutput_acebe827, typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -5736,7 +7330,8 @@ class TaskWorkflowJob(
5736
7330
  :param container: Default: - default image
5737
7331
  :param download_lfs: (experimental) Whether to download files from Git LFS for this workflow. Default: - Use the setting on the corresponding GitHub project
5738
7332
  :param env: (experimental) Workflow environment variables. Default: {}
5739
- :param git_identity: (experimental) The git identity to use in this workflow.
7333
+ :param environment: (experimental) The GitHub Actions environment used for the job. Default: - no environment used
7334
+ :param git_identity: (experimental) The git identity to use in this workflow. Default: - default GitHub Actions user
5740
7335
  :param job_defaults: (experimental) Default settings for all steps in the TaskWorkflow Job.
5741
7336
  :param outputs: (experimental) Mapping of job output names to values/expressions. Default: {}
5742
7337
  :param post_build_steps: (experimental) Actions to run after the main build step. Default: - not set
@@ -5759,6 +7354,7 @@ class TaskWorkflowJob(
5759
7354
  container=container,
5760
7355
  download_lfs=download_lfs,
5761
7356
  env=env,
7357
+ environment=environment,
5762
7358
  git_identity=git_identity,
5763
7359
  job_defaults=job_defaults,
5764
7360
  outputs=outputs,
@@ -5829,11 +7425,11 @@ class TaskWorkflowJob(
5829
7425
 
5830
7426
  @builtins.property
5831
7427
  @jsii.member(jsii_name="environment")
5832
- def environment(self) -> typing.Any:
7428
+ def environment(self) -> typing.Optional[builtins.str]:
5833
7429
  '''
5834
7430
  :stability: experimental
5835
7431
  '''
5836
- return typing.cast(typing.Any, jsii.get(self, "environment"))
7432
+ return typing.cast(typing.Optional[builtins.str], jsii.get(self, "environment"))
5837
7433
 
5838
7434
  @builtins.property
5839
7435
  @jsii.member(jsii_name="if")
@@ -5931,6 +7527,7 @@ class TaskWorkflowJob(
5931
7527
  "container": "container",
5932
7528
  "download_lfs": "downloadLfs",
5933
7529
  "env": "env",
7530
+ "environment": "environment",
5934
7531
  "git_identity": "gitIdentity",
5935
7532
  "job_defaults": "jobDefaults",
5936
7533
  "outputs": "outputs",
@@ -5952,6 +7549,7 @@ class TaskWorkflowJobOptions:
5952
7549
  container: typing.Optional[typing.Union[_ContainerOptions_f50907af, typing.Dict[builtins.str, typing.Any]]] = None,
5953
7550
  download_lfs: typing.Optional[builtins.bool] = None,
5954
7551
  env: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
7552
+ environment: typing.Optional[builtins.str] = None,
5955
7553
  git_identity: typing.Optional[typing.Union[GitIdentity, typing.Dict[builtins.str, typing.Any]]] = None,
5956
7554
  job_defaults: typing.Optional[typing.Union[_JobDefaults_965f0d10, typing.Dict[builtins.str, typing.Any]]] = None,
5957
7555
  outputs: typing.Optional[typing.Mapping[builtins.str, typing.Union[_JobStepOutput_acebe827, typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -5970,7 +7568,8 @@ class TaskWorkflowJobOptions:
5970
7568
  :param container: Default: - default image
5971
7569
  :param download_lfs: (experimental) Whether to download files from Git LFS for this workflow. Default: - Use the setting on the corresponding GitHub project
5972
7570
  :param env: (experimental) Workflow environment variables. Default: {}
5973
- :param git_identity: (experimental) The git identity to use in this workflow.
7571
+ :param environment: (experimental) The GitHub Actions environment used for the job. Default: - no environment used
7572
+ :param git_identity: (experimental) The git identity to use in this workflow. Default: - default GitHub Actions user
5974
7573
  :param job_defaults: (experimental) Default settings for all steps in the TaskWorkflow Job.
5975
7574
  :param outputs: (experimental) Mapping of job output names to values/expressions. Default: {}
5976
7575
  :param post_build_steps: (experimental) Actions to run after the main build step. Default: - not set
@@ -6002,6 +7601,7 @@ class TaskWorkflowJobOptions:
6002
7601
  check_type(argname="argument container", value=container, expected_type=type_hints["container"])
6003
7602
  check_type(argname="argument download_lfs", value=download_lfs, expected_type=type_hints["download_lfs"])
6004
7603
  check_type(argname="argument env", value=env, expected_type=type_hints["env"])
7604
+ check_type(argname="argument environment", value=environment, expected_type=type_hints["environment"])
6005
7605
  check_type(argname="argument git_identity", value=git_identity, expected_type=type_hints["git_identity"])
6006
7606
  check_type(argname="argument job_defaults", value=job_defaults, expected_type=type_hints["job_defaults"])
6007
7607
  check_type(argname="argument outputs", value=outputs, expected_type=type_hints["outputs"])
@@ -6025,6 +7625,8 @@ class TaskWorkflowJobOptions:
6025
7625
  self._values["download_lfs"] = download_lfs
6026
7626
  if env is not None:
6027
7627
  self._values["env"] = env
7628
+ if environment is not None:
7629
+ self._values["environment"] = environment
6028
7630
  if git_identity is not None:
6029
7631
  self._values["git_identity"] = git_identity
6030
7632
  if job_defaults is not None:
@@ -6115,10 +7717,23 @@ class TaskWorkflowJobOptions:
6115
7717
  result = self._values.get("env")
6116
7718
  return typing.cast(typing.Optional[typing.Mapping[builtins.str, builtins.str]], result)
6117
7719
 
7720
+ @builtins.property
7721
+ def environment(self) -> typing.Optional[builtins.str]:
7722
+ '''(experimental) The GitHub Actions environment used for the job.
7723
+
7724
+ :default: - no environment used
7725
+
7726
+ :stability: experimental
7727
+ '''
7728
+ result = self._values.get("environment")
7729
+ return typing.cast(typing.Optional[builtins.str], result)
7730
+
6118
7731
  @builtins.property
6119
7732
  def git_identity(self) -> typing.Optional[GitIdentity]:
6120
7733
  '''(experimental) The git identity to use in this workflow.
6121
7734
 
7735
+ :default: - default GitHub Actions user
7736
+
6122
7737
  :stability: experimental
6123
7738
  '''
6124
7739
  result = self._values.get("git_identity")
@@ -6226,6 +7841,7 @@ class TaskWorkflowJobOptions:
6226
7841
  "container": "container",
6227
7842
  "download_lfs": "downloadLfs",
6228
7843
  "env": "env",
7844
+ "environment": "environment",
6229
7845
  "git_identity": "gitIdentity",
6230
7846
  "job_defaults": "jobDefaults",
6231
7847
  "outputs": "outputs",
@@ -6251,6 +7867,7 @@ class TaskWorkflowOptions(TaskWorkflowJobOptions):
6251
7867
  container: typing.Optional[typing.Union[_ContainerOptions_f50907af, typing.Dict[builtins.str, typing.Any]]] = None,
6252
7868
  download_lfs: typing.Optional[builtins.bool] = None,
6253
7869
  env: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
7870
+ environment: typing.Optional[builtins.str] = None,
6254
7871
  git_identity: typing.Optional[typing.Union[GitIdentity, typing.Dict[builtins.str, typing.Any]]] = None,
6255
7872
  job_defaults: typing.Optional[typing.Union[_JobDefaults_965f0d10, typing.Dict[builtins.str, typing.Any]]] = None,
6256
7873
  outputs: typing.Optional[typing.Mapping[builtins.str, typing.Union[_JobStepOutput_acebe827, typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -6273,7 +7890,8 @@ class TaskWorkflowOptions(TaskWorkflowJobOptions):
6273
7890
  :param container: Default: - default image
6274
7891
  :param download_lfs: (experimental) Whether to download files from Git LFS for this workflow. Default: - Use the setting on the corresponding GitHub project
6275
7892
  :param env: (experimental) Workflow environment variables. Default: {}
6276
- :param git_identity: (experimental) The git identity to use in this workflow.
7893
+ :param environment: (experimental) The GitHub Actions environment used for the job. Default: - no environment used
7894
+ :param git_identity: (experimental) The git identity to use in this workflow. Default: - default GitHub Actions user
6277
7895
  :param job_defaults: (experimental) Default settings for all steps in the TaskWorkflow Job.
6278
7896
  :param outputs: (experimental) Mapping of job output names to values/expressions. Default: {}
6279
7897
  :param post_build_steps: (experimental) Actions to run after the main build step. Default: - not set
@@ -6311,6 +7929,7 @@ class TaskWorkflowOptions(TaskWorkflowJobOptions):
6311
7929
  check_type(argname="argument container", value=container, expected_type=type_hints["container"])
6312
7930
  check_type(argname="argument download_lfs", value=download_lfs, expected_type=type_hints["download_lfs"])
6313
7931
  check_type(argname="argument env", value=env, expected_type=type_hints["env"])
7932
+ check_type(argname="argument environment", value=environment, expected_type=type_hints["environment"])
6314
7933
  check_type(argname="argument git_identity", value=git_identity, expected_type=type_hints["git_identity"])
6315
7934
  check_type(argname="argument job_defaults", value=job_defaults, expected_type=type_hints["job_defaults"])
6316
7935
  check_type(argname="argument outputs", value=outputs, expected_type=type_hints["outputs"])
@@ -6340,6 +7959,8 @@ class TaskWorkflowOptions(TaskWorkflowJobOptions):
6340
7959
  self._values["download_lfs"] = download_lfs
6341
7960
  if env is not None:
6342
7961
  self._values["env"] = env
7962
+ if environment is not None:
7963
+ self._values["environment"] = environment
6343
7964
  if git_identity is not None:
6344
7965
  self._values["git_identity"] = git_identity
6345
7966
  if job_defaults is not None:
@@ -6434,10 +8055,23 @@ class TaskWorkflowOptions(TaskWorkflowJobOptions):
6434
8055
  result = self._values.get("env")
6435
8056
  return typing.cast(typing.Optional[typing.Mapping[builtins.str, builtins.str]], result)
6436
8057
 
8058
+ @builtins.property
8059
+ def environment(self) -> typing.Optional[builtins.str]:
8060
+ '''(experimental) The GitHub Actions environment used for the job.
8061
+
8062
+ :default: - no environment used
8063
+
8064
+ :stability: experimental
8065
+ '''
8066
+ result = self._values.get("environment")
8067
+ return typing.cast(typing.Optional[builtins.str], result)
8068
+
6437
8069
  @builtins.property
6438
8070
  def git_identity(self) -> typing.Optional[GitIdentity]:
6439
8071
  '''(experimental) The git identity to use in this workflow.
6440
8072
 
8073
+ :default: - default GitHub Actions user
8074
+
6441
8075
  :stability: experimental
6442
8076
  '''
6443
8077
  result = self._values.get("git_identity")
@@ -6584,6 +8218,7 @@ class TaskWorkflowOptions(TaskWorkflowJobOptions):
6584
8218
  "id": "id",
6585
8219
  "if_": "if",
6586
8220
  "name": "name",
8221
+ "shell": "shell",
6587
8222
  "working_directory": "workingDirectory",
6588
8223
  "continue_on_error": "continueOnError",
6589
8224
  "timeout_minutes": "timeoutMinutes",
@@ -6598,6 +8233,7 @@ class UploadArtifactOptions(_JobStepConfiguration_9caff420):
6598
8233
  id: typing.Optional[builtins.str] = None,
6599
8234
  if_: typing.Optional[builtins.str] = None,
6600
8235
  name: typing.Optional[builtins.str] = None,
8236
+ shell: typing.Optional[builtins.str] = None,
6601
8237
  working_directory: typing.Optional[builtins.str] = None,
6602
8238
  continue_on_error: typing.Optional[builtins.bool] = None,
6603
8239
  timeout_minutes: typing.Optional[jsii.Number] = None,
@@ -6608,6 +8244,7 @@ class UploadArtifactOptions(_JobStepConfiguration_9caff420):
6608
8244
  :param id: (experimental) A unique identifier for the step. You can use the id to reference the step in contexts.
6609
8245
  :param if_: (experimental) You can use the if conditional to prevent a job from running unless a condition is met. You can use any supported context and expression to create a conditional.
6610
8246
  :param name: (experimental) A name for your step to display on GitHub.
8247
+ :param shell: (experimental) Overrides the default shell settings in the runner's operating system and the job's default. Refer to GitHub documentation for allowed values.
6611
8248
  :param working_directory: (experimental) Specifies a working directory for a step. Overrides a job's working directory.
6612
8249
  :param continue_on_error: (experimental) Prevents a job from failing when a step fails. Set to true to allow a job to pass when this step fails.
6613
8250
  :param timeout_minutes: (experimental) The maximum number of minutes to run the step before killing the process.
@@ -6623,6 +8260,7 @@ class UploadArtifactOptions(_JobStepConfiguration_9caff420):
6623
8260
  check_type(argname="argument id", value=id, expected_type=type_hints["id"])
6624
8261
  check_type(argname="argument if_", value=if_, expected_type=type_hints["if_"])
6625
8262
  check_type(argname="argument name", value=name, expected_type=type_hints["name"])
8263
+ check_type(argname="argument shell", value=shell, expected_type=type_hints["shell"])
6626
8264
  check_type(argname="argument working_directory", value=working_directory, expected_type=type_hints["working_directory"])
6627
8265
  check_type(argname="argument continue_on_error", value=continue_on_error, expected_type=type_hints["continue_on_error"])
6628
8266
  check_type(argname="argument timeout_minutes", value=timeout_minutes, expected_type=type_hints["timeout_minutes"])
@@ -6638,6 +8276,8 @@ class UploadArtifactOptions(_JobStepConfiguration_9caff420):
6638
8276
  self._values["if_"] = if_
6639
8277
  if name is not None:
6640
8278
  self._values["name"] = name
8279
+ if shell is not None:
8280
+ self._values["shell"] = shell
6641
8281
  if working_directory is not None:
6642
8282
  self._values["working_directory"] = working_directory
6643
8283
  if continue_on_error is not None:
@@ -6689,6 +8329,18 @@ class UploadArtifactOptions(_JobStepConfiguration_9caff420):
6689
8329
  result = self._values.get("name")
6690
8330
  return typing.cast(typing.Optional[builtins.str], result)
6691
8331
 
8332
+ @builtins.property
8333
+ def shell(self) -> typing.Optional[builtins.str]:
8334
+ '''(experimental) Overrides the default shell settings in the runner's operating system and the job's default.
8335
+
8336
+ Refer to GitHub documentation for allowed values.
8337
+
8338
+ :see: https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsshell
8339
+ :stability: experimental
8340
+ '''
8341
+ result = self._values.get("shell")
8342
+ return typing.cast(typing.Optional[builtins.str], result)
8343
+
6692
8344
  @builtins.property
6693
8345
  def working_directory(self) -> typing.Optional[builtins.str]:
6694
8346
  '''(experimental) Specifies a working directory for a step.
@@ -6750,7 +8402,9 @@ class UploadArtifactOptions(_JobStepConfiguration_9caff420):
6750
8402
  "path": "path",
6751
8403
  "compression_level": "compressionLevel",
6752
8404
  "if_no_files_found": "ifNoFilesFound",
8405
+ "include_hidden_files": "includeHiddenFiles",
6753
8406
  "name": "name",
8407
+ "overwrite": "overwrite",
6754
8408
  "retention_days": "retentionDays",
6755
8409
  },
6756
8410
  )
@@ -6761,14 +8415,18 @@ class UploadArtifactWith:
6761
8415
  path: builtins.str,
6762
8416
  compression_level: typing.Optional[jsii.Number] = None,
6763
8417
  if_no_files_found: typing.Optional[builtins.str] = None,
8418
+ include_hidden_files: typing.Optional[builtins.bool] = None,
6764
8419
  name: typing.Optional[builtins.str] = None,
8420
+ overwrite: typing.Optional[builtins.bool] = None,
6765
8421
  retention_days: typing.Optional[jsii.Number] = None,
6766
8422
  ) -> None:
6767
8423
  '''
6768
8424
  :param path: (experimental) A file, directory or wildcard pattern that describes what to upload.
6769
8425
  :param compression_level: (experimental) The level of compression for Zlib to be applied to the artifact archive. The value can range from 0 to 9. For large files that are not easily compressed, a value of 0 is recommended for significantly faster uploads. Default: 6
6770
8426
  :param if_no_files_found: (experimental) The desired behavior if no files are found using the provided path. Available Options: warn: Output a warning but do not fail the action error: Fail the action with an error message ignore: Do not output any warnings or errors, the action does not fail Default: "warn"
8427
+ :param include_hidden_files: (experimental) Whether to include hidden files in the provided path in the artifact. The file contents of any hidden files in the path should be validated before enabled this to avoid uploading sensitive information. Default: false
6771
8428
  :param name: (experimental) Name of the artifact to upload. Default: "artifact"
8429
+ :param overwrite: (experimental) Whether action should overwrite an existing artifact with the same name (should one exist). Introduced in v4 and represents a breaking change from the behavior of the v3 action. To maintain backwards compatibility with existing, this should be set the ``true`` (the default). Default: true
6772
8430
  :param retention_days: (experimental) Duration after which artifact will expire in days. 0 means using default repository retention. Minimum 1 day. Maximum 90 days unless changed from the repository settings page. Default: - The default repository retention
6773
8431
 
6774
8432
  :stability: experimental
@@ -6778,7 +8436,9 @@ class UploadArtifactWith:
6778
8436
  check_type(argname="argument path", value=path, expected_type=type_hints["path"])
6779
8437
  check_type(argname="argument compression_level", value=compression_level, expected_type=type_hints["compression_level"])
6780
8438
  check_type(argname="argument if_no_files_found", value=if_no_files_found, expected_type=type_hints["if_no_files_found"])
8439
+ check_type(argname="argument include_hidden_files", value=include_hidden_files, expected_type=type_hints["include_hidden_files"])
6781
8440
  check_type(argname="argument name", value=name, expected_type=type_hints["name"])
8441
+ check_type(argname="argument overwrite", value=overwrite, expected_type=type_hints["overwrite"])
6782
8442
  check_type(argname="argument retention_days", value=retention_days, expected_type=type_hints["retention_days"])
6783
8443
  self._values: typing.Dict[builtins.str, typing.Any] = {
6784
8444
  "path": path,
@@ -6787,8 +8447,12 @@ class UploadArtifactWith:
6787
8447
  self._values["compression_level"] = compression_level
6788
8448
  if if_no_files_found is not None:
6789
8449
  self._values["if_no_files_found"] = if_no_files_found
8450
+ if include_hidden_files is not None:
8451
+ self._values["include_hidden_files"] = include_hidden_files
6790
8452
  if name is not None:
6791
8453
  self._values["name"] = name
8454
+ if overwrite is not None:
8455
+ self._values["overwrite"] = overwrite
6792
8456
  if retention_days is not None:
6793
8457
  self._values["retention_days"] = retention_days
6794
8458
 
@@ -6832,6 +8496,19 @@ class UploadArtifactWith:
6832
8496
  result = self._values.get("if_no_files_found")
6833
8497
  return typing.cast(typing.Optional[builtins.str], result)
6834
8498
 
8499
+ @builtins.property
8500
+ def include_hidden_files(self) -> typing.Optional[builtins.bool]:
8501
+ '''(experimental) Whether to include hidden files in the provided path in the artifact.
8502
+
8503
+ The file contents of any hidden files in the path should be validated before enabled this to avoid uploading sensitive information.
8504
+
8505
+ :default: false
8506
+
8507
+ :stability: experimental
8508
+ '''
8509
+ result = self._values.get("include_hidden_files")
8510
+ return typing.cast(typing.Optional[builtins.bool], result)
8511
+
6835
8512
  @builtins.property
6836
8513
  def name(self) -> typing.Optional[builtins.str]:
6837
8514
  '''(experimental) Name of the artifact to upload.
@@ -6843,6 +8520,20 @@ class UploadArtifactWith:
6843
8520
  result = self._values.get("name")
6844
8521
  return typing.cast(typing.Optional[builtins.str], result)
6845
8522
 
8523
+ @builtins.property
8524
+ def overwrite(self) -> typing.Optional[builtins.bool]:
8525
+ '''(experimental) Whether action should overwrite an existing artifact with the same name (should one exist).
8526
+
8527
+ Introduced in v4 and represents a breaking change from the behavior of the v3 action.
8528
+ To maintain backwards compatibility with existing, this should be set the ``true`` (the default).
8529
+
8530
+ :default: true
8531
+
8532
+ :stability: experimental
8533
+ '''
8534
+ result = self._values.get("overwrite")
8535
+ return typing.cast(typing.Optional[builtins.bool], result)
8536
+
6846
8537
  @builtins.property
6847
8538
  def retention_days(self) -> typing.Optional[jsii.Number]:
6848
8539
  '''(experimental) Duration after which artifact will expire in days. 0 means using default repository retention.
@@ -7047,6 +8738,7 @@ class WorkflowActions(
7047
8738
  patch_file: typing.Optional[builtins.str] = None,
7048
8739
  fetch_depth: typing.Optional[jsii.Number] = None,
7049
8740
  lfs: typing.Optional[builtins.bool] = None,
8741
+ path: typing.Optional[builtins.str] = None,
7050
8742
  ref: typing.Optional[builtins.str] = None,
7051
8743
  repository: typing.Optional[builtins.str] = None,
7052
8744
  token: typing.Optional[builtins.str] = None,
@@ -7056,6 +8748,7 @@ class WorkflowActions(
7056
8748
  :param patch_file: (experimental) The name of the artifact the patch is stored as. Default: ".repo.patch"
7057
8749
  :param fetch_depth: (experimental) Number of commits to fetch. 0 indicates all history for all branches and tags. Default: 1
7058
8750
  :param lfs: (experimental) Whether LFS is enabled for the GitHub repository. Default: false
8751
+ :param path: (experimental) Relative path under $GITHUB_WORKSPACE to place the repository. Default: - $GITHUB_WORKSPACE
7059
8752
  :param ref: (experimental) Branch or tag name. Default: - the default branch is implicitly used
7060
8753
  :param repository: (experimental) The repository (owner/repo) to use. Default: - the default repository is implicitly used
7061
8754
  :param token: (experimental) A GitHub token to use when checking out the repository. If the intent is to push changes back to the branch, then you must use a PAT with ``repo`` (and possibly ``workflows``) permissions. Default: - the default GITHUB_TOKEN is implicitly used
@@ -7068,6 +8761,7 @@ class WorkflowActions(
7068
8761
  patch_file=patch_file,
7069
8762
  fetch_depth=fetch_depth,
7070
8763
  lfs=lfs,
8764
+ path=path,
7071
8765
  ref=ref,
7072
8766
  repository=repository,
7073
8767
  token=token,
@@ -7102,7 +8796,7 @@ class WorkflowActions(
7102
8796
  :param base_branch: (experimental) Sets the pull request base branch. Default: - The branch checked out in the workflow.
7103
8797
  :param branch_name: (experimental) The pull request branch name. Default: ``github-actions/${options.workflowName}``
7104
8798
  :param credentials: (experimental) The job credentials used to create the pull request. Provided credentials must have permissions to create a pull request on the repository.
7105
- :param git_identity: (experimental) The git identity used to create the commit. Default: - the default github-actions user
8799
+ :param git_identity: (experimental) The git identity used to create the commit. Default: - default GitHub Actions user
7106
8800
  :param labels: (experimental) Labels to apply on the PR. Default: - no labels.
7107
8801
  :param signoff: (experimental) Add Signed-off-by line by the committer at the end of the commit log message. Default: true
7108
8802
  :param step_id: (experimental) The step ID which produces the output which indicates if a patch was created. Default: "create_pr"
@@ -7235,7 +8929,7 @@ class WorkflowJobs(metaclass=jsii.JSIIMeta, jsii_type="projen.github.WorkflowJob
7235
8929
  :param base_branch: (experimental) Sets the pull request base branch. Default: - The branch checked out in the workflow.
7236
8930
  :param branch_name: (experimental) The pull request branch name. Default: ``github-actions/${options.workflowName}``
7237
8931
  :param credentials: (experimental) The job credentials used to create the pull request. Provided credentials must have permissions to create a pull request on the repository.
7238
- :param git_identity: (experimental) The git identity used to create the commit. Default: - the default github-actions user
8932
+ :param git_identity: (experimental) The git identity used to create the commit. Default: - default GitHub Actions user
7239
8933
  :param labels: (experimental) Labels to apply on the PR. Default: - no labels.
7240
8934
  :param signoff: (experimental) Add Signed-off-by line by the committer at the end of the commit log message. Default: true
7241
8935
  :param step_id: (experimental) The step ID which produces the output which indicates if a patch was created. Default: "create_pr"
@@ -7291,6 +8985,7 @@ class WorkflowSteps(metaclass=jsii.JSIIMeta, jsii_type="projen.github.WorkflowSt
7291
8985
  id: typing.Optional[builtins.str] = None,
7292
8986
  if_: typing.Optional[builtins.str] = None,
7293
8987
  name: typing.Optional[builtins.str] = None,
8988
+ shell: typing.Optional[builtins.str] = None,
7294
8989
  working_directory: typing.Optional[builtins.str] = None,
7295
8990
  ) -> _JobStep_c3287c05:
7296
8991
  '''(experimental) Checks out a repository.
@@ -7302,6 +8997,7 @@ class WorkflowSteps(metaclass=jsii.JSIIMeta, jsii_type="projen.github.WorkflowSt
7302
8997
  :param id: (experimental) A unique identifier for the step. You can use the id to reference the step in contexts.
7303
8998
  :param if_: (experimental) You can use the if conditional to prevent a job from running unless a condition is met. You can use any supported context and expression to create a conditional.
7304
8999
  :param name: (experimental) A name for your step to display on GitHub.
9000
+ :param shell: (experimental) Overrides the default shell settings in the runner's operating system and the job's default. Refer to GitHub documentation for allowed values.
7305
9001
  :param working_directory: (experimental) Specifies a working directory for a step. Overrides a job's working directory.
7306
9002
 
7307
9003
  :return: A JobStep that checks out a repository
@@ -7316,11 +9012,57 @@ class WorkflowSteps(metaclass=jsii.JSIIMeta, jsii_type="projen.github.WorkflowSt
7316
9012
  id=id,
7317
9013
  if_=if_,
7318
9014
  name=name,
9015
+ shell=shell,
7319
9016
  working_directory=working_directory,
7320
9017
  )
7321
9018
 
7322
9019
  return typing.cast(_JobStep_c3287c05, jsii.sinvoke(cls, "checkout", [options]))
7323
9020
 
9021
+ @jsii.member(jsii_name="downloadArtifact")
9022
+ @builtins.classmethod
9023
+ def download_artifact(
9024
+ cls,
9025
+ *,
9026
+ with_: typing.Union[DownloadArtifactWith, typing.Dict[builtins.str, typing.Any]],
9027
+ continue_on_error: typing.Optional[builtins.bool] = None,
9028
+ timeout_minutes: typing.Optional[jsii.Number] = None,
9029
+ env: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
9030
+ id: typing.Optional[builtins.str] = None,
9031
+ if_: typing.Optional[builtins.str] = None,
9032
+ name: typing.Optional[builtins.str] = None,
9033
+ shell: typing.Optional[builtins.str] = None,
9034
+ working_directory: typing.Optional[builtins.str] = None,
9035
+ ) -> _JobStep_c3287c05:
9036
+ '''(experimental) Downloads an artifact.
9037
+
9038
+ :param with_: (experimental) Options for ``download-artifact``.
9039
+ :param continue_on_error: (experimental) Prevents a job from failing when a step fails. Set to true to allow a job to pass when this step fails.
9040
+ :param timeout_minutes: (experimental) The maximum number of minutes to run the step before killing the process.
9041
+ :param env: (experimental) Sets environment variables for steps to use in the runner environment. You can also set environment variables for the entire workflow or a job.
9042
+ :param id: (experimental) A unique identifier for the step. You can use the id to reference the step in contexts.
9043
+ :param if_: (experimental) You can use the if conditional to prevent a job from running unless a condition is met. You can use any supported context and expression to create a conditional.
9044
+ :param name: (experimental) A name for your step to display on GitHub.
9045
+ :param shell: (experimental) Overrides the default shell settings in the runner's operating system and the job's default. Refer to GitHub documentation for allowed values.
9046
+ :param working_directory: (experimental) Specifies a working directory for a step. Overrides a job's working directory.
9047
+
9048
+ :return: A JobStep that downloads an artifact
9049
+
9050
+ :stability: experimental
9051
+ '''
9052
+ options = DownloadArtifactOptions(
9053
+ with_=with_,
9054
+ continue_on_error=continue_on_error,
9055
+ timeout_minutes=timeout_minutes,
9056
+ env=env,
9057
+ id=id,
9058
+ if_=if_,
9059
+ name=name,
9060
+ shell=shell,
9061
+ working_directory=working_directory,
9062
+ )
9063
+
9064
+ return typing.cast(_JobStep_c3287c05, jsii.sinvoke(cls, "downloadArtifact", [options]))
9065
+
7324
9066
  @jsii.member(jsii_name="setupGitIdentity")
7325
9067
  @builtins.classmethod
7326
9068
  def setup_git_identity(
@@ -7333,6 +9075,7 @@ class WorkflowSteps(metaclass=jsii.JSIIMeta, jsii_type="projen.github.WorkflowSt
7333
9075
  id: typing.Optional[builtins.str] = None,
7334
9076
  if_: typing.Optional[builtins.str] = None,
7335
9077
  name: typing.Optional[builtins.str] = None,
9078
+ shell: typing.Optional[builtins.str] = None,
7336
9079
  working_directory: typing.Optional[builtins.str] = None,
7337
9080
  ) -> _JobStep_c3287c05:
7338
9081
  '''(experimental) Configures the git identity (user name and email).
@@ -7344,6 +9087,7 @@ class WorkflowSteps(metaclass=jsii.JSIIMeta, jsii_type="projen.github.WorkflowSt
7344
9087
  :param id: (experimental) A unique identifier for the step. You can use the id to reference the step in contexts.
7345
9088
  :param if_: (experimental) You can use the if conditional to prevent a job from running unless a condition is met. You can use any supported context and expression to create a conditional.
7346
9089
  :param name: (experimental) A name for your step to display on GitHub.
9090
+ :param shell: (experimental) Overrides the default shell settings in the runner's operating system and the job's default. Refer to GitHub documentation for allowed values.
7347
9091
  :param working_directory: (experimental) Specifies a working directory for a step. Overrides a job's working directory.
7348
9092
 
7349
9093
  :return: Job step that configures the provided git identity
@@ -7358,6 +9102,7 @@ class WorkflowSteps(metaclass=jsii.JSIIMeta, jsii_type="projen.github.WorkflowSt
7358
9102
  id=id,
7359
9103
  if_=if_,
7360
9104
  name=name,
9105
+ shell=shell,
7361
9106
  working_directory=working_directory,
7362
9107
  )
7363
9108
 
@@ -7375,6 +9120,7 @@ class WorkflowSteps(metaclass=jsii.JSIIMeta, jsii_type="projen.github.WorkflowSt
7375
9120
  id: typing.Optional[builtins.str] = None,
7376
9121
  if_: typing.Optional[builtins.str] = None,
7377
9122
  name: typing.Optional[builtins.str] = None,
9123
+ shell: typing.Optional[builtins.str] = None,
7378
9124
  working_directory: typing.Optional[builtins.str] = None,
7379
9125
  ) -> _JobStep_c3287c05:
7380
9126
  '''(experimental) Checks if a tag exists.
@@ -7392,6 +9138,7 @@ class WorkflowSteps(metaclass=jsii.JSIIMeta, jsii_type="projen.github.WorkflowSt
7392
9138
  :param id: (experimental) A unique identifier for the step. You can use the id to reference the step in contexts.
7393
9139
  :param if_: (experimental) You can use the if conditional to prevent a job from running unless a condition is met. You can use any supported context and expression to create a conditional.
7394
9140
  :param name: (experimental) A name for your step to display on GitHub.
9141
+ :param shell: (experimental) Overrides the default shell settings in the runner's operating system and the job's default. Refer to GitHub documentation for allowed values.
7395
9142
  :param working_directory: (experimental) Specifies a working directory for a step. Overrides a job's working directory.
7396
9143
 
7397
9144
  :return: Job step that checks if the provided tag exists
@@ -7408,6 +9155,7 @@ class WorkflowSteps(metaclass=jsii.JSIIMeta, jsii_type="projen.github.WorkflowSt
7408
9155
  id=id,
7409
9156
  if_=if_,
7410
9157
  name=name,
9158
+ shell=shell,
7411
9159
  working_directory=working_directory,
7412
9160
  )
7413
9161
 
@@ -7425,6 +9173,7 @@ class WorkflowSteps(metaclass=jsii.JSIIMeta, jsii_type="projen.github.WorkflowSt
7425
9173
  id: typing.Optional[builtins.str] = None,
7426
9174
  if_: typing.Optional[builtins.str] = None,
7427
9175
  name: typing.Optional[builtins.str] = None,
9176
+ shell: typing.Optional[builtins.str] = None,
7428
9177
  working_directory: typing.Optional[builtins.str] = None,
7429
9178
  ) -> _JobStep_c3287c05:
7430
9179
  '''(experimental) Uploads an artifact.
@@ -7436,6 +9185,7 @@ class WorkflowSteps(metaclass=jsii.JSIIMeta, jsii_type="projen.github.WorkflowSt
7436
9185
  :param id: (experimental) A unique identifier for the step. You can use the id to reference the step in contexts.
7437
9186
  :param if_: (experimental) You can use the if conditional to prevent a job from running unless a condition is met. You can use any supported context and expression to create a conditional.
7438
9187
  :param name: (experimental) A name for your step to display on GitHub.
9188
+ :param shell: (experimental) Overrides the default shell settings in the runner's operating system and the job's default. Refer to GitHub documentation for allowed values.
7439
9189
  :param working_directory: (experimental) Specifies a working directory for a step. Overrides a job's working directory.
7440
9190
 
7441
9191
  :return: A JobStep that uploads an artifact
@@ -7450,6 +9200,7 @@ class WorkflowSteps(metaclass=jsii.JSIIMeta, jsii_type="projen.github.WorkflowSt
7450
9200
  id=id,
7451
9201
  if_=if_,
7452
9202
  name=name,
9203
+ shell=shell,
7453
9204
  working_directory=working_directory,
7454
9205
  )
7455
9206
 
@@ -7461,19 +9212,27 @@ __all__ = [
7461
9212
  "AutoApproveOptions",
7462
9213
  "AutoMerge",
7463
9214
  "AutoMergeOptions",
9215
+ "AutoQueue",
9216
+ "AutoQueueOptions",
7464
9217
  "CheckoutOptions",
7465
9218
  "CheckoutWith",
7466
9219
  "CheckoutWithPatchOptions",
9220
+ "ConcurrencyOptions",
7467
9221
  "ContributorStatementOptions",
7468
9222
  "CreatePullRequestOptions",
7469
9223
  "Dependabot",
7470
9224
  "DependabotAllow",
7471
9225
  "DependabotGroup",
9226
+ "DependabotGroupAppliesTo",
9227
+ "DependabotGroupDependencyType",
9228
+ "DependabotGroupUpdateType",
7472
9229
  "DependabotIgnore",
7473
9230
  "DependabotOptions",
7474
9231
  "DependabotRegistry",
7475
9232
  "DependabotRegistryType",
7476
9233
  "DependabotScheduleInterval",
9234
+ "DownloadArtifactOptions",
9235
+ "DownloadArtifactWith",
7477
9236
  "GitHub",
7478
9237
  "GitHubActionsProvider",
7479
9238
  "GitHubOptions",
@@ -7486,11 +9245,16 @@ __all__ = [
7486
9245
  "GithubWorkflow",
7487
9246
  "GithubWorkflowOptions",
7488
9247
  "IAddConditionsLater",
9248
+ "MergeMethod",
9249
+ "MergeQueue",
9250
+ "MergeQueueOptions",
7489
9251
  "Mergify",
7490
9252
  "MergifyConditionalOperator",
7491
9253
  "MergifyOptions",
7492
9254
  "MergifyQueue",
7493
9255
  "MergifyRule",
9256
+ "PullRequestBackport",
9257
+ "PullRequestBackportOptions",
7494
9258
  "PullRequestFromPatchOptions",
7495
9259
  "PullRequestLint",
7496
9260
  "PullRequestLintOptions",
@@ -7577,12 +9341,38 @@ def _typecheckingstub__a8ab02e50aae05e5a55d4a4adc4369d19ed7205ed83b7ca13d32b3d62
7577
9341
  """Type checking stubs"""
7578
9342
  pass
7579
9343
 
9344
+ def _typecheckingstub__d1a61bf6b1de263219ae71fb7c610ca1482abce41103e188b62ebe38e0314b58(
9345
+ scope: _constructs_77d1e7e8.IConstruct,
9346
+ *,
9347
+ allowed_usernames: typing.Optional[typing.Sequence[builtins.str]] = None,
9348
+ labels: typing.Optional[typing.Sequence[builtins.str]] = None,
9349
+ merge_method: typing.Optional[MergeMethod] = None,
9350
+ projen_credentials: typing.Optional[GithubCredentials] = None,
9351
+ runs_on: typing.Optional[typing.Sequence[builtins.str]] = None,
9352
+ target_branches: typing.Optional[typing.Sequence[builtins.str]] = None,
9353
+ ) -> None:
9354
+ """Type checking stubs"""
9355
+ pass
9356
+
9357
+ def _typecheckingstub__f138097d225158d553505a4839bf1c114c4a0e41bc55b7d24234176015382a5d(
9358
+ *,
9359
+ allowed_usernames: typing.Optional[typing.Sequence[builtins.str]] = None,
9360
+ labels: typing.Optional[typing.Sequence[builtins.str]] = None,
9361
+ merge_method: typing.Optional[MergeMethod] = None,
9362
+ projen_credentials: typing.Optional[GithubCredentials] = None,
9363
+ runs_on: typing.Optional[typing.Sequence[builtins.str]] = None,
9364
+ target_branches: typing.Optional[typing.Sequence[builtins.str]] = None,
9365
+ ) -> None:
9366
+ """Type checking stubs"""
9367
+ pass
9368
+
7580
9369
  def _typecheckingstub__a17b4445d77135e079ad1d957d41f1a5ade398e6b6ba84b471b26b6adab221ac(
7581
9370
  *,
7582
9371
  env: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
7583
9372
  id: typing.Optional[builtins.str] = None,
7584
9373
  if_: typing.Optional[builtins.str] = None,
7585
9374
  name: typing.Optional[builtins.str] = None,
9375
+ shell: typing.Optional[builtins.str] = None,
7586
9376
  working_directory: typing.Optional[builtins.str] = None,
7587
9377
  continue_on_error: typing.Optional[builtins.bool] = None,
7588
9378
  timeout_minutes: typing.Optional[jsii.Number] = None,
@@ -7595,6 +9385,7 @@ def _typecheckingstub__57379070911f0df36ef38a23c138780de73f270c4e64ea8e6b7f4f128
7595
9385
  *,
7596
9386
  fetch_depth: typing.Optional[jsii.Number] = None,
7597
9387
  lfs: typing.Optional[builtins.bool] = None,
9388
+ path: typing.Optional[builtins.str] = None,
7598
9389
  ref: typing.Optional[builtins.str] = None,
7599
9390
  repository: typing.Optional[builtins.str] = None,
7600
9391
  token: typing.Optional[builtins.str] = None,
@@ -7606,6 +9397,7 @@ def _typecheckingstub__c7405ea05e49b1f743e00dc103618fbd659c979bbec234492b8928ed6
7606
9397
  *,
7607
9398
  fetch_depth: typing.Optional[jsii.Number] = None,
7608
9399
  lfs: typing.Optional[builtins.bool] = None,
9400
+ path: typing.Optional[builtins.str] = None,
7609
9401
  ref: typing.Optional[builtins.str] = None,
7610
9402
  repository: typing.Optional[builtins.str] = None,
7611
9403
  token: typing.Optional[builtins.str] = None,
@@ -7614,6 +9406,14 @@ def _typecheckingstub__c7405ea05e49b1f743e00dc103618fbd659c979bbec234492b8928ed6
7614
9406
  """Type checking stubs"""
7615
9407
  pass
7616
9408
 
9409
+ def _typecheckingstub__c4114f6f3330f94beb00dba1183281a663b31179a714c1f1412277b784153015(
9410
+ *,
9411
+ cancel_in_progress: typing.Optional[builtins.bool] = None,
9412
+ group: typing.Optional[builtins.str] = None,
9413
+ ) -> None:
9414
+ """Type checking stubs"""
9415
+ pass
9416
+
7617
9417
  def _typecheckingstub__4bf4a36aad325b457168493fe21f1efbc534c83e8685d03341390fcbf3d1c0bc(
7618
9418
  *,
7619
9419
  exempt_labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -7653,6 +9453,7 @@ def _typecheckingstub__2caae883697ce14c090e89c8fd0dbbab7e7c0f31d6d4d66311f05a679
7653
9453
  registries: typing.Optional[typing.Mapping[builtins.str, typing.Union[DependabotRegistry, typing.Dict[builtins.str, typing.Any]]]] = None,
7654
9454
  reviewers: typing.Optional[typing.Sequence[builtins.str]] = None,
7655
9455
  schedule_interval: typing.Optional[DependabotScheduleInterval] = None,
9456
+ target_branch: typing.Optional[builtins.str] = None,
7656
9457
  versioning_strategy: typing.Optional[VersioningStrategy] = None,
7657
9458
  ) -> None:
7658
9459
  """Type checking stubs"""
@@ -7681,7 +9482,10 @@ def _typecheckingstub__95f7e72bd3f0d0b83df633a27522aaab6cab1baeaf4b90de44beff992
7681
9482
  def _typecheckingstub__97650f1e1a170d34a5bd50211445090d04d890ec494749c1eb3f5a1fabbec7d4(
7682
9483
  *,
7683
9484
  patterns: typing.Sequence[builtins.str],
9485
+ applies_to: typing.Optional[DependabotGroupAppliesTo] = None,
9486
+ dependency_type: typing.Optional[DependabotGroupDependencyType] = None,
7684
9487
  exclude_patterns: typing.Optional[typing.Sequence[builtins.str]] = None,
9488
+ update_types: typing.Optional[typing.Sequence[DependabotGroupUpdateType]] = None,
7685
9489
  ) -> None:
7686
9490
  """Type checking stubs"""
7687
9491
  pass
@@ -7706,6 +9510,7 @@ def _typecheckingstub__d0078e67a79ce21c460b876a72b4fbd4a358306502062bdf9bdb13085
7706
9510
  registries: typing.Optional[typing.Mapping[builtins.str, typing.Union[DependabotRegistry, typing.Dict[builtins.str, typing.Any]]]] = None,
7707
9511
  reviewers: typing.Optional[typing.Sequence[builtins.str]] = None,
7708
9512
  schedule_interval: typing.Optional[DependabotScheduleInterval] = None,
9513
+ target_branch: typing.Optional[builtins.str] = None,
7709
9514
  versioning_strategy: typing.Optional[VersioningStrategy] = None,
7710
9515
  ) -> None:
7711
9516
  """Type checking stubs"""
@@ -7725,14 +9530,46 @@ def _typecheckingstub__71dcef0810bce091e26ea45c125fc125b6b541331dd4f1fa62466d1f5
7725
9530
  """Type checking stubs"""
7726
9531
  pass
7727
9532
 
9533
+ def _typecheckingstub__c7f153d5c1001fcb119385a05448ea85e212f46cc420d578734261b8353a641b(
9534
+ *,
9535
+ env: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
9536
+ id: typing.Optional[builtins.str] = None,
9537
+ if_: typing.Optional[builtins.str] = None,
9538
+ name: typing.Optional[builtins.str] = None,
9539
+ shell: typing.Optional[builtins.str] = None,
9540
+ working_directory: typing.Optional[builtins.str] = None,
9541
+ continue_on_error: typing.Optional[builtins.bool] = None,
9542
+ timeout_minutes: typing.Optional[jsii.Number] = None,
9543
+ with_: typing.Union[DownloadArtifactWith, typing.Dict[builtins.str, typing.Any]],
9544
+ ) -> None:
9545
+ """Type checking stubs"""
9546
+ pass
9547
+
9548
+ def _typecheckingstub__3e5008f68a85d8490ecf62a54f413b82cc795d9a14d3bc8eabcc2720f31de50c(
9549
+ *,
9550
+ merge_multiple: typing.Optional[builtins.bool] = None,
9551
+ name: typing.Optional[builtins.str] = None,
9552
+ path: typing.Optional[builtins.str] = None,
9553
+ pattern: typing.Optional[builtins.str] = None,
9554
+ repository: typing.Optional[builtins.str] = None,
9555
+ run_id: typing.Optional[builtins.str] = None,
9556
+ token: typing.Optional[builtins.str] = None,
9557
+ ) -> None:
9558
+ """Type checking stubs"""
9559
+ pass
9560
+
7728
9561
  def _typecheckingstub__65db11e8703472c7fa4e013294c649e43b7f8634b29ca11be71b46d8c549c4d1(
7729
9562
  project: _Project_57d89203,
7730
9563
  *,
7731
9564
  download_lfs: typing.Optional[builtins.bool] = None,
9565
+ merge_queue: typing.Optional[builtins.bool] = None,
9566
+ merge_queue_options: typing.Optional[typing.Union[MergeQueueOptions, typing.Dict[builtins.str, typing.Any]]] = None,
7732
9567
  mergify: typing.Optional[builtins.bool] = None,
7733
9568
  mergify_options: typing.Optional[typing.Union[MergifyOptions, typing.Dict[builtins.str, typing.Any]]] = None,
7734
9569
  projen_credentials: typing.Optional[GithubCredentials] = None,
7735
9570
  projen_token_secret: typing.Optional[builtins.str] = None,
9571
+ pull_request_backport: typing.Optional[builtins.bool] = None,
9572
+ pull_request_backport_options: typing.Optional[typing.Union[PullRequestBackportOptions, typing.Dict[builtins.str, typing.Any]]] = None,
7736
9573
  pull_request_lint: typing.Optional[builtins.bool] = None,
7737
9574
  pull_request_lint_options: typing.Optional[typing.Union[PullRequestLintOptions, typing.Dict[builtins.str, typing.Any]]] = None,
7738
9575
  workflows: typing.Optional[builtins.bool] = None,
@@ -7780,10 +9617,14 @@ def _typecheckingstub__20166ac47381861e1a45b550a5e9646380c52a927fca9ebf00ec36dab
7780
9617
  def _typecheckingstub__c22e66f011c96f13a6f4e5b07bb676bf98b477678e968ee61f79ee107a7d2bd7(
7781
9618
  *,
7782
9619
  download_lfs: typing.Optional[builtins.bool] = None,
9620
+ merge_queue: typing.Optional[builtins.bool] = None,
9621
+ merge_queue_options: typing.Optional[typing.Union[MergeQueueOptions, typing.Dict[builtins.str, typing.Any]]] = None,
7783
9622
  mergify: typing.Optional[builtins.bool] = None,
7784
9623
  mergify_options: typing.Optional[typing.Union[MergifyOptions, typing.Dict[builtins.str, typing.Any]]] = None,
7785
9624
  projen_credentials: typing.Optional[GithubCredentials] = None,
7786
9625
  projen_token_secret: typing.Optional[builtins.str] = None,
9626
+ pull_request_backport: typing.Optional[builtins.bool] = None,
9627
+ pull_request_backport_options: typing.Optional[typing.Union[PullRequestBackportOptions, typing.Dict[builtins.str, typing.Any]]] = None,
7787
9628
  pull_request_lint: typing.Optional[builtins.bool] = None,
7788
9629
  pull_request_lint_options: typing.Optional[typing.Union[PullRequestLintOptions, typing.Dict[builtins.str, typing.Any]]] = None,
7789
9630
  workflows: typing.Optional[builtins.bool] = None,
@@ -7843,8 +9684,10 @@ def _typecheckingstub__f9975d58a3cca9992aa51d0da1572c207d374c146dec0474fc911a567
7843
9684
  def _typecheckingstub__cfe552d6288d1f706792afe5f041e666db050b8d0d3bb7062899a3bdefe652a8(
7844
9685
  *,
7845
9686
  app_id_secret: typing.Optional[builtins.str] = None,
9687
+ owner: typing.Optional[builtins.str] = None,
7846
9688
  permissions: typing.Optional[typing.Union[_AppPermissions_59709d51, typing.Dict[builtins.str, typing.Any]]] = None,
7847
9689
  private_key_secret: typing.Optional[builtins.str] = None,
9690
+ repositories: typing.Optional[typing.Sequence[builtins.str]] = None,
7848
9691
  ) -> None:
7849
9692
  """Type checking stubs"""
7850
9693
  pass
@@ -7860,8 +9703,11 @@ def _typecheckingstub__ca4f375b4fda039fc4fb5b2f4ad26a9d1695085d170d2d76e6d720c7c
7860
9703
  github: GitHub,
7861
9704
  name: builtins.str,
7862
9705
  *,
7863
- concurrency: typing.Optional[builtins.str] = None,
9706
+ concurrency_options: typing.Optional[typing.Union[ConcurrencyOptions, typing.Dict[builtins.str, typing.Any]]] = None,
9707
+ env: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
9708
+ file_name: typing.Optional[builtins.str] = None,
7864
9709
  force: typing.Optional[builtins.bool] = None,
9710
+ limit_concurrency: typing.Optional[builtins.bool] = None,
7865
9711
  ) -> None:
7866
9712
  """Type checking stubs"""
7867
9713
  pass
@@ -7912,8 +9758,30 @@ def _typecheckingstub__a6273080200c7722c9774364ee8460bccd3337cd48edc420530ca75f7
7912
9758
 
7913
9759
  def _typecheckingstub__c779b00d3df0cff3a9570cc6ed35339952399a898d5854423c3329b55bf736ec(
7914
9760
  *,
7915
- concurrency: typing.Optional[builtins.str] = None,
9761
+ concurrency_options: typing.Optional[typing.Union[ConcurrencyOptions, typing.Dict[builtins.str, typing.Any]]] = None,
9762
+ env: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
9763
+ file_name: typing.Optional[builtins.str] = None,
7916
9764
  force: typing.Optional[builtins.bool] = None,
9765
+ limit_concurrency: typing.Optional[builtins.bool] = None,
9766
+ ) -> None:
9767
+ """Type checking stubs"""
9768
+ pass
9769
+
9770
+ def _typecheckingstub__8d0860f4805d4f3404f9b940157e555ab934aaea8c3deecc2681f63f23129dc7(
9771
+ scope: _constructs_77d1e7e8.IConstruct,
9772
+ *,
9773
+ auto_queue: typing.Optional[builtins.bool] = None,
9774
+ auto_queue_options: typing.Optional[typing.Union[AutoQueueOptions, typing.Dict[builtins.str, typing.Any]]] = None,
9775
+ target_branches: typing.Optional[typing.Sequence[builtins.str]] = None,
9776
+ ) -> None:
9777
+ """Type checking stubs"""
9778
+ pass
9779
+
9780
+ def _typecheckingstub__5ed41b74ffbee4fd52a12674b58bd68e113a707d7c3dec6e1ecb7f9647debbc3(
9781
+ *,
9782
+ auto_queue: typing.Optional[builtins.bool] = None,
9783
+ auto_queue_options: typing.Optional[typing.Union[AutoQueueOptions, typing.Dict[builtins.str, typing.Any]]] = None,
9784
+ target_branches: typing.Optional[typing.Sequence[builtins.str]] = None,
7917
9785
  ) -> None:
7918
9786
  """Type checking stubs"""
7919
9787
  pass
@@ -7945,9 +9813,12 @@ def _typecheckingstub__527734fcd5357c536553ff5f47fe5062b93958305a451f587c870879e
7945
9813
 
7946
9814
  def _typecheckingstub__0471efd0a49bc64e556512e765a1df23d4a975f26cb6de765579b4173907f467(
7947
9815
  *,
7948
- conditions: typing.Sequence[typing.Union[builtins.str, typing.Union[MergifyConditionalOperator, typing.Dict[builtins.str, typing.Any]]]],
9816
+ commit_message_template: builtins.str,
7949
9817
  name: builtins.str,
9818
+ conditions: typing.Optional[typing.Sequence[typing.Union[builtins.str, typing.Union[MergifyConditionalOperator, typing.Dict[builtins.str, typing.Any]]]]] = None,
9819
+ merge_conditions: typing.Optional[typing.Sequence[typing.Union[builtins.str, typing.Union[MergifyConditionalOperator, typing.Dict[builtins.str, typing.Any]]]]] = None,
7950
9820
  merge_method: typing.Optional[builtins.str] = None,
9821
+ queue_conditions: typing.Optional[typing.Sequence[typing.Union[builtins.str, typing.Union[MergifyConditionalOperator, typing.Dict[builtins.str, typing.Any]]]]] = None,
7951
9822
  update_method: typing.Optional[builtins.str] = None,
7952
9823
  ) -> None:
7953
9824
  """Type checking stubs"""
@@ -7962,6 +9833,33 @@ def _typecheckingstub__95405391335691b357d88cc73d37d1ee20fceae6cf671811812f63972
7962
9833
  """Type checking stubs"""
7963
9834
  pass
7964
9835
 
9836
+ def _typecheckingstub__a321227b5ffc19f1220367db19ad9a6c84aec3e2bf74ba19db5a89f3ee8c9ce4(
9837
+ scope: _constructs_77d1e7e8.IConstruct,
9838
+ *,
9839
+ auto_approve_backport: typing.Optional[builtins.bool] = None,
9840
+ backport_branch_name_prefix: typing.Optional[builtins.str] = None,
9841
+ backport_pr_labels: typing.Optional[typing.Sequence[builtins.str]] = None,
9842
+ branches: typing.Optional[typing.Sequence[builtins.str]] = None,
9843
+ create_with_conflicts: typing.Optional[builtins.bool] = None,
9844
+ label_prefix: typing.Optional[builtins.str] = None,
9845
+ workflow_name: typing.Optional[builtins.str] = None,
9846
+ ) -> None:
9847
+ """Type checking stubs"""
9848
+ pass
9849
+
9850
+ def _typecheckingstub__066696cdba0d516ea035e9580a9e5c79c5a552ca23f78e5291d21811124a2a62(
9851
+ *,
9852
+ auto_approve_backport: typing.Optional[builtins.bool] = None,
9853
+ backport_branch_name_prefix: typing.Optional[builtins.str] = None,
9854
+ backport_pr_labels: typing.Optional[typing.Sequence[builtins.str]] = None,
9855
+ branches: typing.Optional[typing.Sequence[builtins.str]] = None,
9856
+ create_with_conflicts: typing.Optional[builtins.bool] = None,
9857
+ label_prefix: typing.Optional[builtins.str] = None,
9858
+ workflow_name: typing.Optional[builtins.str] = None,
9859
+ ) -> None:
9860
+ """Type checking stubs"""
9861
+ pass
9862
+
7965
9863
  def _typecheckingstub__0c1e5279fc8c18480c3113cc60b389aa13938b2052436bbdcb3069cfe669fa47(
7966
9864
  *,
7967
9865
  pull_request_description: builtins.str,
@@ -8013,6 +9911,7 @@ def _typecheckingstub__c3c9a28aa8266154d9a36adad571b3695e958b931e79b9eaff4a7dc55
8013
9911
  *,
8014
9912
  fetch_depth: typing.Optional[jsii.Number] = None,
8015
9913
  lfs: typing.Optional[builtins.bool] = None,
9914
+ path: typing.Optional[builtins.str] = None,
8016
9915
  ref: typing.Optional[builtins.str] = None,
8017
9916
  repository: typing.Optional[builtins.str] = None,
8018
9917
  token: typing.Optional[builtins.str] = None,
@@ -8047,6 +9946,7 @@ def _typecheckingstub__d8786063961cc00764e7c2005db60e7d427b8a81ce2275510888beb4e
8047
9946
  def _typecheckingstub__9d043d0484269cca19493b2d2d5c51f9cfe65a12520148f80ef37f6855457de0(
8048
9947
  *,
8049
9948
  require_scope: typing.Optional[builtins.bool] = None,
9949
+ scopes: typing.Optional[typing.Sequence[builtins.str]] = None,
8050
9950
  types: typing.Optional[typing.Sequence[builtins.str]] = None,
8051
9951
  ) -> None:
8052
9952
  """Type checking stubs"""
@@ -8058,6 +9958,7 @@ def _typecheckingstub__b9e40915fe7c519c231c73e9a63dfa1b1dee67586ebf4629165f8556f
8058
9958
  id: typing.Optional[builtins.str] = None,
8059
9959
  if_: typing.Optional[builtins.str] = None,
8060
9960
  name: typing.Optional[builtins.str] = None,
9961
+ shell: typing.Optional[builtins.str] = None,
8061
9962
  working_directory: typing.Optional[builtins.str] = None,
8062
9963
  continue_on_error: typing.Optional[builtins.bool] = None,
8063
9964
  timeout_minutes: typing.Optional[jsii.Number] = None,
@@ -8114,6 +10015,7 @@ def _typecheckingstub__8d4fb3030e96a87b921aa6bfb0d4ccf7a90d4c2affbcb8eeca2d5a24c
8114
10015
  container: typing.Optional[typing.Union[_ContainerOptions_f50907af, typing.Dict[builtins.str, typing.Any]]] = None,
8115
10016
  download_lfs: typing.Optional[builtins.bool] = None,
8116
10017
  env: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
10018
+ environment: typing.Optional[builtins.str] = None,
8117
10019
  git_identity: typing.Optional[typing.Union[GitIdentity, typing.Dict[builtins.str, typing.Any]]] = None,
8118
10020
  job_defaults: typing.Optional[typing.Union[_JobDefaults_965f0d10, typing.Dict[builtins.str, typing.Any]]] = None,
8119
10021
  outputs: typing.Optional[typing.Mapping[builtins.str, typing.Union[_JobStepOutput_acebe827, typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -8137,6 +10039,7 @@ def _typecheckingstub__8e35b96aa7e4fe84c59cac8c7e3f4c146c780c7b09807f610b1aaf727
8137
10039
  container: typing.Optional[typing.Union[_ContainerOptions_f50907af, typing.Dict[builtins.str, typing.Any]]] = None,
8138
10040
  download_lfs: typing.Optional[builtins.bool] = None,
8139
10041
  env: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
10042
+ environment: typing.Optional[builtins.str] = None,
8140
10043
  git_identity: typing.Optional[typing.Union[GitIdentity, typing.Dict[builtins.str, typing.Any]]] = None,
8141
10044
  job_defaults: typing.Optional[typing.Union[_JobDefaults_965f0d10, typing.Dict[builtins.str, typing.Any]]] = None,
8142
10045
  outputs: typing.Optional[typing.Mapping[builtins.str, typing.Union[_JobStepOutput_acebe827, typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -8158,6 +10061,7 @@ def _typecheckingstub__4f2039f9f0120fa5bcc0261afed5aa5fd2be59874413018ee781d5e75
8158
10061
  container: typing.Optional[typing.Union[_ContainerOptions_f50907af, typing.Dict[builtins.str, typing.Any]]] = None,
8159
10062
  download_lfs: typing.Optional[builtins.bool] = None,
8160
10063
  env: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
10064
+ environment: typing.Optional[builtins.str] = None,
8161
10065
  git_identity: typing.Optional[typing.Union[GitIdentity, typing.Dict[builtins.str, typing.Any]]] = None,
8162
10066
  job_defaults: typing.Optional[typing.Union[_JobDefaults_965f0d10, typing.Dict[builtins.str, typing.Any]]] = None,
8163
10067
  outputs: typing.Optional[typing.Mapping[builtins.str, typing.Union[_JobStepOutput_acebe827, typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -8179,6 +10083,7 @@ def _typecheckingstub__15e1c594f5876baf2e105789fcb541bcb5e71cea5ad4320fb67052a9c
8179
10083
  container: typing.Optional[typing.Union[_ContainerOptions_f50907af, typing.Dict[builtins.str, typing.Any]]] = None,
8180
10084
  download_lfs: typing.Optional[builtins.bool] = None,
8181
10085
  env: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
10086
+ environment: typing.Optional[builtins.str] = None,
8182
10087
  git_identity: typing.Optional[typing.Union[GitIdentity, typing.Dict[builtins.str, typing.Any]]] = None,
8183
10088
  job_defaults: typing.Optional[typing.Union[_JobDefaults_965f0d10, typing.Dict[builtins.str, typing.Any]]] = None,
8184
10089
  outputs: typing.Optional[typing.Mapping[builtins.str, typing.Union[_JobStepOutput_acebe827, typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -8201,6 +10106,7 @@ def _typecheckingstub__76a6b70b748b84dc156557f2c93bcd7ad0f6ba6fe077270e3f296f69c
8201
10106
  id: typing.Optional[builtins.str] = None,
8202
10107
  if_: typing.Optional[builtins.str] = None,
8203
10108
  name: typing.Optional[builtins.str] = None,
10109
+ shell: typing.Optional[builtins.str] = None,
8204
10110
  working_directory: typing.Optional[builtins.str] = None,
8205
10111
  continue_on_error: typing.Optional[builtins.bool] = None,
8206
10112
  timeout_minutes: typing.Optional[jsii.Number] = None,
@@ -8214,7 +10120,9 @@ def _typecheckingstub__ffa4e677bfd1bdf4c5e45f5ff5e0b2a238422bb1e8bf6bcf6bbbf0ff2
8214
10120
  path: builtins.str,
8215
10121
  compression_level: typing.Optional[jsii.Number] = None,
8216
10122
  if_no_files_found: typing.Optional[builtins.str] = None,
10123
+ include_hidden_files: typing.Optional[builtins.bool] = None,
8217
10124
  name: typing.Optional[builtins.str] = None,
10125
+ overwrite: typing.Optional[builtins.bool] = None,
8218
10126
  retention_days: typing.Optional[jsii.Number] = None,
8219
10127
  ) -> None:
8220
10128
  """Type checking stubs"""
@@ -8240,7 +10148,11 @@ def _typecheckingstub__696566a4c593a7173649d5eeaadb52edb8460487e95d469374dc3c01f
8240
10148
  id: typing.Optional[builtins.str] = None,
8241
10149
  if_: typing.Optional[builtins.str] = None,
8242
10150
  name: typing.Optional[builtins.str] = None,
10151
+ shell: typing.Optional[builtins.str] = None,
8243
10152
  working_directory: typing.Optional[builtins.str] = None,
8244
10153
  ) -> None:
8245
10154
  """Type checking stubs"""
8246
10155
  pass
10156
+
10157
+ for cls in [IAddConditionsLater]:
10158
+ typing.cast(typing.Any, cls).__protocol_attrs__ = typing.cast(typing.Any, cls).__protocol_attrs__ - set(['__jsii_proxy_class__', '__jsii_type__'])