projen 0.81.17__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
@@ -11,7 +11,22 @@ import jsii
11
11
  import publication
12
12
  import typing_extensions
13
13
 
14
- 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
15
30
 
16
31
  from .._jsii import *
17
32
 
@@ -273,7 +288,13 @@ class AutoMerge(
273
288
  metaclass=jsii.JSIIMeta,
274
289
  jsii_type="projen.github.AutoMerge",
275
290
  ):
276
- '''(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``.
277
298
 
278
299
  If ``buildJob`` is specified, the specified GitHub workflow job ID is required
279
300
  to succeed in order for the PR to be merged.
@@ -281,6 +302,7 @@ class AutoMerge(
281
302
  ``approvedReviews`` specified the number of code review approvals required for
282
303
  the PR to be merged.
283
304
 
305
+ :see: https://mergify.com/
284
306
  :stability: experimental
285
307
  '''
286
308
 
@@ -440,6 +462,219 @@ class AutoMergeOptions:
440
462
  )
441
463
 
442
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
+
443
678
  @jsii.data_type(
444
679
  jsii_type="projen.github.CheckoutOptions",
445
680
  jsii_struct_bases=[_JobStepConfiguration_9caff420],
@@ -448,6 +683,7 @@ class AutoMergeOptions:
448
683
  "id": "id",
449
684
  "if_": "if",
450
685
  "name": "name",
686
+ "shell": "shell",
451
687
  "working_directory": "workingDirectory",
452
688
  "continue_on_error": "continueOnError",
453
689
  "timeout_minutes": "timeoutMinutes",
@@ -462,6 +698,7 @@ class CheckoutOptions(_JobStepConfiguration_9caff420):
462
698
  id: typing.Optional[builtins.str] = None,
463
699
  if_: typing.Optional[builtins.str] = None,
464
700
  name: typing.Optional[builtins.str] = None,
701
+ shell: typing.Optional[builtins.str] = None,
465
702
  working_directory: typing.Optional[builtins.str] = None,
466
703
  continue_on_error: typing.Optional[builtins.bool] = None,
467
704
  timeout_minutes: typing.Optional[jsii.Number] = None,
@@ -472,6 +709,7 @@ class CheckoutOptions(_JobStepConfiguration_9caff420):
472
709
  :param id: (experimental) A unique identifier for the step. You can use the id to reference the step in contexts.
473
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.
474
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.
475
713
  :param working_directory: (experimental) Specifies a working directory for a step. Overrides a job's working directory.
476
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.
477
715
  :param timeout_minutes: (experimental) The maximum number of minutes to run the step before killing the process.
@@ -487,6 +725,7 @@ class CheckoutOptions(_JobStepConfiguration_9caff420):
487
725
  check_type(argname="argument id", value=id, expected_type=type_hints["id"])
488
726
  check_type(argname="argument if_", value=if_, expected_type=type_hints["if_"])
489
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"])
490
729
  check_type(argname="argument working_directory", value=working_directory, expected_type=type_hints["working_directory"])
491
730
  check_type(argname="argument continue_on_error", value=continue_on_error, expected_type=type_hints["continue_on_error"])
492
731
  check_type(argname="argument timeout_minutes", value=timeout_minutes, expected_type=type_hints["timeout_minutes"])
@@ -500,6 +739,8 @@ class CheckoutOptions(_JobStepConfiguration_9caff420):
500
739
  self._values["if_"] = if_
501
740
  if name is not None:
502
741
  self._values["name"] = name
742
+ if shell is not None:
743
+ self._values["shell"] = shell
503
744
  if working_directory is not None:
504
745
  self._values["working_directory"] = working_directory
505
746
  if continue_on_error is not None:
@@ -553,6 +794,18 @@ class CheckoutOptions(_JobStepConfiguration_9caff420):
553
794
  result = self._values.get("name")
554
795
  return typing.cast(typing.Optional[builtins.str], result)
555
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
+
556
809
  @builtins.property
557
810
  def working_directory(self) -> typing.Optional[builtins.str]:
558
811
  '''(experimental) Specifies a working directory for a step.
@@ -612,6 +865,7 @@ class CheckoutOptions(_JobStepConfiguration_9caff420):
612
865
  name_mapping={
613
866
  "fetch_depth": "fetchDepth",
614
867
  "lfs": "lfs",
868
+ "path": "path",
615
869
  "ref": "ref",
616
870
  "repository": "repository",
617
871
  "token": "token",
@@ -623,6 +877,7 @@ class CheckoutWith:
623
877
  *,
624
878
  fetch_depth: typing.Optional[jsii.Number] = None,
625
879
  lfs: typing.Optional[builtins.bool] = None,
880
+ path: typing.Optional[builtins.str] = None,
626
881
  ref: typing.Optional[builtins.str] = None,
627
882
  repository: typing.Optional[builtins.str] = None,
628
883
  token: typing.Optional[builtins.str] = None,
@@ -631,6 +886,7 @@ class CheckoutWith:
631
886
 
632
887
  :param fetch_depth: (experimental) Number of commits to fetch. 0 indicates all history for all branches and tags. Default: 1
633
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
634
890
  :param ref: (experimental) Branch or tag name. Default: - the default branch is implicitly used
635
891
  :param repository: (experimental) The repository (owner/repo) to use. Default: - the default repository is implicitly used
636
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
@@ -641,6 +897,7 @@ class CheckoutWith:
641
897
  type_hints = typing.get_type_hints(_typecheckingstub__57379070911f0df36ef38a23c138780de73f270c4e64ea8e6b7f4f128eb8ac6a)
642
898
  check_type(argname="argument fetch_depth", value=fetch_depth, expected_type=type_hints["fetch_depth"])
643
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"])
644
901
  check_type(argname="argument ref", value=ref, expected_type=type_hints["ref"])
645
902
  check_type(argname="argument repository", value=repository, expected_type=type_hints["repository"])
646
903
  check_type(argname="argument token", value=token, expected_type=type_hints["token"])
@@ -649,6 +906,8 @@ class CheckoutWith:
649
906
  self._values["fetch_depth"] = fetch_depth
650
907
  if lfs is not None:
651
908
  self._values["lfs"] = lfs
909
+ if path is not None:
910
+ self._values["path"] = path
652
911
  if ref is not None:
653
912
  self._values["ref"] = ref
654
913
  if repository is not None:
@@ -680,6 +939,17 @@ class CheckoutWith:
680
939
  result = self._values.get("lfs")
681
940
  return typing.cast(typing.Optional[builtins.bool], result)
682
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
+
683
953
  @builtins.property
684
954
  def ref(self) -> typing.Optional[builtins.str]:
685
955
  '''(experimental) Branch or tag name.
@@ -734,6 +1004,7 @@ class CheckoutWith:
734
1004
  name_mapping={
735
1005
  "fetch_depth": "fetchDepth",
736
1006
  "lfs": "lfs",
1007
+ "path": "path",
737
1008
  "ref": "ref",
738
1009
  "repository": "repository",
739
1010
  "token": "token",
@@ -746,6 +1017,7 @@ class CheckoutWithPatchOptions(CheckoutWith):
746
1017
  *,
747
1018
  fetch_depth: typing.Optional[jsii.Number] = None,
748
1019
  lfs: typing.Optional[builtins.bool] = None,
1020
+ path: typing.Optional[builtins.str] = None,
749
1021
  ref: typing.Optional[builtins.str] = None,
750
1022
  repository: typing.Optional[builtins.str] = None,
751
1023
  token: typing.Optional[builtins.str] = None,
@@ -755,6 +1027,7 @@ class CheckoutWithPatchOptions(CheckoutWith):
755
1027
 
756
1028
  :param fetch_depth: (experimental) Number of commits to fetch. 0 indicates all history for all branches and tags. Default: 1
757
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
758
1031
  :param ref: (experimental) Branch or tag name. Default: - the default branch is implicitly used
759
1032
  :param repository: (experimental) The repository (owner/repo) to use. Default: - the default repository is implicitly used
760
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
@@ -766,6 +1039,7 @@ class CheckoutWithPatchOptions(CheckoutWith):
766
1039
  type_hints = typing.get_type_hints(_typecheckingstub__c7405ea05e49b1f743e00dc103618fbd659c979bbec234492b8928ed6cf37e9b)
767
1040
  check_type(argname="argument fetch_depth", value=fetch_depth, expected_type=type_hints["fetch_depth"])
768
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"])
769
1043
  check_type(argname="argument ref", value=ref, expected_type=type_hints["ref"])
770
1044
  check_type(argname="argument repository", value=repository, expected_type=type_hints["repository"])
771
1045
  check_type(argname="argument token", value=token, expected_type=type_hints["token"])
@@ -775,6 +1049,8 @@ class CheckoutWithPatchOptions(CheckoutWith):
775
1049
  self._values["fetch_depth"] = fetch_depth
776
1050
  if lfs is not None:
777
1051
  self._values["lfs"] = lfs
1052
+ if path is not None:
1053
+ self._values["path"] = path
778
1054
  if ref is not None:
779
1055
  self._values["ref"] = ref
780
1056
  if repository is not None:
@@ -808,6 +1084,17 @@ class CheckoutWithPatchOptions(CheckoutWith):
808
1084
  result = self._values.get("lfs")
809
1085
  return typing.cast(typing.Optional[builtins.bool], result)
810
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
+
811
1098
  @builtins.property
812
1099
  def ref(self) -> typing.Optional[builtins.str]:
813
1100
  '''(experimental) Branch or tag name.
@@ -867,6 +1154,73 @@ class CheckoutWithPatchOptions(CheckoutWith):
867
1154
  )
868
1155
 
869
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
+
870
1224
  @jsii.data_type(
871
1225
  jsii_type="projen.github.ContributorStatementOptions",
872
1226
  jsii_struct_bases=[],
@@ -973,7 +1327,7 @@ class CreatePullRequestOptions:
973
1327
  :param base_branch: (experimental) Sets the pull request base branch. Default: - The branch checked out in the workflow.
974
1328
  :param branch_name: (experimental) The pull request branch name. Default: ``github-actions/${options.workflowName}``
975
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.
976
- :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
977
1331
  :param labels: (experimental) Labels to apply on the PR. Default: - no labels.
978
1332
  :param signoff: (experimental) Add Signed-off-by line by the committer at the end of the commit log message. Default: true
979
1333
  :param step_id: (experimental) The step ID which produces the output which indicates if a patch was created. Default: "create_pr"
@@ -1103,7 +1457,7 @@ class CreatePullRequestOptions:
1103
1457
  def git_identity(self) -> typing.Optional["GitIdentity"]:
1104
1458
  '''(experimental) The git identity used to create the commit.
1105
1459
 
1106
- :default: - the default github-actions user
1460
+ :default: - default GitHub Actions user
1107
1461
 
1108
1462
  :stability: experimental
1109
1463
  '''
@@ -1336,31 +1690,53 @@ class DependabotAllow:
1336
1690
  @jsii.data_type(
1337
1691
  jsii_type="projen.github.DependabotGroup",
1338
1692
  jsii_struct_bases=[],
1339
- 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
+ },
1340
1700
  )
1341
1701
  class DependabotGroup:
1342
1702
  def __init__(
1343
1703
  self,
1344
1704
  *,
1345
1705
  patterns: typing.Sequence[builtins.str],
1706
+ applies_to: typing.Optional["DependabotGroupAppliesTo"] = None,
1707
+ dependency_type: typing.Optional["DependabotGroupDependencyType"] = None,
1346
1708
  exclude_patterns: typing.Optional[typing.Sequence[builtins.str]] = None,
1709
+ update_types: typing.Optional[typing.Sequence["DependabotGroupUpdateType"]] = None,
1347
1710
  ) -> None:
1348
1711
  '''(experimental) Defines a single group for dependency updates.
1349
1712
 
1350
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
1351
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
1352
1718
 
1719
+ :see: https://docs.github.com/en/code-security/dependabot/working-with-dependabot/dependabot-options-reference#groups--
1353
1720
  :stability: experimental
1354
1721
  '''
1355
1722
  if __debug__:
1356
1723
  type_hints = typing.get_type_hints(_typecheckingstub__97650f1e1a170d34a5bd50211445090d04d890ec494749c1eb3f5a1fabbec7d4)
1357
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"])
1358
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"])
1359
1729
  self._values: typing.Dict[builtins.str, typing.Any] = {
1360
1730
  "patterns": patterns,
1361
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
1362
1736
  if exclude_patterns is not None:
1363
1737
  self._values["exclude_patterns"] = exclude_patterns
1738
+ if update_types is not None:
1739
+ self._values["update_types"] = update_types
1364
1740
 
1365
1741
  @builtins.property
1366
1742
  def patterns(self) -> typing.List[builtins.str]:
@@ -1372,6 +1748,29 @@ class DependabotGroup:
1372
1748
  assert result is not None, "Required property 'patterns' is missing"
1373
1749
  return typing.cast(typing.List[builtins.str], result)
1374
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
+
1375
1774
  @builtins.property
1376
1775
  def exclude_patterns(self) -> typing.Optional[typing.List[builtins.str]]:
1377
1776
  '''(experimental) Optionally you can use this to exclude certain dependencies from the group.
@@ -1381,6 +1780,20 @@ class DependabotGroup:
1381
1780
  result = self._values.get("exclude_patterns")
1382
1781
  return typing.cast(typing.Optional[typing.List[builtins.str]], result)
1383
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
+
1384
1797
  def __eq__(self, rhs: typing.Any) -> builtins.bool:
1385
1798
  return isinstance(rhs, self.__class__) and rhs._values == self._values
1386
1799
 
@@ -1393,6 +1806,68 @@ class DependabotGroup:
1393
1806
  )
1394
1807
 
1395
1808
 
1809
+ @jsii.enum(jsii_type="projen.github.DependabotGroupAppliesTo")
1810
+ class DependabotGroupAppliesTo(enum.Enum):
1811
+ '''(experimental) The type of update a group applies to.
1812
+
1813
+ :stability: experimental
1814
+ '''
1815
+
1816
+ VERSION_UPDATES = "VERSION_UPDATES"
1817
+ '''(experimental) Apply only to version updates.
1818
+
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
+
1396
1871
  @jsii.data_type(
1397
1872
  jsii_type="projen.github.DependabotIgnore",
1398
1873
  jsii_struct_bases=[],
@@ -1991,6 +2466,7 @@ class DependabotScheduleInterval(enum.Enum):
1991
2466
  "id": "id",
1992
2467
  "if_": "if",
1993
2468
  "name": "name",
2469
+ "shell": "shell",
1994
2470
  "working_directory": "workingDirectory",
1995
2471
  "continue_on_error": "continueOnError",
1996
2472
  "timeout_minutes": "timeoutMinutes",
@@ -2005,6 +2481,7 @@ class DownloadArtifactOptions(_JobStepConfiguration_9caff420):
2005
2481
  id: typing.Optional[builtins.str] = None,
2006
2482
  if_: typing.Optional[builtins.str] = None,
2007
2483
  name: typing.Optional[builtins.str] = None,
2484
+ shell: typing.Optional[builtins.str] = None,
2008
2485
  working_directory: typing.Optional[builtins.str] = None,
2009
2486
  continue_on_error: typing.Optional[builtins.bool] = None,
2010
2487
  timeout_minutes: typing.Optional[jsii.Number] = None,
@@ -2015,6 +2492,7 @@ class DownloadArtifactOptions(_JobStepConfiguration_9caff420):
2015
2492
  :param id: (experimental) A unique identifier for the step. You can use the id to reference the step in contexts.
2016
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.
2017
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.
2018
2496
  :param working_directory: (experimental) Specifies a working directory for a step. Overrides a job's working directory.
2019
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.
2020
2498
  :param timeout_minutes: (experimental) The maximum number of minutes to run the step before killing the process.
@@ -2030,6 +2508,7 @@ class DownloadArtifactOptions(_JobStepConfiguration_9caff420):
2030
2508
  check_type(argname="argument id", value=id, expected_type=type_hints["id"])
2031
2509
  check_type(argname="argument if_", value=if_, expected_type=type_hints["if_"])
2032
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"])
2033
2512
  check_type(argname="argument working_directory", value=working_directory, expected_type=type_hints["working_directory"])
2034
2513
  check_type(argname="argument continue_on_error", value=continue_on_error, expected_type=type_hints["continue_on_error"])
2035
2514
  check_type(argname="argument timeout_minutes", value=timeout_minutes, expected_type=type_hints["timeout_minutes"])
@@ -2045,6 +2524,8 @@ class DownloadArtifactOptions(_JobStepConfiguration_9caff420):
2045
2524
  self._values["if_"] = if_
2046
2525
  if name is not None:
2047
2526
  self._values["name"] = name
2527
+ if shell is not None:
2528
+ self._values["shell"] = shell
2048
2529
  if working_directory is not None:
2049
2530
  self._values["working_directory"] = working_directory
2050
2531
  if continue_on_error is not None:
@@ -2096,6 +2577,18 @@ class DownloadArtifactOptions(_JobStepConfiguration_9caff420):
2096
2577
  result = self._values.get("name")
2097
2578
  return typing.cast(typing.Optional[builtins.str], result)
2098
2579
 
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.
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
2587
+ :stability: experimental
2588
+ '''
2589
+ result = self._values.get("shell")
2590
+ return typing.cast(typing.Optional[builtins.str], result)
2591
+
2099
2592
  @builtins.property
2100
2593
  def working_directory(self) -> typing.Optional[builtins.str]:
2101
2594
  '''(experimental) Specifies a working directory for a step.
@@ -2314,6 +2807,8 @@ class GitHub(
2314
2807
  project: _Project_57d89203,
2315
2808
  *,
2316
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,
2317
2812
  mergify: typing.Optional[builtins.bool] = None,
2318
2813
  mergify_options: typing.Optional[typing.Union["MergifyOptions", typing.Dict[builtins.str, typing.Any]]] = None,
2319
2814
  projen_credentials: typing.Optional["GithubCredentials"] = None,
@@ -2327,6 +2822,8 @@ class GitHub(
2327
2822
  '''
2328
2823
  :param project: -
2329
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
2330
2827
  :param mergify: (experimental) Whether mergify should be enabled on this repository or not. Default: true
2331
2828
  :param mergify_options: (experimental) Options for Mergify. Default: - default options
2332
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
@@ -2344,6 +2841,8 @@ class GitHub(
2344
2841
  check_type(argname="argument project", value=project, expected_type=type_hints["project"])
2345
2842
  options = GitHubOptions(
2346
2843
  download_lfs=download_lfs,
2844
+ merge_queue=merge_queue,
2845
+ merge_queue_options=merge_queue_options,
2347
2846
  mergify=mergify,
2348
2847
  mergify_options=mergify_options,
2349
2848
  projen_credentials=projen_credentials,
@@ -2472,7 +2971,8 @@ class GitHub(
2472
2971
  @builtins.property
2473
2972
  @jsii.member(jsii_name="actions")
2474
2973
  def actions(self) -> "GitHubActionsProvider":
2475
- '''
2974
+ '''(experimental) The GitHub Actions provider used to manage the versions of actions used in steps.
2975
+
2476
2976
  :stability: experimental
2477
2977
  '''
2478
2978
  return typing.cast("GitHubActionsProvider", jsii.get(self, "actions"))
@@ -2513,13 +3013,19 @@ class GitHub(
2513
3013
  '''
2514
3014
  return typing.cast(builtins.bool, jsii.get(self, "workflowsEnabled"))
2515
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
+
2516
3025
  @builtins.property
2517
3026
  @jsii.member(jsii_name="mergify")
2518
3027
  def mergify(self) -> typing.Optional["Mergify"]:
2519
- '''(experimental) The ``Mergify`` configured on this repository.
2520
-
2521
- This is ``undefined`` if Mergify
2522
- 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.
2523
3029
 
2524
3030
  :stability: experimental
2525
3031
  '''
@@ -2589,6 +3095,8 @@ class GitHubActionsProvider(
2589
3095
  jsii_struct_bases=[],
2590
3096
  name_mapping={
2591
3097
  "download_lfs": "downloadLfs",
3098
+ "merge_queue": "mergeQueue",
3099
+ "merge_queue_options": "mergeQueueOptions",
2592
3100
  "mergify": "mergify",
2593
3101
  "mergify_options": "mergifyOptions",
2594
3102
  "projen_credentials": "projenCredentials",
@@ -2605,6 +3113,8 @@ class GitHubOptions:
2605
3113
  self,
2606
3114
  *,
2607
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,
2608
3118
  mergify: typing.Optional[builtins.bool] = None,
2609
3119
  mergify_options: typing.Optional[typing.Union["MergifyOptions", typing.Dict[builtins.str, typing.Any]]] = None,
2610
3120
  projen_credentials: typing.Optional["GithubCredentials"] = None,
@@ -2617,6 +3127,8 @@ class GitHubOptions:
2617
3127
  ) -> None:
2618
3128
  '''
2619
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
2620
3132
  :param mergify: (experimental) Whether mergify should be enabled on this repository or not. Default: true
2621
3133
  :param mergify_options: (experimental) Options for Mergify. Default: - default options
2622
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
@@ -2629,6 +3141,8 @@ class GitHubOptions:
2629
3141
 
2630
3142
  :stability: experimental
2631
3143
  '''
3144
+ if isinstance(merge_queue_options, dict):
3145
+ merge_queue_options = MergeQueueOptions(**merge_queue_options)
2632
3146
  if isinstance(mergify_options, dict):
2633
3147
  mergify_options = MergifyOptions(**mergify_options)
2634
3148
  if isinstance(pull_request_backport_options, dict):
@@ -2638,6 +3152,8 @@ class GitHubOptions:
2638
3152
  if __debug__:
2639
3153
  type_hints = typing.get_type_hints(_typecheckingstub__c22e66f011c96f13a6f4e5b07bb676bf98b477678e968ee61f79ee107a7d2bd7)
2640
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"])
2641
3157
  check_type(argname="argument mergify", value=mergify, expected_type=type_hints["mergify"])
2642
3158
  check_type(argname="argument mergify_options", value=mergify_options, expected_type=type_hints["mergify_options"])
2643
3159
  check_type(argname="argument projen_credentials", value=projen_credentials, expected_type=type_hints["projen_credentials"])
@@ -2650,6 +3166,10 @@ class GitHubOptions:
2650
3166
  self._values: typing.Dict[builtins.str, typing.Any] = {}
2651
3167
  if download_lfs is not None:
2652
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
2653
3173
  if mergify is not None:
2654
3174
  self._values["mergify"] = mergify
2655
3175
  if mergify_options is not None:
@@ -2680,6 +3200,30 @@ class GitHubOptions:
2680
3200
  result = self._values.get("download_lfs")
2681
3201
  return typing.cast(typing.Optional[builtins.bool], result)
2682
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
+
2683
3227
  @builtins.property
2684
3228
  def mergify(self) -> typing.Optional[builtins.bool]:
2685
3229
  '''(experimental) Whether mergify should be enabled on this repository or not.
@@ -3653,8 +4197,10 @@ class GithubCredentials(
3653
4197
  cls,
3654
4198
  *,
3655
4199
  app_id_secret: typing.Optional[builtins.str] = None,
4200
+ owner: typing.Optional[builtins.str] = None,
3656
4201
  permissions: typing.Optional[typing.Union[_AppPermissions_59709d51, typing.Dict[builtins.str, typing.Any]]] = None,
3657
4202
  private_key_secret: typing.Optional[builtins.str] = None,
4203
+ repositories: typing.Optional[typing.Sequence[builtins.str]] = None,
3658
4204
  ) -> "GithubCredentials":
3659
4205
  '''(experimental) Provide API access through a GitHub App.
3660
4206
 
@@ -3662,9 +4208,11 @@ class GithubCredentials(
3662
4208
  private key must be added as secrets to the repo. The name of the secrets
3663
4209
  can be specified here.
3664
4210
 
3665
- :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
3666
4213
  :param permissions: (experimental) The permissions granted to the token. Default: - all permissions granted to the app
3667
- :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.
3668
4216
 
3669
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
3670
4218
 
@@ -3673,8 +4221,10 @@ class GithubCredentials(
3673
4221
  '''
3674
4222
  options = GithubCredentialsAppOptions(
3675
4223
  app_id_secret=app_id_secret,
4224
+ owner=owner,
3676
4225
  permissions=permissions,
3677
4226
  private_key_secret=private_key_secret,
4227
+ repositories=repositories,
3678
4228
  )
3679
4229
 
3680
4230
  return typing.cast("GithubCredentials", jsii.sinvoke(cls, "fromApp", [options]))
@@ -3729,8 +4279,10 @@ class GithubCredentials(
3729
4279
  jsii_struct_bases=[],
3730
4280
  name_mapping={
3731
4281
  "app_id_secret": "appIdSecret",
4282
+ "owner": "owner",
3732
4283
  "permissions": "permissions",
3733
4284
  "private_key_secret": "privateKeySecret",
4285
+ "repositories": "repositories",
3734
4286
  },
3735
4287
  )
3736
4288
  class GithubCredentialsAppOptions:
@@ -3738,14 +4290,18 @@ class GithubCredentialsAppOptions:
3738
4290
  self,
3739
4291
  *,
3740
4292
  app_id_secret: typing.Optional[builtins.str] = None,
4293
+ owner: typing.Optional[builtins.str] = None,
3741
4294
  permissions: typing.Optional[typing.Union[_AppPermissions_59709d51, typing.Dict[builtins.str, typing.Any]]] = None,
3742
4295
  private_key_secret: typing.Optional[builtins.str] = None,
4296
+ repositories: typing.Optional[typing.Sequence[builtins.str]] = None,
3743
4297
  ) -> None:
3744
4298
  '''(experimental) Options for ``GithubCredentials.fromApp``.
3745
4299
 
3746
- :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
3747
4302
  :param permissions: (experimental) The permissions granted to the token. Default: - all permissions granted to the app
3748
- :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.
3749
4305
 
3750
4306
  :stability: experimental
3751
4307
  '''
@@ -3754,24 +4310,44 @@ class GithubCredentialsAppOptions:
3754
4310
  if __debug__:
3755
4311
  type_hints = typing.get_type_hints(_typecheckingstub__cfe552d6288d1f706792afe5f041e666db050b8d0d3bb7062899a3bdefe652a8)
3756
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"])
3757
4314
  check_type(argname="argument permissions", value=permissions, expected_type=type_hints["permissions"])
3758
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"])
3759
4317
  self._values: typing.Dict[builtins.str, typing.Any] = {}
3760
4318
  if app_id_secret is not None:
3761
4319
  self._values["app_id_secret"] = app_id_secret
4320
+ if owner is not None:
4321
+ self._values["owner"] = owner
3762
4322
  if permissions is not None:
3763
4323
  self._values["permissions"] = permissions
3764
4324
  if private_key_secret is not None:
3765
4325
  self._values["private_key_secret"] = private_key_secret
4326
+ if repositories is not None:
4327
+ self._values["repositories"] = repositories
3766
4328
 
3767
4329
  @builtins.property
3768
4330
  def app_id_secret(self) -> typing.Optional[builtins.str]:
3769
- '''
4331
+ '''(experimental) The secret containing the GitHub App ID.
4332
+
4333
+ :default: "PROJEN_APP_ID"
4334
+
3770
4335
  :stability: experimental
3771
4336
  '''
3772
4337
  result = self._values.get("app_id_secret")
3773
4338
  return typing.cast(typing.Optional[builtins.str], result)
3774
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
+
3775
4351
  @builtins.property
3776
4352
  def permissions(self) -> typing.Optional[_AppPermissions_59709d51]:
3777
4353
  '''(experimental) The permissions granted to the token.
@@ -3785,12 +4361,31 @@ class GithubCredentialsAppOptions:
3785
4361
 
3786
4362
  @builtins.property
3787
4363
  def private_key_secret(self) -> typing.Optional[builtins.str]:
3788
- '''
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
+
3789
4370
  :stability: experimental
3790
4371
  '''
3791
4372
  result = self._values.get("private_key_secret")
3792
4373
  return typing.cast(typing.Optional[builtins.str], result)
3793
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
+
3794
4389
  def __eq__(self, rhs: typing.Any) -> builtins.bool:
3795
4390
  return isinstance(rhs, self.__class__) and rhs._values == self._values
3796
4391
 
@@ -3861,14 +4456,20 @@ class GithubWorkflow(
3861
4456
  github: GitHub,
3862
4457
  name: builtins.str,
3863
4458
  *,
3864
- 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,
3865
4462
  force: typing.Optional[builtins.bool] = None,
4463
+ limit_concurrency: typing.Optional[builtins.bool] = None,
3866
4464
  ) -> None:
3867
4465
  '''
3868
- :param github: -
3869
- :param name: -
3870
- :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
3871
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
3872
4473
 
3873
4474
  :stability: experimental
3874
4475
  '''
@@ -3876,7 +4477,13 @@ class GithubWorkflow(
3876
4477
  type_hints = typing.get_type_hints(_typecheckingstub__ca4f375b4fda039fc4fb5b2f4ad26a9d1695085d170d2d76e6d720c7cc22d02a)
3877
4478
  check_type(argname="argument github", value=github, expected_type=type_hints["github"])
3878
4479
  check_type(argname="argument name", value=name, expected_type=type_hints["name"])
3879
- 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
+ )
3880
4487
 
3881
4488
  jsii.create(self.__class__, self, [github, name, options])
3882
4489
 
@@ -4088,7 +4695,7 @@ class GithubWorkflow(
4088
4695
  self,
4089
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]]]],
4090
4697
  ) -> None:
4091
- '''(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.
4092
4699
 
4093
4700
  :param jobs: Jobs to update.
4094
4701
 
@@ -4099,11 +4706,28 @@ class GithubWorkflow(
4099
4706
  check_type(argname="argument jobs", value=jobs, expected_type=type_hints["jobs"])
4100
4707
  return typing.cast(None, jsii.invoke(self, "updateJobs", [jobs]))
4101
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
+
4102
4722
  @builtins.property
4103
4723
  @jsii.member(jsii_name="name")
4104
4724
  def name(self) -> builtins.str:
4105
4725
  '''(experimental) The name of the workflow.
4106
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
4107
4731
  :stability: experimental
4108
4732
  '''
4109
4733
  return typing.cast(builtins.str, jsii.get(self, "name"))
@@ -4119,14 +4743,23 @@ class GithubWorkflow(
4119
4743
 
4120
4744
  @builtins.property
4121
4745
  @jsii.member(jsii_name="concurrency")
4122
- def concurrency(self) -> typing.Optional[builtins.str]:
4123
- '''(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.
4124
4748
 
4125
- :default: disabled
4749
+ undefined means no concurrency limitations.
4126
4750
 
4127
4751
  :stability: experimental
4128
4752
  '''
4129
- return typing.cast(typing.Optional[builtins.str], jsii.get(self, "concurrency"))
4753
+ return typing.cast(typing.Optional[ConcurrencyOptions], jsii.get(self, "concurrency"))
4754
+
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.
4759
+
4760
+ :stability: experimental
4761
+ '''
4762
+ return typing.cast(typing.Optional[typing.Mapping[builtins.str, builtins.str]], jsii.get(self, "env"))
4130
4763
 
4131
4764
  @builtins.property
4132
4765
  @jsii.member(jsii_name="file")
@@ -4163,61 +4796,125 @@ class GithubWorkflow(
4163
4796
  if __debug__:
4164
4797
  type_hints = typing.get_type_hints(_typecheckingstub__a6273080200c7722c9774364ee8460bccd3337cd48edc420530ca75f7c2974d9)
4165
4798
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
4166
- jsii.set(self, "runName", value)
4799
+ jsii.set(self, "runName", value) # pyright: ignore[reportArgumentType]
4167
4800
 
4168
4801
 
4169
4802
  @jsii.data_type(
4170
4803
  jsii_type="projen.github.GithubWorkflowOptions",
4171
4804
  jsii_struct_bases=[],
4172
- 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
+ },
4173
4812
  )
4174
4813
  class GithubWorkflowOptions:
4175
4814
  def __init__(
4176
4815
  self,
4177
4816
  *,
4178
- 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,
4179
4820
  force: typing.Optional[builtins.bool] = None,
4821
+ limit_concurrency: typing.Optional[builtins.bool] = None,
4180
4822
  ) -> None:
4181
4823
  '''(experimental) Options for ``GithubWorkflow``.
4182
4824
 
4183
- :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
4184
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
4185
4830
 
4186
4831
  :stability: experimental
4187
4832
  '''
4833
+ if isinstance(concurrency_options, dict):
4834
+ concurrency_options = ConcurrencyOptions(**concurrency_options)
4188
4835
  if __debug__:
4189
4836
  type_hints = typing.get_type_hints(_typecheckingstub__c779b00d3df0cff3a9570cc6ed35339952399a898d5854423c3329b55bf736ec)
4190
- 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"])
4191
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"])
4192
4842
  self._values: typing.Dict[builtins.str, typing.Any] = {}
4193
- if concurrency is not None:
4194
- 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
4195
4849
  if force is not None:
4196
4850
  self._values["force"] = force
4851
+ if limit_concurrency is not None:
4852
+ self._values["limit_concurrency"] = limit_concurrency
4197
4853
 
4198
4854
  @builtins.property
4199
- def concurrency(self) -> typing.Optional[builtins.str]:
4855
+ def concurrency_options(self) -> typing.Optional[ConcurrencyOptions]:
4200
4856
  '''(experimental) Concurrency ensures that only a single job or workflow using the same concurrency group will run at a time.
4201
4857
 
4202
4858
  Currently in beta.
4203
4859
 
4204
- :default: - disabled
4860
+ :default: - { group: ${{ github.workflow }}, cancelInProgress: false }
4205
4861
 
4206
4862
  :see: https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#concurrency
4207
4863
  :stability: experimental
4208
4864
  '''
4209
- result = self._values.get("concurrency")
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")
4210
4894
  return typing.cast(typing.Optional[builtins.str], result)
4211
4895
 
4212
4896
  @builtins.property
4213
- def force(self) -> typing.Optional[builtins.bool]:
4214
- '''(experimental) Force the creation of the workflow even if ``workflows`` is disabled in ``GitHub``.
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.
4215
4912
 
4216
4913
  :default: false
4217
4914
 
4218
4915
  :stability: experimental
4219
4916
  '''
4220
- result = self._values.get("force")
4917
+ result = self._values.get("limit_concurrency")
4221
4918
  return typing.cast(typing.Optional[builtins.bool], result)
4222
4919
 
4223
4920
  def __eq__(self, rhs: typing.Any) -> builtins.bool:
@@ -4264,6 +4961,160 @@ class _IAddConditionsLaterProxy:
4264
4961
  typing.cast(typing.Any, IAddConditionsLater).__jsii_proxy_class__ = lambda : _IAddConditionsLaterProxy
4265
4962
 
4266
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
5078
+
5079
+ :stability: experimental
5080
+ '''
5081
+ result = self._values.get("auto_queue")
5082
+ return typing.cast(typing.Optional[builtins.bool], result)
5083
+
5084
+ @builtins.property
5085
+ def auto_queue_options(self) -> typing.Optional[AutoQueueOptions]:
5086
+ '''(experimental) Configure auto-queue pull requests.
5087
+
5088
+ :default: - see AutoQueueOptions
5089
+
5090
+ :stability: experimental
5091
+ '''
5092
+ result = self._values.get("auto_queue_options")
5093
+ return typing.cast(typing.Optional[AutoQueueOptions], result)
5094
+
5095
+ @builtins.property
5096
+ def target_branches(self) -> typing.Optional[typing.List[builtins.str]]:
5097
+ '''(experimental) The branches that can be merged into using MergeQueue.
5098
+
5099
+ :default: - all branches
5100
+
5101
+ :stability: experimental
5102
+ '''
5103
+ result = self._values.get("target_branches")
5104
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
5105
+
5106
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
5107
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
5108
+
5109
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
5110
+ return not (rhs == self)
5111
+
5112
+ def __repr__(self) -> str:
5113
+ return "MergeQueueOptions(%s)" % ", ".join(
5114
+ k + "=" + repr(v) for k, v in self._values.items()
5115
+ )
5116
+
5117
+
4267
5118
  class Mergify(
4268
5119
  _Component_2b0ad27f,
4269
5120
  metaclass=jsii.JSIIMeta,
@@ -4282,8 +5133,8 @@ class Mergify(
4282
5133
  ) -> None:
4283
5134
  '''
4284
5135
  :param github: -
4285
- :param queues:
4286
- :param rules:
5136
+ :param queues: (experimental) The available merge queues.
5137
+ :param rules: (experimental) Pull request automation rules.
4287
5138
 
4288
5139
  :stability: experimental
4289
5140
  '''
@@ -4298,23 +5149,32 @@ class Mergify(
4298
5149
  def add_queue(
4299
5150
  self,
4300
5151
  *,
4301
- conditions: typing.Sequence[typing.Union[builtins.str, typing.Union["MergifyConditionalOperator", typing.Dict[builtins.str, typing.Any]]]],
5152
+ commit_message_template: builtins.str,
4302
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,
4303
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,
4304
5158
  update_method: typing.Optional[builtins.str] = None,
4305
5159
  ) -> None:
4306
5160
  '''
4307
- :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.
4308
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.
4309
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.
4310
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
4311
5168
 
4312
5169
  :stability: experimental
4313
5170
  '''
4314
5171
  queue = MergifyQueue(
4315
- conditions=conditions,
5172
+ commit_message_template=commit_message_template,
4316
5173
  name=name,
5174
+ conditions=conditions,
5175
+ merge_conditions=merge_conditions,
4317
5176
  merge_method=merge_method,
5177
+ queue_conditions=queue_conditions,
4318
5178
  update_method=update_method,
4319
5179
  )
4320
5180
 
@@ -4416,10 +5276,14 @@ class MergifyOptions:
4416
5276
  queues: typing.Optional[typing.Sequence[typing.Union["MergifyQueue", typing.Dict[builtins.str, typing.Any]]]] = None,
4417
5277
  rules: typing.Optional[typing.Sequence[typing.Union["MergifyRule", typing.Dict[builtins.str, typing.Any]]]] = None,
4418
5278
  ) -> None:
4419
- '''
4420
- :param queues:
4421
- :param rules:
5279
+ '''(experimental) Configure Mergify.
5280
+
5281
+ This currently only offers a subset of options available.
4422
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/
4423
5287
  :stability: experimental
4424
5288
  '''
4425
5289
  if __debug__:
@@ -4434,7 +5298,8 @@ class MergifyOptions:
4434
5298
 
4435
5299
  @builtins.property
4436
5300
  def queues(self) -> typing.Optional[typing.List["MergifyQueue"]]:
4437
- '''
5301
+ '''(experimental) The available merge queues.
5302
+
4438
5303
  :stability: experimental
4439
5304
  '''
4440
5305
  result = self._values.get("queues")
@@ -4442,7 +5307,8 @@ class MergifyOptions:
4442
5307
 
4443
5308
  @builtins.property
4444
5309
  def rules(self) -> typing.Optional[typing.List["MergifyRule"]]:
4445
- '''
5310
+ '''(experimental) Pull request automation rules.
5311
+
4446
5312
  :stability: experimental
4447
5313
  '''
4448
5314
  result = self._values.get("rules")
@@ -4464,9 +5330,12 @@ class MergifyOptions:
4464
5330
  jsii_type="projen.github.MergifyQueue",
4465
5331
  jsii_struct_bases=[],
4466
5332
  name_mapping={
4467
- "conditions": "conditions",
5333
+ "commit_message_template": "commitMessageTemplate",
4468
5334
  "name": "name",
5335
+ "conditions": "conditions",
5336
+ "merge_conditions": "mergeConditions",
4469
5337
  "merge_method": "mergeMethod",
5338
+ "queue_conditions": "queueConditions",
4470
5339
  "update_method": "updateMethod",
4471
5340
  },
4472
5341
  )
@@ -4474,46 +5343,58 @@ class MergifyQueue:
4474
5343
  def __init__(
4475
5344
  self,
4476
5345
  *,
4477
- conditions: typing.Sequence[typing.Union[builtins.str, typing.Union[MergifyConditionalOperator, typing.Dict[builtins.str, typing.Any]]]],
5346
+ commit_message_template: builtins.str,
4478
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,
4479
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,
4480
5352
  update_method: typing.Optional[builtins.str] = None,
4481
5353
  ) -> None:
4482
5354
  '''
4483
- :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.
4484
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.
4485
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.
4486
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
4487
5362
 
4488
5363
  :stability: experimental
4489
5364
  '''
4490
5365
  if __debug__:
4491
5366
  type_hints = typing.get_type_hints(_typecheckingstub__0471efd0a49bc64e556512e765a1df23d4a975f26cb6de765579b4173907f467)
4492
- 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"])
4493
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"])
4494
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"])
4495
5373
  check_type(argname="argument update_method", value=update_method, expected_type=type_hints["update_method"])
4496
5374
  self._values: typing.Dict[builtins.str, typing.Any] = {
4497
- "conditions": conditions,
5375
+ "commit_message_template": commit_message_template,
4498
5376
  "name": name,
4499
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
4500
5382
  if merge_method is not None:
4501
5383
  self._values["merge_method"] = merge_method
5384
+ if queue_conditions is not None:
5385
+ self._values["queue_conditions"] = queue_conditions
4502
5386
  if update_method is not None:
4503
5387
  self._values["update_method"] = update_method
4504
5388
 
4505
5389
  @builtins.property
4506
- def conditions(
4507
- self,
4508
- ) -> typing.List[typing.Union[builtins.str, MergifyConditionalOperator]]:
4509
- '''(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.
4510
5392
 
4511
- :see: https://docs.mergify.com/conditions/#conditions
4512
5393
  :stability: experimental
4513
5394
  '''
4514
- result = self._values.get("conditions")
4515
- assert result is not None, "Required property 'conditions' is missing"
4516
- 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)
4517
5398
 
4518
5399
  @builtins.property
4519
5400
  def name(self) -> builtins.str:
@@ -4525,6 +5406,35 @@ class MergifyQueue:
4525
5406
  assert result is not None, "Required property 'name' is missing"
4526
5407
  return typing.cast(builtins.str, result)
4527
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
+
4528
5438
  @builtins.property
4529
5439
  def merge_method(self) -> typing.Optional[builtins.str]:
4530
5440
  '''(experimental) Merge method to use.
@@ -4539,6 +5449,18 @@ class MergifyQueue:
4539
5449
  result = self._values.get("merge_method")
4540
5450
  return typing.cast(typing.Optional[builtins.str], result)
4541
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
+
4542
5464
  @builtins.property
4543
5465
  def update_method(self) -> typing.Optional[builtins.str]:
4544
5466
  '''(experimental) Method to use to update the pull request with its base branch when the speculative check is done in-place.
@@ -4921,7 +5843,7 @@ class PullRequestFromPatchOptions(CreatePullRequestOptions):
4921
5843
  :param base_branch: (experimental) Sets the pull request base branch. Default: - The branch checked out in the workflow.
4922
5844
  :param branch_name: (experimental) The pull request branch name. Default: ``github-actions/${options.workflowName}``
4923
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.
4924
- :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
4925
5847
  :param labels: (experimental) Labels to apply on the PR. Default: - no labels.
4926
5848
  :param signoff: (experimental) Add Signed-off-by line by the committer at the end of the commit log message. Default: true
4927
5849
  :param step_id: (experimental) The step ID which produces the output which indicates if a patch was created. Default: "create_pr"
@@ -5070,7 +5992,7 @@ class PullRequestFromPatchOptions(CreatePullRequestOptions):
5070
5992
  def git_identity(self) -> typing.Optional[GitIdentity]:
5071
5993
  '''(experimental) The git identity used to create the commit.
5072
5994
 
5073
- :default: - the default github-actions user
5995
+ :default: - default GitHub Actions user
5074
5996
 
5075
5997
  :stability: experimental
5076
5998
  '''
@@ -5390,6 +6312,7 @@ class PullRequestLintOptions:
5390
6312
  name_mapping={
5391
6313
  "fetch_depth": "fetchDepth",
5392
6314
  "lfs": "lfs",
6315
+ "path": "path",
5393
6316
  "ref": "ref",
5394
6317
  "repository": "repository",
5395
6318
  "token": "token",
@@ -5404,6 +6327,7 @@ class PullRequestPatchSource(CheckoutWithPatchOptions):
5404
6327
  *,
5405
6328
  fetch_depth: typing.Optional[jsii.Number] = None,
5406
6329
  lfs: typing.Optional[builtins.bool] = None,
6330
+ path: typing.Optional[builtins.str] = None,
5407
6331
  ref: typing.Optional[builtins.str] = None,
5408
6332
  repository: typing.Optional[builtins.str] = None,
5409
6333
  token: typing.Optional[builtins.str] = None,
@@ -5414,6 +6338,7 @@ class PullRequestPatchSource(CheckoutWithPatchOptions):
5414
6338
  '''
5415
6339
  :param fetch_depth: (experimental) Number of commits to fetch. 0 indicates all history for all branches and tags. Default: 1
5416
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
5417
6342
  :param ref: (experimental) Branch or tag name. Default: - the default branch is implicitly used
5418
6343
  :param repository: (experimental) The repository (owner/repo) to use. Default: - the default repository is implicitly used
5419
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
@@ -5427,6 +6352,7 @@ class PullRequestPatchSource(CheckoutWithPatchOptions):
5427
6352
  type_hints = typing.get_type_hints(_typecheckingstub__c3c9a28aa8266154d9a36adad571b3695e958b931e79b9eaff4a7dc55e95dec8)
5428
6353
  check_type(argname="argument fetch_depth", value=fetch_depth, expected_type=type_hints["fetch_depth"])
5429
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"])
5430
6356
  check_type(argname="argument ref", value=ref, expected_type=type_hints["ref"])
5431
6357
  check_type(argname="argument repository", value=repository, expected_type=type_hints["repository"])
5432
6358
  check_type(argname="argument token", value=token, expected_type=type_hints["token"])
@@ -5441,6 +6367,8 @@ class PullRequestPatchSource(CheckoutWithPatchOptions):
5441
6367
  self._values["fetch_depth"] = fetch_depth
5442
6368
  if lfs is not None:
5443
6369
  self._values["lfs"] = lfs
6370
+ if path is not None:
6371
+ self._values["path"] = path
5444
6372
  if ref is not None:
5445
6373
  self._values["ref"] = ref
5446
6374
  if repository is not None:
@@ -5474,6 +6402,17 @@ class PullRequestPatchSource(CheckoutWithPatchOptions):
5474
6402
  result = self._values.get("lfs")
5475
6403
  return typing.cast(typing.Optional[builtins.bool], result)
5476
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
+
5477
6416
  @builtins.property
5478
6417
  def ref(self) -> typing.Optional[builtins.str]:
5479
6418
  '''(experimental) Branch or tag name.
@@ -5651,18 +6590,24 @@ class PullRequestTemplateOptions:
5651
6590
  @jsii.data_type(
5652
6591
  jsii_type="projen.github.SemanticTitleOptions",
5653
6592
  jsii_struct_bases=[],
5654
- name_mapping={"require_scope": "requireScope", "types": "types"},
6593
+ name_mapping={
6594
+ "require_scope": "requireScope",
6595
+ "scopes": "scopes",
6596
+ "types": "types",
6597
+ },
5655
6598
  )
5656
6599
  class SemanticTitleOptions:
5657
6600
  def __init__(
5658
6601
  self,
5659
6602
  *,
5660
6603
  require_scope: typing.Optional[builtins.bool] = None,
6604
+ scopes: typing.Optional[typing.Sequence[builtins.str]] = None,
5661
6605
  types: typing.Optional[typing.Sequence[builtins.str]] = None,
5662
6606
  ) -> None:
5663
6607
  '''(experimental) Options for linting that PR titles follow Conventional Commits.
5664
6608
 
5665
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
5666
6611
  :param types: (experimental) Configure a list of commit types that are allowed. Default: ["feat", "fix", "chore"]
5667
6612
 
5668
6613
  :see: https://www.conventionalcommits.org/
@@ -5671,10 +6616,13 @@ class SemanticTitleOptions:
5671
6616
  if __debug__:
5672
6617
  type_hints = typing.get_type_hints(_typecheckingstub__9d043d0484269cca19493b2d2d5c51f9cfe65a12520148f80ef37f6855457de0)
5673
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"])
5674
6620
  check_type(argname="argument types", value=types, expected_type=type_hints["types"])
5675
6621
  self._values: typing.Dict[builtins.str, typing.Any] = {}
5676
6622
  if require_scope is not None:
5677
6623
  self._values["require_scope"] = require_scope
6624
+ if scopes is not None:
6625
+ self._values["scopes"] = scopes
5678
6626
  if types is not None:
5679
6627
  self._values["types"] = types
5680
6628
 
@@ -5691,6 +6639,19 @@ class SemanticTitleOptions:
5691
6639
  result = self._values.get("require_scope")
5692
6640
  return typing.cast(typing.Optional[builtins.bool], result)
5693
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
+
5694
6655
  @builtins.property
5695
6656
  def types(self) -> typing.Optional[typing.List[builtins.str]]:
5696
6657
  '''(experimental) Configure a list of commit types that are allowed.
@@ -5722,6 +6683,7 @@ class SemanticTitleOptions:
5722
6683
  "id": "id",
5723
6684
  "if_": "if",
5724
6685
  "name": "name",
6686
+ "shell": "shell",
5725
6687
  "working_directory": "workingDirectory",
5726
6688
  "continue_on_error": "continueOnError",
5727
6689
  "timeout_minutes": "timeoutMinutes",
@@ -5736,6 +6698,7 @@ class SetupGitIdentityOptions(_JobStepConfiguration_9caff420):
5736
6698
  id: typing.Optional[builtins.str] = None,
5737
6699
  if_: typing.Optional[builtins.str] = None,
5738
6700
  name: typing.Optional[builtins.str] = None,
6701
+ shell: typing.Optional[builtins.str] = None,
5739
6702
  working_directory: typing.Optional[builtins.str] = None,
5740
6703
  continue_on_error: typing.Optional[builtins.bool] = None,
5741
6704
  timeout_minutes: typing.Optional[jsii.Number] = None,
@@ -5746,6 +6709,7 @@ class SetupGitIdentityOptions(_JobStepConfiguration_9caff420):
5746
6709
  :param id: (experimental) A unique identifier for the step. You can use the id to reference the step in contexts.
5747
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.
5748
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.
5749
6713
  :param working_directory: (experimental) Specifies a working directory for a step. Overrides a job's working directory.
5750
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.
5751
6715
  :param timeout_minutes: (experimental) The maximum number of minutes to run the step before killing the process.
@@ -5761,6 +6725,7 @@ class SetupGitIdentityOptions(_JobStepConfiguration_9caff420):
5761
6725
  check_type(argname="argument id", value=id, expected_type=type_hints["id"])
5762
6726
  check_type(argname="argument if_", value=if_, expected_type=type_hints["if_"])
5763
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"])
5764
6729
  check_type(argname="argument working_directory", value=working_directory, expected_type=type_hints["working_directory"])
5765
6730
  check_type(argname="argument continue_on_error", value=continue_on_error, expected_type=type_hints["continue_on_error"])
5766
6731
  check_type(argname="argument timeout_minutes", value=timeout_minutes, expected_type=type_hints["timeout_minutes"])
@@ -5776,6 +6741,8 @@ class SetupGitIdentityOptions(_JobStepConfiguration_9caff420):
5776
6741
  self._values["if_"] = if_
5777
6742
  if name is not None:
5778
6743
  self._values["name"] = name
6744
+ if shell is not None:
6745
+ self._values["shell"] = shell
5779
6746
  if working_directory is not None:
5780
6747
  self._values["working_directory"] = working_directory
5781
6748
  if continue_on_error is not None:
@@ -5827,6 +6794,18 @@ class SetupGitIdentityOptions(_JobStepConfiguration_9caff420):
5827
6794
  result = self._values.get("name")
5828
6795
  return typing.cast(typing.Optional[builtins.str], result)
5829
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
+
5830
6809
  @builtins.property
5831
6810
  def working_directory(self) -> typing.Optional[builtins.str]:
5832
6811
  '''(experimental) Specifies a working directory for a step.
@@ -6228,6 +7207,7 @@ class TaskWorkflow(
6228
7207
  container: typing.Optional[typing.Union[_ContainerOptions_f50907af, typing.Dict[builtins.str, typing.Any]]] = None,
6229
7208
  download_lfs: typing.Optional[builtins.bool] = None,
6230
7209
  env: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
7210
+ environment: typing.Optional[builtins.str] = None,
6231
7211
  git_identity: typing.Optional[typing.Union[GitIdentity, typing.Dict[builtins.str, typing.Any]]] = None,
6232
7212
  job_defaults: typing.Optional[typing.Union[_JobDefaults_965f0d10, typing.Dict[builtins.str, typing.Any]]] = None,
6233
7213
  outputs: typing.Optional[typing.Mapping[builtins.str, typing.Union[_JobStepOutput_acebe827, typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -6250,7 +7230,8 @@ class TaskWorkflow(
6250
7230
  :param container: Default: - default image
6251
7231
  :param download_lfs: (experimental) Whether to download files from Git LFS for this workflow. Default: - Use the setting on the corresponding GitHub project
6252
7232
  :param env: (experimental) Workflow environment variables. Default: {}
6253
- :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
6254
7235
  :param job_defaults: (experimental) Default settings for all steps in the TaskWorkflow Job.
6255
7236
  :param outputs: (experimental) Mapping of job output names to values/expressions. Default: {}
6256
7237
  :param post_build_steps: (experimental) Actions to run after the main build step. Default: - not set
@@ -6276,6 +7257,7 @@ class TaskWorkflow(
6276
7257
  container=container,
6277
7258
  download_lfs=download_lfs,
6278
7259
  env=env,
7260
+ environment=environment,
6279
7261
  git_identity=git_identity,
6280
7262
  job_defaults=job_defaults,
6281
7263
  outputs=outputs,
@@ -6328,6 +7310,7 @@ class TaskWorkflowJob(
6328
7310
  container: typing.Optional[typing.Union[_ContainerOptions_f50907af, typing.Dict[builtins.str, typing.Any]]] = None,
6329
7311
  download_lfs: typing.Optional[builtins.bool] = None,
6330
7312
  env: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
7313
+ environment: typing.Optional[builtins.str] = None,
6331
7314
  git_identity: typing.Optional[typing.Union[GitIdentity, typing.Dict[builtins.str, typing.Any]]] = None,
6332
7315
  job_defaults: typing.Optional[typing.Union[_JobDefaults_965f0d10, typing.Dict[builtins.str, typing.Any]]] = None,
6333
7316
  outputs: typing.Optional[typing.Mapping[builtins.str, typing.Union[_JobStepOutput_acebe827, typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -6347,7 +7330,8 @@ class TaskWorkflowJob(
6347
7330
  :param container: Default: - default image
6348
7331
  :param download_lfs: (experimental) Whether to download files from Git LFS for this workflow. Default: - Use the setting on the corresponding GitHub project
6349
7332
  :param env: (experimental) Workflow environment variables. Default: {}
6350
- :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
6351
7335
  :param job_defaults: (experimental) Default settings for all steps in the TaskWorkflow Job.
6352
7336
  :param outputs: (experimental) Mapping of job output names to values/expressions. Default: {}
6353
7337
  :param post_build_steps: (experimental) Actions to run after the main build step. Default: - not set
@@ -6370,6 +7354,7 @@ class TaskWorkflowJob(
6370
7354
  container=container,
6371
7355
  download_lfs=download_lfs,
6372
7356
  env=env,
7357
+ environment=environment,
6373
7358
  git_identity=git_identity,
6374
7359
  job_defaults=job_defaults,
6375
7360
  outputs=outputs,
@@ -6440,11 +7425,11 @@ class TaskWorkflowJob(
6440
7425
 
6441
7426
  @builtins.property
6442
7427
  @jsii.member(jsii_name="environment")
6443
- def environment(self) -> typing.Any:
7428
+ def environment(self) -> typing.Optional[builtins.str]:
6444
7429
  '''
6445
7430
  :stability: experimental
6446
7431
  '''
6447
- return typing.cast(typing.Any, jsii.get(self, "environment"))
7432
+ return typing.cast(typing.Optional[builtins.str], jsii.get(self, "environment"))
6448
7433
 
6449
7434
  @builtins.property
6450
7435
  @jsii.member(jsii_name="if")
@@ -6542,6 +7527,7 @@ class TaskWorkflowJob(
6542
7527
  "container": "container",
6543
7528
  "download_lfs": "downloadLfs",
6544
7529
  "env": "env",
7530
+ "environment": "environment",
6545
7531
  "git_identity": "gitIdentity",
6546
7532
  "job_defaults": "jobDefaults",
6547
7533
  "outputs": "outputs",
@@ -6563,6 +7549,7 @@ class TaskWorkflowJobOptions:
6563
7549
  container: typing.Optional[typing.Union[_ContainerOptions_f50907af, typing.Dict[builtins.str, typing.Any]]] = None,
6564
7550
  download_lfs: typing.Optional[builtins.bool] = None,
6565
7551
  env: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
7552
+ environment: typing.Optional[builtins.str] = None,
6566
7553
  git_identity: typing.Optional[typing.Union[GitIdentity, typing.Dict[builtins.str, typing.Any]]] = None,
6567
7554
  job_defaults: typing.Optional[typing.Union[_JobDefaults_965f0d10, typing.Dict[builtins.str, typing.Any]]] = None,
6568
7555
  outputs: typing.Optional[typing.Mapping[builtins.str, typing.Union[_JobStepOutput_acebe827, typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -6581,7 +7568,8 @@ class TaskWorkflowJobOptions:
6581
7568
  :param container: Default: - default image
6582
7569
  :param download_lfs: (experimental) Whether to download files from Git LFS for this workflow. Default: - Use the setting on the corresponding GitHub project
6583
7570
  :param env: (experimental) Workflow environment variables. Default: {}
6584
- :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
6585
7573
  :param job_defaults: (experimental) Default settings for all steps in the TaskWorkflow Job.
6586
7574
  :param outputs: (experimental) Mapping of job output names to values/expressions. Default: {}
6587
7575
  :param post_build_steps: (experimental) Actions to run after the main build step. Default: - not set
@@ -6613,6 +7601,7 @@ class TaskWorkflowJobOptions:
6613
7601
  check_type(argname="argument container", value=container, expected_type=type_hints["container"])
6614
7602
  check_type(argname="argument download_lfs", value=download_lfs, expected_type=type_hints["download_lfs"])
6615
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"])
6616
7605
  check_type(argname="argument git_identity", value=git_identity, expected_type=type_hints["git_identity"])
6617
7606
  check_type(argname="argument job_defaults", value=job_defaults, expected_type=type_hints["job_defaults"])
6618
7607
  check_type(argname="argument outputs", value=outputs, expected_type=type_hints["outputs"])
@@ -6636,6 +7625,8 @@ class TaskWorkflowJobOptions:
6636
7625
  self._values["download_lfs"] = download_lfs
6637
7626
  if env is not None:
6638
7627
  self._values["env"] = env
7628
+ if environment is not None:
7629
+ self._values["environment"] = environment
6639
7630
  if git_identity is not None:
6640
7631
  self._values["git_identity"] = git_identity
6641
7632
  if job_defaults is not None:
@@ -6726,10 +7717,23 @@ class TaskWorkflowJobOptions:
6726
7717
  result = self._values.get("env")
6727
7718
  return typing.cast(typing.Optional[typing.Mapping[builtins.str, builtins.str]], result)
6728
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
+
6729
7731
  @builtins.property
6730
7732
  def git_identity(self) -> typing.Optional[GitIdentity]:
6731
7733
  '''(experimental) The git identity to use in this workflow.
6732
7734
 
7735
+ :default: - default GitHub Actions user
7736
+
6733
7737
  :stability: experimental
6734
7738
  '''
6735
7739
  result = self._values.get("git_identity")
@@ -6837,6 +7841,7 @@ class TaskWorkflowJobOptions:
6837
7841
  "container": "container",
6838
7842
  "download_lfs": "downloadLfs",
6839
7843
  "env": "env",
7844
+ "environment": "environment",
6840
7845
  "git_identity": "gitIdentity",
6841
7846
  "job_defaults": "jobDefaults",
6842
7847
  "outputs": "outputs",
@@ -6862,6 +7867,7 @@ class TaskWorkflowOptions(TaskWorkflowJobOptions):
6862
7867
  container: typing.Optional[typing.Union[_ContainerOptions_f50907af, typing.Dict[builtins.str, typing.Any]]] = None,
6863
7868
  download_lfs: typing.Optional[builtins.bool] = None,
6864
7869
  env: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
7870
+ environment: typing.Optional[builtins.str] = None,
6865
7871
  git_identity: typing.Optional[typing.Union[GitIdentity, typing.Dict[builtins.str, typing.Any]]] = None,
6866
7872
  job_defaults: typing.Optional[typing.Union[_JobDefaults_965f0d10, typing.Dict[builtins.str, typing.Any]]] = None,
6867
7873
  outputs: typing.Optional[typing.Mapping[builtins.str, typing.Union[_JobStepOutput_acebe827, typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -6884,7 +7890,8 @@ class TaskWorkflowOptions(TaskWorkflowJobOptions):
6884
7890
  :param container: Default: - default image
6885
7891
  :param download_lfs: (experimental) Whether to download files from Git LFS for this workflow. Default: - Use the setting on the corresponding GitHub project
6886
7892
  :param env: (experimental) Workflow environment variables. Default: {}
6887
- :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
6888
7895
  :param job_defaults: (experimental) Default settings for all steps in the TaskWorkflow Job.
6889
7896
  :param outputs: (experimental) Mapping of job output names to values/expressions. Default: {}
6890
7897
  :param post_build_steps: (experimental) Actions to run after the main build step. Default: - not set
@@ -6922,6 +7929,7 @@ class TaskWorkflowOptions(TaskWorkflowJobOptions):
6922
7929
  check_type(argname="argument container", value=container, expected_type=type_hints["container"])
6923
7930
  check_type(argname="argument download_lfs", value=download_lfs, expected_type=type_hints["download_lfs"])
6924
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"])
6925
7933
  check_type(argname="argument git_identity", value=git_identity, expected_type=type_hints["git_identity"])
6926
7934
  check_type(argname="argument job_defaults", value=job_defaults, expected_type=type_hints["job_defaults"])
6927
7935
  check_type(argname="argument outputs", value=outputs, expected_type=type_hints["outputs"])
@@ -6951,6 +7959,8 @@ class TaskWorkflowOptions(TaskWorkflowJobOptions):
6951
7959
  self._values["download_lfs"] = download_lfs
6952
7960
  if env is not None:
6953
7961
  self._values["env"] = env
7962
+ if environment is not None:
7963
+ self._values["environment"] = environment
6954
7964
  if git_identity is not None:
6955
7965
  self._values["git_identity"] = git_identity
6956
7966
  if job_defaults is not None:
@@ -7045,10 +8055,23 @@ class TaskWorkflowOptions(TaskWorkflowJobOptions):
7045
8055
  result = self._values.get("env")
7046
8056
  return typing.cast(typing.Optional[typing.Mapping[builtins.str, builtins.str]], result)
7047
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
+
7048
8069
  @builtins.property
7049
8070
  def git_identity(self) -> typing.Optional[GitIdentity]:
7050
8071
  '''(experimental) The git identity to use in this workflow.
7051
8072
 
8073
+ :default: - default GitHub Actions user
8074
+
7052
8075
  :stability: experimental
7053
8076
  '''
7054
8077
  result = self._values.get("git_identity")
@@ -7195,6 +8218,7 @@ class TaskWorkflowOptions(TaskWorkflowJobOptions):
7195
8218
  "id": "id",
7196
8219
  "if_": "if",
7197
8220
  "name": "name",
8221
+ "shell": "shell",
7198
8222
  "working_directory": "workingDirectory",
7199
8223
  "continue_on_error": "continueOnError",
7200
8224
  "timeout_minutes": "timeoutMinutes",
@@ -7209,6 +8233,7 @@ class UploadArtifactOptions(_JobStepConfiguration_9caff420):
7209
8233
  id: typing.Optional[builtins.str] = None,
7210
8234
  if_: typing.Optional[builtins.str] = None,
7211
8235
  name: typing.Optional[builtins.str] = None,
8236
+ shell: typing.Optional[builtins.str] = None,
7212
8237
  working_directory: typing.Optional[builtins.str] = None,
7213
8238
  continue_on_error: typing.Optional[builtins.bool] = None,
7214
8239
  timeout_minutes: typing.Optional[jsii.Number] = None,
@@ -7219,6 +8244,7 @@ class UploadArtifactOptions(_JobStepConfiguration_9caff420):
7219
8244
  :param id: (experimental) A unique identifier for the step. You can use the id to reference the step in contexts.
7220
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.
7221
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.
7222
8248
  :param working_directory: (experimental) Specifies a working directory for a step. Overrides a job's working directory.
7223
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.
7224
8250
  :param timeout_minutes: (experimental) The maximum number of minutes to run the step before killing the process.
@@ -7234,6 +8260,7 @@ class UploadArtifactOptions(_JobStepConfiguration_9caff420):
7234
8260
  check_type(argname="argument id", value=id, expected_type=type_hints["id"])
7235
8261
  check_type(argname="argument if_", value=if_, expected_type=type_hints["if_"])
7236
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"])
7237
8264
  check_type(argname="argument working_directory", value=working_directory, expected_type=type_hints["working_directory"])
7238
8265
  check_type(argname="argument continue_on_error", value=continue_on_error, expected_type=type_hints["continue_on_error"])
7239
8266
  check_type(argname="argument timeout_minutes", value=timeout_minutes, expected_type=type_hints["timeout_minutes"])
@@ -7249,6 +8276,8 @@ class UploadArtifactOptions(_JobStepConfiguration_9caff420):
7249
8276
  self._values["if_"] = if_
7250
8277
  if name is not None:
7251
8278
  self._values["name"] = name
8279
+ if shell is not None:
8280
+ self._values["shell"] = shell
7252
8281
  if working_directory is not None:
7253
8282
  self._values["working_directory"] = working_directory
7254
8283
  if continue_on_error is not None:
@@ -7300,6 +8329,18 @@ class UploadArtifactOptions(_JobStepConfiguration_9caff420):
7300
8329
  result = self._values.get("name")
7301
8330
  return typing.cast(typing.Optional[builtins.str], result)
7302
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
+
7303
8344
  @builtins.property
7304
8345
  def working_directory(self) -> typing.Optional[builtins.str]:
7305
8346
  '''(experimental) Specifies a working directory for a step.
@@ -7361,6 +8402,7 @@ class UploadArtifactOptions(_JobStepConfiguration_9caff420):
7361
8402
  "path": "path",
7362
8403
  "compression_level": "compressionLevel",
7363
8404
  "if_no_files_found": "ifNoFilesFound",
8405
+ "include_hidden_files": "includeHiddenFiles",
7364
8406
  "name": "name",
7365
8407
  "overwrite": "overwrite",
7366
8408
  "retention_days": "retentionDays",
@@ -7373,6 +8415,7 @@ class UploadArtifactWith:
7373
8415
  path: builtins.str,
7374
8416
  compression_level: typing.Optional[jsii.Number] = None,
7375
8417
  if_no_files_found: typing.Optional[builtins.str] = None,
8418
+ include_hidden_files: typing.Optional[builtins.bool] = None,
7376
8419
  name: typing.Optional[builtins.str] = None,
7377
8420
  overwrite: typing.Optional[builtins.bool] = None,
7378
8421
  retention_days: typing.Optional[jsii.Number] = None,
@@ -7381,6 +8424,7 @@ class UploadArtifactWith:
7381
8424
  :param path: (experimental) A file, directory or wildcard pattern that describes what to upload.
7382
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
7383
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
7384
8428
  :param name: (experimental) Name of the artifact to upload. Default: "artifact"
7385
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
7386
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
@@ -7392,6 +8436,7 @@ class UploadArtifactWith:
7392
8436
  check_type(argname="argument path", value=path, expected_type=type_hints["path"])
7393
8437
  check_type(argname="argument compression_level", value=compression_level, expected_type=type_hints["compression_level"])
7394
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"])
7395
8440
  check_type(argname="argument name", value=name, expected_type=type_hints["name"])
7396
8441
  check_type(argname="argument overwrite", value=overwrite, expected_type=type_hints["overwrite"])
7397
8442
  check_type(argname="argument retention_days", value=retention_days, expected_type=type_hints["retention_days"])
@@ -7402,6 +8447,8 @@ class UploadArtifactWith:
7402
8447
  self._values["compression_level"] = compression_level
7403
8448
  if if_no_files_found is not None:
7404
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
7405
8452
  if name is not None:
7406
8453
  self._values["name"] = name
7407
8454
  if overwrite is not None:
@@ -7449,6 +8496,19 @@ class UploadArtifactWith:
7449
8496
  result = self._values.get("if_no_files_found")
7450
8497
  return typing.cast(typing.Optional[builtins.str], result)
7451
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
+
7452
8512
  @builtins.property
7453
8513
  def name(self) -> typing.Optional[builtins.str]:
7454
8514
  '''(experimental) Name of the artifact to upload.
@@ -7678,6 +8738,7 @@ class WorkflowActions(
7678
8738
  patch_file: typing.Optional[builtins.str] = None,
7679
8739
  fetch_depth: typing.Optional[jsii.Number] = None,
7680
8740
  lfs: typing.Optional[builtins.bool] = None,
8741
+ path: typing.Optional[builtins.str] = None,
7681
8742
  ref: typing.Optional[builtins.str] = None,
7682
8743
  repository: typing.Optional[builtins.str] = None,
7683
8744
  token: typing.Optional[builtins.str] = None,
@@ -7687,6 +8748,7 @@ class WorkflowActions(
7687
8748
  :param patch_file: (experimental) The name of the artifact the patch is stored as. Default: ".repo.patch"
7688
8749
  :param fetch_depth: (experimental) Number of commits to fetch. 0 indicates all history for all branches and tags. Default: 1
7689
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
7690
8752
  :param ref: (experimental) Branch or tag name. Default: - the default branch is implicitly used
7691
8753
  :param repository: (experimental) The repository (owner/repo) to use. Default: - the default repository is implicitly used
7692
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
@@ -7699,6 +8761,7 @@ class WorkflowActions(
7699
8761
  patch_file=patch_file,
7700
8762
  fetch_depth=fetch_depth,
7701
8763
  lfs=lfs,
8764
+ path=path,
7702
8765
  ref=ref,
7703
8766
  repository=repository,
7704
8767
  token=token,
@@ -7733,7 +8796,7 @@ class WorkflowActions(
7733
8796
  :param base_branch: (experimental) Sets the pull request base branch. Default: - The branch checked out in the workflow.
7734
8797
  :param branch_name: (experimental) The pull request branch name. Default: ``github-actions/${options.workflowName}``
7735
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.
7736
- :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
7737
8800
  :param labels: (experimental) Labels to apply on the PR. Default: - no labels.
7738
8801
  :param signoff: (experimental) Add Signed-off-by line by the committer at the end of the commit log message. Default: true
7739
8802
  :param step_id: (experimental) The step ID which produces the output which indicates if a patch was created. Default: "create_pr"
@@ -7866,7 +8929,7 @@ class WorkflowJobs(metaclass=jsii.JSIIMeta, jsii_type="projen.github.WorkflowJob
7866
8929
  :param base_branch: (experimental) Sets the pull request base branch. Default: - The branch checked out in the workflow.
7867
8930
  :param branch_name: (experimental) The pull request branch name. Default: ``github-actions/${options.workflowName}``
7868
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.
7869
- :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
7870
8933
  :param labels: (experimental) Labels to apply on the PR. Default: - no labels.
7871
8934
  :param signoff: (experimental) Add Signed-off-by line by the committer at the end of the commit log message. Default: true
7872
8935
  :param step_id: (experimental) The step ID which produces the output which indicates if a patch was created. Default: "create_pr"
@@ -7922,6 +8985,7 @@ class WorkflowSteps(metaclass=jsii.JSIIMeta, jsii_type="projen.github.WorkflowSt
7922
8985
  id: typing.Optional[builtins.str] = None,
7923
8986
  if_: typing.Optional[builtins.str] = None,
7924
8987
  name: typing.Optional[builtins.str] = None,
8988
+ shell: typing.Optional[builtins.str] = None,
7925
8989
  working_directory: typing.Optional[builtins.str] = None,
7926
8990
  ) -> _JobStep_c3287c05:
7927
8991
  '''(experimental) Checks out a repository.
@@ -7933,6 +8997,7 @@ class WorkflowSteps(metaclass=jsii.JSIIMeta, jsii_type="projen.github.WorkflowSt
7933
8997
  :param id: (experimental) A unique identifier for the step. You can use the id to reference the step in contexts.
7934
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.
7935
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.
7936
9001
  :param working_directory: (experimental) Specifies a working directory for a step. Overrides a job's working directory.
7937
9002
 
7938
9003
  :return: A JobStep that checks out a repository
@@ -7947,6 +9012,7 @@ class WorkflowSteps(metaclass=jsii.JSIIMeta, jsii_type="projen.github.WorkflowSt
7947
9012
  id=id,
7948
9013
  if_=if_,
7949
9014
  name=name,
9015
+ shell=shell,
7950
9016
  working_directory=working_directory,
7951
9017
  )
7952
9018
 
@@ -7964,6 +9030,7 @@ class WorkflowSteps(metaclass=jsii.JSIIMeta, jsii_type="projen.github.WorkflowSt
7964
9030
  id: typing.Optional[builtins.str] = None,
7965
9031
  if_: typing.Optional[builtins.str] = None,
7966
9032
  name: typing.Optional[builtins.str] = None,
9033
+ shell: typing.Optional[builtins.str] = None,
7967
9034
  working_directory: typing.Optional[builtins.str] = None,
7968
9035
  ) -> _JobStep_c3287c05:
7969
9036
  '''(experimental) Downloads an artifact.
@@ -7975,6 +9042,7 @@ class WorkflowSteps(metaclass=jsii.JSIIMeta, jsii_type="projen.github.WorkflowSt
7975
9042
  :param id: (experimental) A unique identifier for the step. You can use the id to reference the step in contexts.
7976
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.
7977
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.
7978
9046
  :param working_directory: (experimental) Specifies a working directory for a step. Overrides a job's working directory.
7979
9047
 
7980
9048
  :return: A JobStep that downloads an artifact
@@ -7989,6 +9057,7 @@ class WorkflowSteps(metaclass=jsii.JSIIMeta, jsii_type="projen.github.WorkflowSt
7989
9057
  id=id,
7990
9058
  if_=if_,
7991
9059
  name=name,
9060
+ shell=shell,
7992
9061
  working_directory=working_directory,
7993
9062
  )
7994
9063
 
@@ -8006,6 +9075,7 @@ class WorkflowSteps(metaclass=jsii.JSIIMeta, jsii_type="projen.github.WorkflowSt
8006
9075
  id: typing.Optional[builtins.str] = None,
8007
9076
  if_: typing.Optional[builtins.str] = None,
8008
9077
  name: typing.Optional[builtins.str] = None,
9078
+ shell: typing.Optional[builtins.str] = None,
8009
9079
  working_directory: typing.Optional[builtins.str] = None,
8010
9080
  ) -> _JobStep_c3287c05:
8011
9081
  '''(experimental) Configures the git identity (user name and email).
@@ -8017,6 +9087,7 @@ class WorkflowSteps(metaclass=jsii.JSIIMeta, jsii_type="projen.github.WorkflowSt
8017
9087
  :param id: (experimental) A unique identifier for the step. You can use the id to reference the step in contexts.
8018
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.
8019
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.
8020
9091
  :param working_directory: (experimental) Specifies a working directory for a step. Overrides a job's working directory.
8021
9092
 
8022
9093
  :return: Job step that configures the provided git identity
@@ -8031,6 +9102,7 @@ class WorkflowSteps(metaclass=jsii.JSIIMeta, jsii_type="projen.github.WorkflowSt
8031
9102
  id=id,
8032
9103
  if_=if_,
8033
9104
  name=name,
9105
+ shell=shell,
8034
9106
  working_directory=working_directory,
8035
9107
  )
8036
9108
 
@@ -8048,6 +9120,7 @@ class WorkflowSteps(metaclass=jsii.JSIIMeta, jsii_type="projen.github.WorkflowSt
8048
9120
  id: typing.Optional[builtins.str] = None,
8049
9121
  if_: typing.Optional[builtins.str] = None,
8050
9122
  name: typing.Optional[builtins.str] = None,
9123
+ shell: typing.Optional[builtins.str] = None,
8051
9124
  working_directory: typing.Optional[builtins.str] = None,
8052
9125
  ) -> _JobStep_c3287c05:
8053
9126
  '''(experimental) Checks if a tag exists.
@@ -8065,6 +9138,7 @@ class WorkflowSteps(metaclass=jsii.JSIIMeta, jsii_type="projen.github.WorkflowSt
8065
9138
  :param id: (experimental) A unique identifier for the step. You can use the id to reference the step in contexts.
8066
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.
8067
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.
8068
9142
  :param working_directory: (experimental) Specifies a working directory for a step. Overrides a job's working directory.
8069
9143
 
8070
9144
  :return: Job step that checks if the provided tag exists
@@ -8081,6 +9155,7 @@ class WorkflowSteps(metaclass=jsii.JSIIMeta, jsii_type="projen.github.WorkflowSt
8081
9155
  id=id,
8082
9156
  if_=if_,
8083
9157
  name=name,
9158
+ shell=shell,
8084
9159
  working_directory=working_directory,
8085
9160
  )
8086
9161
 
@@ -8098,6 +9173,7 @@ class WorkflowSteps(metaclass=jsii.JSIIMeta, jsii_type="projen.github.WorkflowSt
8098
9173
  id: typing.Optional[builtins.str] = None,
8099
9174
  if_: typing.Optional[builtins.str] = None,
8100
9175
  name: typing.Optional[builtins.str] = None,
9176
+ shell: typing.Optional[builtins.str] = None,
8101
9177
  working_directory: typing.Optional[builtins.str] = None,
8102
9178
  ) -> _JobStep_c3287c05:
8103
9179
  '''(experimental) Uploads an artifact.
@@ -8109,6 +9185,7 @@ class WorkflowSteps(metaclass=jsii.JSIIMeta, jsii_type="projen.github.WorkflowSt
8109
9185
  :param id: (experimental) A unique identifier for the step. You can use the id to reference the step in contexts.
8110
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.
8111
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.
8112
9189
  :param working_directory: (experimental) Specifies a working directory for a step. Overrides a job's working directory.
8113
9190
 
8114
9191
  :return: A JobStep that uploads an artifact
@@ -8123,6 +9200,7 @@ class WorkflowSteps(metaclass=jsii.JSIIMeta, jsii_type="projen.github.WorkflowSt
8123
9200
  id=id,
8124
9201
  if_=if_,
8125
9202
  name=name,
9203
+ shell=shell,
8126
9204
  working_directory=working_directory,
8127
9205
  )
8128
9206
 
@@ -8134,14 +9212,20 @@ __all__ = [
8134
9212
  "AutoApproveOptions",
8135
9213
  "AutoMerge",
8136
9214
  "AutoMergeOptions",
9215
+ "AutoQueue",
9216
+ "AutoQueueOptions",
8137
9217
  "CheckoutOptions",
8138
9218
  "CheckoutWith",
8139
9219
  "CheckoutWithPatchOptions",
9220
+ "ConcurrencyOptions",
8140
9221
  "ContributorStatementOptions",
8141
9222
  "CreatePullRequestOptions",
8142
9223
  "Dependabot",
8143
9224
  "DependabotAllow",
8144
9225
  "DependabotGroup",
9226
+ "DependabotGroupAppliesTo",
9227
+ "DependabotGroupDependencyType",
9228
+ "DependabotGroupUpdateType",
8145
9229
  "DependabotIgnore",
8146
9230
  "DependabotOptions",
8147
9231
  "DependabotRegistry",
@@ -8161,6 +9245,9 @@ __all__ = [
8161
9245
  "GithubWorkflow",
8162
9246
  "GithubWorkflowOptions",
8163
9247
  "IAddConditionsLater",
9248
+ "MergeMethod",
9249
+ "MergeQueue",
9250
+ "MergeQueueOptions",
8164
9251
  "Mergify",
8165
9252
  "MergifyConditionalOperator",
8166
9253
  "MergifyOptions",
@@ -8254,12 +9341,38 @@ def _typecheckingstub__a8ab02e50aae05e5a55d4a4adc4369d19ed7205ed83b7ca13d32b3d62
8254
9341
  """Type checking stubs"""
8255
9342
  pass
8256
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
+
8257
9369
  def _typecheckingstub__a17b4445d77135e079ad1d957d41f1a5ade398e6b6ba84b471b26b6adab221ac(
8258
9370
  *,
8259
9371
  env: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
8260
9372
  id: typing.Optional[builtins.str] = None,
8261
9373
  if_: typing.Optional[builtins.str] = None,
8262
9374
  name: typing.Optional[builtins.str] = None,
9375
+ shell: typing.Optional[builtins.str] = None,
8263
9376
  working_directory: typing.Optional[builtins.str] = None,
8264
9377
  continue_on_error: typing.Optional[builtins.bool] = None,
8265
9378
  timeout_minutes: typing.Optional[jsii.Number] = None,
@@ -8272,6 +9385,7 @@ def _typecheckingstub__57379070911f0df36ef38a23c138780de73f270c4e64ea8e6b7f4f128
8272
9385
  *,
8273
9386
  fetch_depth: typing.Optional[jsii.Number] = None,
8274
9387
  lfs: typing.Optional[builtins.bool] = None,
9388
+ path: typing.Optional[builtins.str] = None,
8275
9389
  ref: typing.Optional[builtins.str] = None,
8276
9390
  repository: typing.Optional[builtins.str] = None,
8277
9391
  token: typing.Optional[builtins.str] = None,
@@ -8283,6 +9397,7 @@ def _typecheckingstub__c7405ea05e49b1f743e00dc103618fbd659c979bbec234492b8928ed6
8283
9397
  *,
8284
9398
  fetch_depth: typing.Optional[jsii.Number] = None,
8285
9399
  lfs: typing.Optional[builtins.bool] = None,
9400
+ path: typing.Optional[builtins.str] = None,
8286
9401
  ref: typing.Optional[builtins.str] = None,
8287
9402
  repository: typing.Optional[builtins.str] = None,
8288
9403
  token: typing.Optional[builtins.str] = None,
@@ -8291,6 +9406,14 @@ def _typecheckingstub__c7405ea05e49b1f743e00dc103618fbd659c979bbec234492b8928ed6
8291
9406
  """Type checking stubs"""
8292
9407
  pass
8293
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
+
8294
9417
  def _typecheckingstub__4bf4a36aad325b457168493fe21f1efbc534c83e8685d03341390fcbf3d1c0bc(
8295
9418
  *,
8296
9419
  exempt_labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -8359,7 +9482,10 @@ def _typecheckingstub__95f7e72bd3f0d0b83df633a27522aaab6cab1baeaf4b90de44beff992
8359
9482
  def _typecheckingstub__97650f1e1a170d34a5bd50211445090d04d890ec494749c1eb3f5a1fabbec7d4(
8360
9483
  *,
8361
9484
  patterns: typing.Sequence[builtins.str],
9485
+ applies_to: typing.Optional[DependabotGroupAppliesTo] = None,
9486
+ dependency_type: typing.Optional[DependabotGroupDependencyType] = None,
8362
9487
  exclude_patterns: typing.Optional[typing.Sequence[builtins.str]] = None,
9488
+ update_types: typing.Optional[typing.Sequence[DependabotGroupUpdateType]] = None,
8363
9489
  ) -> None:
8364
9490
  """Type checking stubs"""
8365
9491
  pass
@@ -8410,6 +9536,7 @@ def _typecheckingstub__c7f153d5c1001fcb119385a05448ea85e212f46cc420d578734261b83
8410
9536
  id: typing.Optional[builtins.str] = None,
8411
9537
  if_: typing.Optional[builtins.str] = None,
8412
9538
  name: typing.Optional[builtins.str] = None,
9539
+ shell: typing.Optional[builtins.str] = None,
8413
9540
  working_directory: typing.Optional[builtins.str] = None,
8414
9541
  continue_on_error: typing.Optional[builtins.bool] = None,
8415
9542
  timeout_minutes: typing.Optional[jsii.Number] = None,
@@ -8435,6 +9562,8 @@ def _typecheckingstub__65db11e8703472c7fa4e013294c649e43b7f8634b29ca11be71b46d8c
8435
9562
  project: _Project_57d89203,
8436
9563
  *,
8437
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,
8438
9567
  mergify: typing.Optional[builtins.bool] = None,
8439
9568
  mergify_options: typing.Optional[typing.Union[MergifyOptions, typing.Dict[builtins.str, typing.Any]]] = None,
8440
9569
  projen_credentials: typing.Optional[GithubCredentials] = None,
@@ -8488,6 +9617,8 @@ def _typecheckingstub__20166ac47381861e1a45b550a5e9646380c52a927fca9ebf00ec36dab
8488
9617
  def _typecheckingstub__c22e66f011c96f13a6f4e5b07bb676bf98b477678e968ee61f79ee107a7d2bd7(
8489
9618
  *,
8490
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,
8491
9622
  mergify: typing.Optional[builtins.bool] = None,
8492
9623
  mergify_options: typing.Optional[typing.Union[MergifyOptions, typing.Dict[builtins.str, typing.Any]]] = None,
8493
9624
  projen_credentials: typing.Optional[GithubCredentials] = None,
@@ -8553,8 +9684,10 @@ def _typecheckingstub__f9975d58a3cca9992aa51d0da1572c207d374c146dec0474fc911a567
8553
9684
  def _typecheckingstub__cfe552d6288d1f706792afe5f041e666db050b8d0d3bb7062899a3bdefe652a8(
8554
9685
  *,
8555
9686
  app_id_secret: typing.Optional[builtins.str] = None,
9687
+ owner: typing.Optional[builtins.str] = None,
8556
9688
  permissions: typing.Optional[typing.Union[_AppPermissions_59709d51, typing.Dict[builtins.str, typing.Any]]] = None,
8557
9689
  private_key_secret: typing.Optional[builtins.str] = None,
9690
+ repositories: typing.Optional[typing.Sequence[builtins.str]] = None,
8558
9691
  ) -> None:
8559
9692
  """Type checking stubs"""
8560
9693
  pass
@@ -8570,8 +9703,11 @@ def _typecheckingstub__ca4f375b4fda039fc4fb5b2f4ad26a9d1695085d170d2d76e6d720c7c
8570
9703
  github: GitHub,
8571
9704
  name: builtins.str,
8572
9705
  *,
8573
- 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,
8574
9709
  force: typing.Optional[builtins.bool] = None,
9710
+ limit_concurrency: typing.Optional[builtins.bool] = None,
8575
9711
  ) -> None:
8576
9712
  """Type checking stubs"""
8577
9713
  pass
@@ -8622,8 +9758,30 @@ def _typecheckingstub__a6273080200c7722c9774364ee8460bccd3337cd48edc420530ca75f7
8622
9758
 
8623
9759
  def _typecheckingstub__c779b00d3df0cff3a9570cc6ed35339952399a898d5854423c3329b55bf736ec(
8624
9760
  *,
8625
- 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,
8626
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,
8627
9785
  ) -> None:
8628
9786
  """Type checking stubs"""
8629
9787
  pass
@@ -8655,9 +9813,12 @@ def _typecheckingstub__527734fcd5357c536553ff5f47fe5062b93958305a451f587c870879e
8655
9813
 
8656
9814
  def _typecheckingstub__0471efd0a49bc64e556512e765a1df23d4a975f26cb6de765579b4173907f467(
8657
9815
  *,
8658
- conditions: typing.Sequence[typing.Union[builtins.str, typing.Union[MergifyConditionalOperator, typing.Dict[builtins.str, typing.Any]]]],
9816
+ commit_message_template: builtins.str,
8659
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,
8660
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,
8661
9822
  update_method: typing.Optional[builtins.str] = None,
8662
9823
  ) -> None:
8663
9824
  """Type checking stubs"""
@@ -8750,6 +9911,7 @@ def _typecheckingstub__c3c9a28aa8266154d9a36adad571b3695e958b931e79b9eaff4a7dc55
8750
9911
  *,
8751
9912
  fetch_depth: typing.Optional[jsii.Number] = None,
8752
9913
  lfs: typing.Optional[builtins.bool] = None,
9914
+ path: typing.Optional[builtins.str] = None,
8753
9915
  ref: typing.Optional[builtins.str] = None,
8754
9916
  repository: typing.Optional[builtins.str] = None,
8755
9917
  token: typing.Optional[builtins.str] = None,
@@ -8784,6 +9946,7 @@ def _typecheckingstub__d8786063961cc00764e7c2005db60e7d427b8a81ce2275510888beb4e
8784
9946
  def _typecheckingstub__9d043d0484269cca19493b2d2d5c51f9cfe65a12520148f80ef37f6855457de0(
8785
9947
  *,
8786
9948
  require_scope: typing.Optional[builtins.bool] = None,
9949
+ scopes: typing.Optional[typing.Sequence[builtins.str]] = None,
8787
9950
  types: typing.Optional[typing.Sequence[builtins.str]] = None,
8788
9951
  ) -> None:
8789
9952
  """Type checking stubs"""
@@ -8795,6 +9958,7 @@ def _typecheckingstub__b9e40915fe7c519c231c73e9a63dfa1b1dee67586ebf4629165f8556f
8795
9958
  id: typing.Optional[builtins.str] = None,
8796
9959
  if_: typing.Optional[builtins.str] = None,
8797
9960
  name: typing.Optional[builtins.str] = None,
9961
+ shell: typing.Optional[builtins.str] = None,
8798
9962
  working_directory: typing.Optional[builtins.str] = None,
8799
9963
  continue_on_error: typing.Optional[builtins.bool] = None,
8800
9964
  timeout_minutes: typing.Optional[jsii.Number] = None,
@@ -8851,6 +10015,7 @@ def _typecheckingstub__8d4fb3030e96a87b921aa6bfb0d4ccf7a90d4c2affbcb8eeca2d5a24c
8851
10015
  container: typing.Optional[typing.Union[_ContainerOptions_f50907af, typing.Dict[builtins.str, typing.Any]]] = None,
8852
10016
  download_lfs: typing.Optional[builtins.bool] = None,
8853
10017
  env: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
10018
+ environment: typing.Optional[builtins.str] = None,
8854
10019
  git_identity: typing.Optional[typing.Union[GitIdentity, typing.Dict[builtins.str, typing.Any]]] = None,
8855
10020
  job_defaults: typing.Optional[typing.Union[_JobDefaults_965f0d10, typing.Dict[builtins.str, typing.Any]]] = None,
8856
10021
  outputs: typing.Optional[typing.Mapping[builtins.str, typing.Union[_JobStepOutput_acebe827, typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -8874,6 +10039,7 @@ def _typecheckingstub__8e35b96aa7e4fe84c59cac8c7e3f4c146c780c7b09807f610b1aaf727
8874
10039
  container: typing.Optional[typing.Union[_ContainerOptions_f50907af, typing.Dict[builtins.str, typing.Any]]] = None,
8875
10040
  download_lfs: typing.Optional[builtins.bool] = None,
8876
10041
  env: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
10042
+ environment: typing.Optional[builtins.str] = None,
8877
10043
  git_identity: typing.Optional[typing.Union[GitIdentity, typing.Dict[builtins.str, typing.Any]]] = None,
8878
10044
  job_defaults: typing.Optional[typing.Union[_JobDefaults_965f0d10, typing.Dict[builtins.str, typing.Any]]] = None,
8879
10045
  outputs: typing.Optional[typing.Mapping[builtins.str, typing.Union[_JobStepOutput_acebe827, typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -8895,6 +10061,7 @@ def _typecheckingstub__4f2039f9f0120fa5bcc0261afed5aa5fd2be59874413018ee781d5e75
8895
10061
  container: typing.Optional[typing.Union[_ContainerOptions_f50907af, typing.Dict[builtins.str, typing.Any]]] = None,
8896
10062
  download_lfs: typing.Optional[builtins.bool] = None,
8897
10063
  env: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
10064
+ environment: typing.Optional[builtins.str] = None,
8898
10065
  git_identity: typing.Optional[typing.Union[GitIdentity, typing.Dict[builtins.str, typing.Any]]] = None,
8899
10066
  job_defaults: typing.Optional[typing.Union[_JobDefaults_965f0d10, typing.Dict[builtins.str, typing.Any]]] = None,
8900
10067
  outputs: typing.Optional[typing.Mapping[builtins.str, typing.Union[_JobStepOutput_acebe827, typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -8916,6 +10083,7 @@ def _typecheckingstub__15e1c594f5876baf2e105789fcb541bcb5e71cea5ad4320fb67052a9c
8916
10083
  container: typing.Optional[typing.Union[_ContainerOptions_f50907af, typing.Dict[builtins.str, typing.Any]]] = None,
8917
10084
  download_lfs: typing.Optional[builtins.bool] = None,
8918
10085
  env: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
10086
+ environment: typing.Optional[builtins.str] = None,
8919
10087
  git_identity: typing.Optional[typing.Union[GitIdentity, typing.Dict[builtins.str, typing.Any]]] = None,
8920
10088
  job_defaults: typing.Optional[typing.Union[_JobDefaults_965f0d10, typing.Dict[builtins.str, typing.Any]]] = None,
8921
10089
  outputs: typing.Optional[typing.Mapping[builtins.str, typing.Union[_JobStepOutput_acebe827, typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -8938,6 +10106,7 @@ def _typecheckingstub__76a6b70b748b84dc156557f2c93bcd7ad0f6ba6fe077270e3f296f69c
8938
10106
  id: typing.Optional[builtins.str] = None,
8939
10107
  if_: typing.Optional[builtins.str] = None,
8940
10108
  name: typing.Optional[builtins.str] = None,
10109
+ shell: typing.Optional[builtins.str] = None,
8941
10110
  working_directory: typing.Optional[builtins.str] = None,
8942
10111
  continue_on_error: typing.Optional[builtins.bool] = None,
8943
10112
  timeout_minutes: typing.Optional[jsii.Number] = None,
@@ -8951,6 +10120,7 @@ def _typecheckingstub__ffa4e677bfd1bdf4c5e45f5ff5e0b2a238422bb1e8bf6bcf6bbbf0ff2
8951
10120
  path: builtins.str,
8952
10121
  compression_level: typing.Optional[jsii.Number] = None,
8953
10122
  if_no_files_found: typing.Optional[builtins.str] = None,
10123
+ include_hidden_files: typing.Optional[builtins.bool] = None,
8954
10124
  name: typing.Optional[builtins.str] = None,
8955
10125
  overwrite: typing.Optional[builtins.bool] = None,
8956
10126
  retention_days: typing.Optional[jsii.Number] = None,
@@ -8978,7 +10148,11 @@ def _typecheckingstub__696566a4c593a7173649d5eeaadb52edb8460487e95d469374dc3c01f
8978
10148
  id: typing.Optional[builtins.str] = None,
8979
10149
  if_: typing.Optional[builtins.str] = None,
8980
10150
  name: typing.Optional[builtins.str] = None,
10151
+ shell: typing.Optional[builtins.str] = None,
8981
10152
  working_directory: typing.Optional[builtins.str] = None,
8982
10153
  ) -> None:
8983
10154
  """Type checking stubs"""
8984
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__'])