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/gitlab/__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
 
@@ -567,6 +582,7 @@ class CiConfiguration(
567
582
  default: typing.Optional[typing.Union["Default", typing.Dict[builtins.str, typing.Any]]] = None,
568
583
  jobs: typing.Optional[typing.Mapping[builtins.str, typing.Union["Job", typing.Dict[builtins.str, typing.Any]]]] = None,
569
584
  pages: typing.Optional[typing.Union["Job", typing.Dict[builtins.str, typing.Any]]] = None,
585
+ path: typing.Optional[builtins.str] = None,
570
586
  stages: typing.Optional[typing.Sequence[builtins.str]] = None,
571
587
  variables: typing.Optional[typing.Mapping[builtins.str, typing.Any]] = None,
572
588
  workflow: typing.Optional[typing.Union["Workflow", typing.Dict[builtins.str, typing.Any]]] = None,
@@ -577,6 +593,7 @@ class CiConfiguration(
577
593
  :param default: (experimental) Default settings for the CI Configuration. Jobs that do not define one or more of the listed keywords use the value defined in the default section.
578
594
  :param jobs: (experimental) An initial set of jobs to add to the configuration.
579
595
  :param pages: (experimental) A special job used to upload static sites to Gitlab pages. Requires a ``public/`` directory with ``artifacts.path`` pointing to it.
596
+ :param path: (experimental) The path of the file to generate.
580
597
  :param stages: (experimental) Groups jobs into stages. All jobs in one stage must complete before next stage is executed. If no stages are specified. Defaults to ['build', 'test', 'deploy'].
581
598
  :param variables: (experimental) Global variables that are passed to jobs. If the job already has that variable defined, the job-level variable takes precedence.
582
599
  :param workflow: (experimental) Used to control pipeline behavior.
@@ -591,6 +608,7 @@ class CiConfiguration(
591
608
  default=default,
592
609
  jobs=jobs,
593
610
  pages=pages,
611
+ path=path,
594
612
  stages=stages,
595
613
  variables=variables,
596
614
  workflow=workflow,
@@ -614,6 +632,22 @@ class CiConfiguration(
614
632
  check_type(argname="argument caches", value=caches, expected_type=type_hints["caches"])
615
633
  return typing.cast(None, jsii.invoke(self, "addDefaultCaches", [caches]))
616
634
 
635
+ @jsii.member(jsii_name="addDefaultHooks")
636
+ def add_default_hooks(
637
+ self,
638
+ *,
639
+ pre_get_sources_script: typing.Optional[typing.Sequence[builtins.str]] = None,
640
+ ) -> None:
641
+ '''(experimental) Specify a list of commands to execute on the runner before cloning the Git repository and any submodules https://docs.gitlab.com/ci/yaml/#hookspre_get_sources_script.
642
+
643
+ :param pre_get_sources_script: (experimental) Specify a list of commands to execute on the runner before cloning the Git repository and any submodules https://docs.gitlab.com/ci/yaml/#hookspre_get_sources_script.
644
+
645
+ :stability: experimental
646
+ '''
647
+ hooks = DefaultHooks(pre_get_sources_script=pre_get_sources_script)
648
+
649
+ return typing.cast(None, jsii.invoke(self, "addDefaultHooks", [hooks]))
650
+
617
651
  @jsii.member(jsii_name="addGlobalVariables")
618
652
  def add_global_variables(
619
653
  self,
@@ -796,6 +830,17 @@ class CiConfiguration(
796
830
  '''
797
831
  return typing.cast(typing.Optional[typing.List[Cache]], jsii.get(self, "defaultCache"))
798
832
 
833
+ @builtins.property
834
+ @jsii.member(jsii_name="defaultIdTokens")
835
+ def default_id_tokens(
836
+ self,
837
+ ) -> typing.Optional[typing.Mapping[builtins.str, "IDToken"]]:
838
+ '''(experimental) Default ID tokens (JSON Web Tokens) that are used for CI/CD authentication to use globally for all jobs.
839
+
840
+ :stability: experimental
841
+ '''
842
+ return typing.cast(typing.Optional[typing.Mapping[builtins.str, "IDToken"]], jsii.get(self, "defaultIdTokens"))
843
+
799
844
  @builtins.property
800
845
  @jsii.member(jsii_name="defaultImage")
801
846
  def default_image(self) -> typing.Optional["Image"]:
@@ -865,6 +910,7 @@ class CiConfiguration(
865
910
  "default": "default",
866
911
  "jobs": "jobs",
867
912
  "pages": "pages",
913
+ "path": "path",
868
914
  "stages": "stages",
869
915
  "variables": "variables",
870
916
  "workflow": "workflow",
@@ -877,6 +923,7 @@ class CiConfigurationOptions:
877
923
  default: typing.Optional[typing.Union["Default", typing.Dict[builtins.str, typing.Any]]] = None,
878
924
  jobs: typing.Optional[typing.Mapping[builtins.str, typing.Union["Job", typing.Dict[builtins.str, typing.Any]]]] = None,
879
925
  pages: typing.Optional[typing.Union["Job", typing.Dict[builtins.str, typing.Any]]] = None,
926
+ path: typing.Optional[builtins.str] = None,
880
927
  stages: typing.Optional[typing.Sequence[builtins.str]] = None,
881
928
  variables: typing.Optional[typing.Mapping[builtins.str, typing.Any]] = None,
882
929
  workflow: typing.Optional[typing.Union["Workflow", typing.Dict[builtins.str, typing.Any]]] = None,
@@ -886,6 +933,7 @@ class CiConfigurationOptions:
886
933
  :param default: (experimental) Default settings for the CI Configuration. Jobs that do not define one or more of the listed keywords use the value defined in the default section.
887
934
  :param jobs: (experimental) An initial set of jobs to add to the configuration.
888
935
  :param pages: (experimental) A special job used to upload static sites to Gitlab pages. Requires a ``public/`` directory with ``artifacts.path`` pointing to it.
936
+ :param path: (experimental) The path of the file to generate.
889
937
  :param stages: (experimental) Groups jobs into stages. All jobs in one stage must complete before next stage is executed. If no stages are specified. Defaults to ['build', 'test', 'deploy'].
890
938
  :param variables: (experimental) Global variables that are passed to jobs. If the job already has that variable defined, the job-level variable takes precedence.
891
939
  :param workflow: (experimental) Used to control pipeline behavior.
@@ -903,6 +951,7 @@ class CiConfigurationOptions:
903
951
  check_type(argname="argument default", value=default, expected_type=type_hints["default"])
904
952
  check_type(argname="argument jobs", value=jobs, expected_type=type_hints["jobs"])
905
953
  check_type(argname="argument pages", value=pages, expected_type=type_hints["pages"])
954
+ check_type(argname="argument path", value=path, expected_type=type_hints["path"])
906
955
  check_type(argname="argument stages", value=stages, expected_type=type_hints["stages"])
907
956
  check_type(argname="argument variables", value=variables, expected_type=type_hints["variables"])
908
957
  check_type(argname="argument workflow", value=workflow, expected_type=type_hints["workflow"])
@@ -913,6 +962,8 @@ class CiConfigurationOptions:
913
962
  self._values["jobs"] = jobs
914
963
  if pages is not None:
915
964
  self._values["pages"] = pages
965
+ if path is not None:
966
+ self._values["path"] = path
916
967
  if stages is not None:
917
968
  self._values["stages"] = stages
918
969
  if variables is not None:
@@ -952,6 +1003,15 @@ class CiConfigurationOptions:
952
1003
  result = self._values.get("pages")
953
1004
  return typing.cast(typing.Optional["Job"], result)
954
1005
 
1006
+ @builtins.property
1007
+ def path(self) -> typing.Optional[builtins.str]:
1008
+ '''(experimental) The path of the file to generate.
1009
+
1010
+ :stability: experimental
1011
+ '''
1012
+ result = self._values.get("path")
1013
+ return typing.cast(typing.Optional[builtins.str], result)
1014
+
955
1015
  @builtins.property
956
1016
  def stages(self) -> typing.Optional[typing.List[builtins.str]]:
957
1017
  '''(experimental) Groups jobs into stages.
@@ -1058,6 +1118,8 @@ class CoverageReport:
1058
1118
  "artifacts": "artifacts",
1059
1119
  "before_script": "beforeScript",
1060
1120
  "cache": "cache",
1121
+ "hooks": "hooks",
1122
+ "id_tokens": "idTokens",
1061
1123
  "image": "image",
1062
1124
  "interruptible": "interruptible",
1063
1125
  "retry": "retry",
@@ -1074,6 +1136,8 @@ class Default:
1074
1136
  artifacts: typing.Optional[typing.Union[Artifacts, typing.Dict[builtins.str, typing.Any]]] = None,
1075
1137
  before_script: typing.Optional[typing.Sequence[builtins.str]] = None,
1076
1138
  cache: typing.Optional[typing.Sequence[typing.Union[Cache, typing.Dict[builtins.str, typing.Any]]]] = None,
1139
+ hooks: typing.Optional[typing.Union["DefaultHooks", typing.Dict[builtins.str, typing.Any]]] = None,
1140
+ id_tokens: typing.Optional[typing.Mapping[builtins.str, "IDToken"]] = None,
1077
1141
  image: typing.Optional[typing.Union["Image", typing.Dict[builtins.str, typing.Any]]] = None,
1078
1142
  interruptible: typing.Optional[builtins.bool] = None,
1079
1143
  retry: typing.Optional[typing.Union["Retry", typing.Dict[builtins.str, typing.Any]]] = None,
@@ -1089,6 +1153,8 @@ class Default:
1089
1153
  :param artifacts:
1090
1154
  :param before_script:
1091
1155
  :param cache:
1156
+ :param hooks: (experimental) Specify a list of commands to execute on the runner before cloning the Git repository and any submodules https://docs.gitlab.com/ci/yaml/#hookspre_get_sources_script.
1157
+ :param id_tokens: (experimental) Specifies the default ID tokens (JSON Web Tokens) that are used for CI/CD authentication to use globally for all jobs.
1092
1158
  :param image:
1093
1159
  :param interruptible:
1094
1160
  :param retry:
@@ -1101,6 +1167,8 @@ class Default:
1101
1167
  '''
1102
1168
  if isinstance(artifacts, dict):
1103
1169
  artifacts = Artifacts(**artifacts)
1170
+ if isinstance(hooks, dict):
1171
+ hooks = DefaultHooks(**hooks)
1104
1172
  if isinstance(image, dict):
1105
1173
  image = Image(**image)
1106
1174
  if isinstance(retry, dict):
@@ -1111,6 +1179,8 @@ class Default:
1111
1179
  check_type(argname="argument artifacts", value=artifacts, expected_type=type_hints["artifacts"])
1112
1180
  check_type(argname="argument before_script", value=before_script, expected_type=type_hints["before_script"])
1113
1181
  check_type(argname="argument cache", value=cache, expected_type=type_hints["cache"])
1182
+ check_type(argname="argument hooks", value=hooks, expected_type=type_hints["hooks"])
1183
+ check_type(argname="argument id_tokens", value=id_tokens, expected_type=type_hints["id_tokens"])
1114
1184
  check_type(argname="argument image", value=image, expected_type=type_hints["image"])
1115
1185
  check_type(argname="argument interruptible", value=interruptible, expected_type=type_hints["interruptible"])
1116
1186
  check_type(argname="argument retry", value=retry, expected_type=type_hints["retry"])
@@ -1126,6 +1196,10 @@ class Default:
1126
1196
  self._values["before_script"] = before_script
1127
1197
  if cache is not None:
1128
1198
  self._values["cache"] = cache
1199
+ if hooks is not None:
1200
+ self._values["hooks"] = hooks
1201
+ if id_tokens is not None:
1202
+ self._values["id_tokens"] = id_tokens
1129
1203
  if image is not None:
1130
1204
  self._values["image"] = image
1131
1205
  if interruptible is not None:
@@ -1171,6 +1245,24 @@ class Default:
1171
1245
  result = self._values.get("cache")
1172
1246
  return typing.cast(typing.Optional[typing.List[Cache]], result)
1173
1247
 
1248
+ @builtins.property
1249
+ def hooks(self) -> typing.Optional["DefaultHooks"]:
1250
+ '''(experimental) Specify a list of commands to execute on the runner before cloning the Git repository and any submodules https://docs.gitlab.com/ci/yaml/#hookspre_get_sources_script.
1251
+
1252
+ :stability: experimental
1253
+ '''
1254
+ result = self._values.get("hooks")
1255
+ return typing.cast(typing.Optional["DefaultHooks"], result)
1256
+
1257
+ @builtins.property
1258
+ def id_tokens(self) -> typing.Optional[typing.Mapping[builtins.str, "IDToken"]]:
1259
+ '''(experimental) Specifies the default ID tokens (JSON Web Tokens) that are used for CI/CD authentication to use globally for all jobs.
1260
+
1261
+ :stability: experimental
1262
+ '''
1263
+ result = self._values.get("id_tokens")
1264
+ return typing.cast(typing.Optional[typing.Mapping[builtins.str, "IDToken"]], result)
1265
+
1174
1266
  @builtins.property
1175
1267
  def image(self) -> typing.Optional["Image"]:
1176
1268
  '''
@@ -1279,6 +1371,50 @@ class DefaultElement(enum.Enum):
1279
1371
  '''
1280
1372
 
1281
1373
 
1374
+ @jsii.data_type(
1375
+ jsii_type="projen.gitlab.DefaultHooks",
1376
+ jsii_struct_bases=[],
1377
+ name_mapping={"pre_get_sources_script": "preGetSourcesScript"},
1378
+ )
1379
+ class DefaultHooks:
1380
+ def __init__(
1381
+ self,
1382
+ *,
1383
+ pre_get_sources_script: typing.Optional[typing.Sequence[builtins.str]] = None,
1384
+ ) -> None:
1385
+ '''
1386
+ :param pre_get_sources_script: (experimental) Specify a list of commands to execute on the runner before cloning the Git repository and any submodules https://docs.gitlab.com/ci/yaml/#hookspre_get_sources_script.
1387
+
1388
+ :stability: experimental
1389
+ '''
1390
+ if __debug__:
1391
+ type_hints = typing.get_type_hints(_typecheckingstub__9ead82c15a4a68e5b98f5a4870a986cf8bfd8558ec475eafed66ba30ae376385)
1392
+ check_type(argname="argument pre_get_sources_script", value=pre_get_sources_script, expected_type=type_hints["pre_get_sources_script"])
1393
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
1394
+ if pre_get_sources_script is not None:
1395
+ self._values["pre_get_sources_script"] = pre_get_sources_script
1396
+
1397
+ @builtins.property
1398
+ def pre_get_sources_script(self) -> typing.Optional[typing.List[builtins.str]]:
1399
+ '''(experimental) Specify a list of commands to execute on the runner before cloning the Git repository and any submodules https://docs.gitlab.com/ci/yaml/#hookspre_get_sources_script.
1400
+
1401
+ :stability: experimental
1402
+ '''
1403
+ result = self._values.get("pre_get_sources_script")
1404
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
1405
+
1406
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
1407
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
1408
+
1409
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
1410
+ return not (rhs == self)
1411
+
1412
+ def __repr__(self) -> str:
1413
+ return "DefaultHooks(%s)" % ", ".join(
1414
+ k + "=" + repr(v) for k, v in self._values.items()
1415
+ )
1416
+
1417
+
1282
1418
  @jsii.enum(jsii_type="projen.gitlab.DeploymentTier")
1283
1419
  class DeploymentTier(enum.Enum):
1284
1420
  '''(experimental) Explicitly specifies the tier of the deployment environment if non-standard environment name is used.
@@ -1620,6 +1756,7 @@ class GitlabConfiguration(
1620
1756
  default: typing.Optional[typing.Union[Default, typing.Dict[builtins.str, typing.Any]]] = None,
1621
1757
  jobs: typing.Optional[typing.Mapping[builtins.str, typing.Union["Job", typing.Dict[builtins.str, typing.Any]]]] = None,
1622
1758
  pages: typing.Optional[typing.Union["Job", typing.Dict[builtins.str, typing.Any]]] = None,
1759
+ path: typing.Optional[builtins.str] = None,
1623
1760
  stages: typing.Optional[typing.Sequence[builtins.str]] = None,
1624
1761
  variables: typing.Optional[typing.Mapping[builtins.str, typing.Any]] = None,
1625
1762
  workflow: typing.Optional[typing.Union["Workflow", typing.Dict[builtins.str, typing.Any]]] = None,
@@ -1629,6 +1766,7 @@ class GitlabConfiguration(
1629
1766
  :param default: (experimental) Default settings for the CI Configuration. Jobs that do not define one or more of the listed keywords use the value defined in the default section.
1630
1767
  :param jobs: (experimental) An initial set of jobs to add to the configuration.
1631
1768
  :param pages: (experimental) A special job used to upload static sites to Gitlab pages. Requires a ``public/`` directory with ``artifacts.path`` pointing to it.
1769
+ :param path: (experimental) The path of the file to generate.
1632
1770
  :param stages: (experimental) Groups jobs into stages. All jobs in one stage must complete before next stage is executed. If no stages are specified. Defaults to ['build', 'test', 'deploy'].
1633
1771
  :param variables: (experimental) Global variables that are passed to jobs. If the job already has that variable defined, the job-level variable takes precedence.
1634
1772
  :param workflow: (experimental) Used to control pipeline behavior.
@@ -1642,6 +1780,7 @@ class GitlabConfiguration(
1642
1780
  default=default,
1643
1781
  jobs=jobs,
1644
1782
  pages=pages,
1783
+ path=path,
1645
1784
  stages=stages,
1646
1785
  variables=variables,
1647
1786
  workflow=workflow,
@@ -1723,7 +1862,7 @@ class _IDTokenProxy:
1723
1862
  if __debug__:
1724
1863
  type_hints = typing.get_type_hints(_typecheckingstub__a9e6bbd7c1d3e16ffa82367cdd5ca16ce06a42726f4193639790a39bb2eadef9)
1725
1864
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
1726
- jsii.set(self, "aud", value)
1865
+ jsii.set(self, "aud", value) # pyright: ignore[reportArgumentType]
1727
1866
 
1728
1867
  # Adding a "__jsii_proxy_class__(): typing.Type" function to the interface
1729
1868
  typing.cast(typing.Any, IDToken).__jsii_proxy_class__ = lambda : _IDTokenProxy
@@ -1947,6 +2086,7 @@ class Include:
1947
2086
  "changes": "changes",
1948
2087
  "exists": "exists",
1949
2088
  "if_": "if",
2089
+ "needs": "needs",
1950
2090
  "start_in": "startIn",
1951
2091
  "variables": "variables",
1952
2092
  "when": "when",
@@ -1960,6 +2100,7 @@ class IncludeRule:
1960
2100
  changes: typing.Optional[typing.Sequence[builtins.str]] = None,
1961
2101
  exists: typing.Optional[typing.Sequence[builtins.str]] = None,
1962
2102
  if_: typing.Optional[builtins.str] = None,
2103
+ needs: typing.Optional[typing.Sequence[builtins.str]] = None,
1963
2104
  start_in: typing.Optional[builtins.str] = None,
1964
2105
  variables: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
1965
2106
  when: typing.Optional["JobWhen"] = None,
@@ -1970,6 +2111,7 @@ class IncludeRule:
1970
2111
  :param changes:
1971
2112
  :param exists:
1972
2113
  :param if_:
2114
+ :param needs:
1973
2115
  :param start_in:
1974
2116
  :param variables:
1975
2117
  :param when:
@@ -1983,6 +2125,7 @@ class IncludeRule:
1983
2125
  check_type(argname="argument changes", value=changes, expected_type=type_hints["changes"])
1984
2126
  check_type(argname="argument exists", value=exists, expected_type=type_hints["exists"])
1985
2127
  check_type(argname="argument if_", value=if_, expected_type=type_hints["if_"])
2128
+ check_type(argname="argument needs", value=needs, expected_type=type_hints["needs"])
1986
2129
  check_type(argname="argument start_in", value=start_in, expected_type=type_hints["start_in"])
1987
2130
  check_type(argname="argument variables", value=variables, expected_type=type_hints["variables"])
1988
2131
  check_type(argname="argument when", value=when, expected_type=type_hints["when"])
@@ -1995,6 +2138,8 @@ class IncludeRule:
1995
2138
  self._values["exists"] = exists
1996
2139
  if if_ is not None:
1997
2140
  self._values["if_"] = if_
2141
+ if needs is not None:
2142
+ self._values["needs"] = needs
1998
2143
  if start_in is not None:
1999
2144
  self._values["start_in"] = start_in
2000
2145
  if variables is not None:
@@ -2036,6 +2181,14 @@ class IncludeRule:
2036
2181
  result = self._values.get("if_")
2037
2182
  return typing.cast(typing.Optional[builtins.str], result)
2038
2183
 
2184
+ @builtins.property
2185
+ def needs(self) -> typing.Optional[typing.List[builtins.str]]:
2186
+ '''
2187
+ :stability: experimental
2188
+ '''
2189
+ result = self._values.get("needs")
2190
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
2191
+
2039
2192
  @builtins.property
2040
2193
  def start_in(self) -> typing.Optional[builtins.str]:
2041
2194
  '''
@@ -2158,6 +2311,7 @@ class Inherit:
2158
2311
  "environment": "environment",
2159
2312
  "except_": "except",
2160
2313
  "extends": "extends",
2314
+ "hooks": "hooks",
2161
2315
  "id_tokens": "idTokens",
2162
2316
  "image": "image",
2163
2317
  "inherit": "inherit",
@@ -2195,6 +2349,7 @@ class Job:
2195
2349
  environment: typing.Optional[typing.Union[builtins.str, typing.Union[Environment, typing.Dict[builtins.str, typing.Any]]]] = None,
2196
2350
  except_: typing.Optional[typing.Union[typing.Sequence[builtins.str], typing.Union[Filter, typing.Dict[builtins.str, typing.Any]]]] = None,
2197
2351
  extends: typing.Optional[typing.Sequence[builtins.str]] = None,
2352
+ hooks: typing.Optional[typing.Union[DefaultHooks, typing.Dict[builtins.str, typing.Any]]] = None,
2198
2353
  id_tokens: typing.Optional[typing.Mapping[builtins.str, IDToken]] = None,
2199
2354
  image: typing.Optional[typing.Union[Image, typing.Dict[builtins.str, typing.Any]]] = None,
2200
2355
  inherit: typing.Optional[typing.Union[Inherit, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -2229,6 +2384,7 @@ class Job:
2229
2384
  :param environment: (experimental) Used to associate environment metadata with a deploy. Environment can have a name and URL attached to it, and will be displayed under /environments under the project.
2230
2385
  :param except_: (experimental) Job will run *except* for when these filtering options match.
2231
2386
  :param extends: (experimental) The name of one or more jobs to inherit configuration from.
2387
+ :param hooks:
2232
2388
  :param id_tokens: (experimental) Configurable ID tokens (JSON Web Tokens) that are used for CI/CD authentication.
2233
2389
  :param image:
2234
2390
  :param inherit: (experimental) Controls inheritance of globally-defined defaults and variables. Boolean values control inheritance of all default: or variables: keywords. To inherit only a subset of default: or variables: keywords, specify what you wish to inherit. Anything not listed is not inherited.
@@ -2256,6 +2412,8 @@ class Job:
2256
2412
  '''
2257
2413
  if isinstance(artifacts, dict):
2258
2414
  artifacts = Artifacts(**artifacts)
2415
+ if isinstance(hooks, dict):
2416
+ hooks = DefaultHooks(**hooks)
2259
2417
  if isinstance(image, dict):
2260
2418
  image = Image(**image)
2261
2419
  if isinstance(inherit, dict):
@@ -2276,6 +2434,7 @@ class Job:
2276
2434
  check_type(argname="argument environment", value=environment, expected_type=type_hints["environment"])
2277
2435
  check_type(argname="argument except_", value=except_, expected_type=type_hints["except_"])
2278
2436
  check_type(argname="argument extends", value=extends, expected_type=type_hints["extends"])
2437
+ check_type(argname="argument hooks", value=hooks, expected_type=type_hints["hooks"])
2279
2438
  check_type(argname="argument id_tokens", value=id_tokens, expected_type=type_hints["id_tokens"])
2280
2439
  check_type(argname="argument image", value=image, expected_type=type_hints["image"])
2281
2440
  check_type(argname="argument inherit", value=inherit, expected_type=type_hints["inherit"])
@@ -2318,6 +2477,8 @@ class Job:
2318
2477
  self._values["except_"] = except_
2319
2478
  if extends is not None:
2320
2479
  self._values["extends"] = extends
2480
+ if hooks is not None:
2481
+ self._values["hooks"] = hooks
2321
2482
  if id_tokens is not None:
2322
2483
  self._values["id_tokens"] = id_tokens
2323
2484
  if image is not None:
@@ -2457,6 +2618,14 @@ class Job:
2457
2618
  result = self._values.get("extends")
2458
2619
  return typing.cast(typing.Optional[typing.List[builtins.str]], result)
2459
2620
 
2621
+ @builtins.property
2622
+ def hooks(self) -> typing.Optional[DefaultHooks]:
2623
+ '''
2624
+ :stability: experimental
2625
+ '''
2626
+ result = self._values.get("hooks")
2627
+ return typing.cast(typing.Optional[DefaultHooks], result)
2628
+
2460
2629
  @builtins.property
2461
2630
  def id_tokens(self) -> typing.Optional[typing.Mapping[builtins.str, IDToken]]:
2462
2631
  '''(experimental) Configurable ID tokens (JSON Web Tokens) that are used for CI/CD authentication.
@@ -3010,6 +3179,7 @@ class NestedConfiguration(
3010
3179
  default: typing.Optional[typing.Union[Default, typing.Dict[builtins.str, typing.Any]]] = None,
3011
3180
  jobs: typing.Optional[typing.Mapping[builtins.str, typing.Union[Job, typing.Dict[builtins.str, typing.Any]]]] = None,
3012
3181
  pages: typing.Optional[typing.Union[Job, typing.Dict[builtins.str, typing.Any]]] = None,
3182
+ path: typing.Optional[builtins.str] = None,
3013
3183
  stages: typing.Optional[typing.Sequence[builtins.str]] = None,
3014
3184
  variables: typing.Optional[typing.Mapping[builtins.str, typing.Any]] = None,
3015
3185
  workflow: typing.Optional[typing.Union["Workflow", typing.Dict[builtins.str, typing.Any]]] = None,
@@ -3021,6 +3191,7 @@ class NestedConfiguration(
3021
3191
  :param default: (experimental) Default settings for the CI Configuration. Jobs that do not define one or more of the listed keywords use the value defined in the default section.
3022
3192
  :param jobs: (experimental) An initial set of jobs to add to the configuration.
3023
3193
  :param pages: (experimental) A special job used to upload static sites to Gitlab pages. Requires a ``public/`` directory with ``artifacts.path`` pointing to it.
3194
+ :param path: (experimental) The path of the file to generate.
3024
3195
  :param stages: (experimental) Groups jobs into stages. All jobs in one stage must complete before next stage is executed. If no stages are specified. Defaults to ['build', 'test', 'deploy'].
3025
3196
  :param variables: (experimental) Global variables that are passed to jobs. If the job already has that variable defined, the job-level variable takes precedence.
3026
3197
  :param workflow: (experimental) Used to control pipeline behavior.
@@ -3036,6 +3207,7 @@ class NestedConfiguration(
3036
3207
  default=default,
3037
3208
  jobs=jobs,
3038
3209
  pages=pages,
3210
+ path=path,
3039
3211
  stages=stages,
3040
3212
  variables=variables,
3041
3213
  workflow=workflow,
@@ -3807,14 +3979,22 @@ class Service:
3807
3979
 
3808
3980
  @jsii.enum(jsii_type="projen.gitlab.Strategy")
3809
3981
  class Strategy(enum.Enum):
3810
- '''(experimental) You can mirror the pipeline status from the triggered pipeline to the source bridge job by using strategy: depend.
3982
+ '''(experimental) You can mirror the pipeline status from the triggered pipeline to the source bridge job by using strategy: depend or mirror.
3811
3983
 
3812
3984
  :see: https://docs.gitlab.com/ee/ci/yaml/#triggerstrategy
3813
3985
  :stability: experimental
3814
3986
  '''
3815
3987
 
3816
3988
  DEPEND = "DEPEND"
3989
+ '''(experimental) Not recommended, use mirror instead.
3990
+
3991
+ The trigger job status shows failed, success, or running, depending on the downstream pipeline status.
3992
+
3993
+ :stability: experimental
3817
3994
  '''
3995
+ MIRROR = "MIRROR"
3996
+ '''(experimental) Mirrors the status of the downstream pipeline exactly.
3997
+
3818
3998
  :stability: experimental
3819
3999
  '''
3820
4000
 
@@ -3825,6 +4005,7 @@ class Strategy(enum.Enum):
3825
4005
  name_mapping={
3826
4006
  "branch": "branch",
3827
4007
  "include": "include",
4008
+ "inputs": "inputs",
3828
4009
  "project": "project",
3829
4010
  "strategy": "strategy",
3830
4011
  },
@@ -3835,6 +4016,7 @@ class Trigger:
3835
4016
  *,
3836
4017
  branch: typing.Optional[builtins.str] = None,
3837
4018
  include: typing.Optional[typing.Sequence[typing.Union["TriggerInclude", typing.Dict[builtins.str, typing.Any]]]] = None,
4019
+ inputs: typing.Optional[typing.Mapping[builtins.str, typing.Any]] = None,
3838
4020
  project: typing.Optional[builtins.str] = None,
3839
4021
  strategy: typing.Optional[Strategy] = None,
3840
4022
  ) -> None:
@@ -3844,6 +4026,7 @@ class Trigger:
3844
4026
 
3845
4027
  :param branch: (experimental) The branch name that a downstream pipeline will use.
3846
4028
  :param include: (experimental) A list of local files or artifacts from other jobs to define the pipeline.
4029
+ :param inputs: (experimental) Input parameters for the downstream pipeline when using spec:inputs.
3847
4030
  :param project: (experimental) Path to the project, e.g. ``group/project``, or ``group/sub-group/project``.
3848
4031
  :param strategy: (experimental) You can mirror the pipeline status from the triggered pipeline to the source bridge job by using strategy: depend.
3849
4032
 
@@ -3854,6 +4037,7 @@ class Trigger:
3854
4037
  type_hints = typing.get_type_hints(_typecheckingstub__78aec6a6c462331cffb8d8af511a7a04ea96a7e260e03f8d857ba57103b6c89f)
3855
4038
  check_type(argname="argument branch", value=branch, expected_type=type_hints["branch"])
3856
4039
  check_type(argname="argument include", value=include, expected_type=type_hints["include"])
4040
+ check_type(argname="argument inputs", value=inputs, expected_type=type_hints["inputs"])
3857
4041
  check_type(argname="argument project", value=project, expected_type=type_hints["project"])
3858
4042
  check_type(argname="argument strategy", value=strategy, expected_type=type_hints["strategy"])
3859
4043
  self._values: typing.Dict[builtins.str, typing.Any] = {}
@@ -3861,6 +4045,8 @@ class Trigger:
3861
4045
  self._values["branch"] = branch
3862
4046
  if include is not None:
3863
4047
  self._values["include"] = include
4048
+ if inputs is not None:
4049
+ self._values["inputs"] = inputs
3864
4050
  if project is not None:
3865
4051
  self._values["project"] = project
3866
4052
  if strategy is not None:
@@ -3884,6 +4070,15 @@ class Trigger:
3884
4070
  result = self._values.get("include")
3885
4071
  return typing.cast(typing.Optional[typing.List["TriggerInclude"]], result)
3886
4072
 
4073
+ @builtins.property
4074
+ def inputs(self) -> typing.Optional[typing.Mapping[builtins.str, typing.Any]]:
4075
+ '''(experimental) Input parameters for the downstream pipeline when using spec:inputs.
4076
+
4077
+ :stability: experimental
4078
+ '''
4079
+ result = self._values.get("inputs")
4080
+ return typing.cast(typing.Optional[typing.Mapping[builtins.str, typing.Any]], result)
4081
+
3887
4082
  @builtins.property
3888
4083
  def project(self) -> typing.Optional[builtins.str]:
3889
4084
  '''(experimental) Path to the project, e.g. ``group/project``, or ``group/sub-group/project``.
@@ -4192,16 +4387,18 @@ class VaultConfig:
4192
4387
  @jsii.data_type(
4193
4388
  jsii_type="projen.gitlab.Workflow",
4194
4389
  jsii_struct_bases=[],
4195
- name_mapping={"rules": "rules"},
4390
+ name_mapping={"name": "name", "rules": "rules"},
4196
4391
  )
4197
4392
  class Workflow:
4198
4393
  def __init__(
4199
4394
  self,
4200
4395
  *,
4396
+ name: typing.Optional[builtins.str] = None,
4201
4397
  rules: typing.Optional[typing.Sequence[typing.Union["WorkflowRule", typing.Dict[builtins.str, typing.Any]]]] = None,
4202
4398
  ) -> None:
4203
4399
  '''(experimental) Used to control pipeline behavior.
4204
4400
 
4401
+ :param name: (experimental) You can use name to define a name for pipelines.
4205
4402
  :param rules: (experimental) Used to control whether or not a whole pipeline is created.
4206
4403
 
4207
4404
  :see: https://docs.gitlab.com/ee/ci/yaml/#workflow
@@ -4209,11 +4406,23 @@ class Workflow:
4209
4406
  '''
4210
4407
  if __debug__:
4211
4408
  type_hints = typing.get_type_hints(_typecheckingstub__e0b75047f6bf7eb788b08fc007a66573480a38e913bde351acaac05347d467b1)
4409
+ check_type(argname="argument name", value=name, expected_type=type_hints["name"])
4212
4410
  check_type(argname="argument rules", value=rules, expected_type=type_hints["rules"])
4213
4411
  self._values: typing.Dict[builtins.str, typing.Any] = {}
4412
+ if name is not None:
4413
+ self._values["name"] = name
4214
4414
  if rules is not None:
4215
4415
  self._values["rules"] = rules
4216
4416
 
4417
+ @builtins.property
4418
+ def name(self) -> typing.Optional[builtins.str]:
4419
+ '''(experimental) You can use name to define a name for pipelines.
4420
+
4421
+ :stability: experimental
4422
+ '''
4423
+ result = self._values.get("name")
4424
+ return typing.cast(typing.Optional[builtins.str], result)
4425
+
4217
4426
  @builtins.property
4218
4427
  def rules(self) -> typing.Optional[typing.List["WorkflowRule"]]:
4219
4428
  '''(experimental) Used to control whether or not a whole pipeline is created.
@@ -4375,6 +4584,7 @@ __all__ = [
4375
4584
  "CoverageReport",
4376
4585
  "Default",
4377
4586
  "DefaultElement",
4587
+ "DefaultHooks",
4378
4588
  "DeploymentTier",
4379
4589
  "Engine",
4380
4590
  "Environment",
@@ -4467,6 +4677,7 @@ def _typecheckingstub__231c30bc513f8e09e345dd63392e7c50f479df9f480fc36e03e88fc4a
4467
4677
  default: typing.Optional[typing.Union[Default, typing.Dict[builtins.str, typing.Any]]] = None,
4468
4678
  jobs: typing.Optional[typing.Mapping[builtins.str, typing.Union[Job, typing.Dict[builtins.str, typing.Any]]]] = None,
4469
4679
  pages: typing.Optional[typing.Union[Job, typing.Dict[builtins.str, typing.Any]]] = None,
4680
+ path: typing.Optional[builtins.str] = None,
4470
4681
  stages: typing.Optional[typing.Sequence[builtins.str]] = None,
4471
4682
  variables: typing.Optional[typing.Mapping[builtins.str, typing.Any]] = None,
4472
4683
  workflow: typing.Optional[typing.Union[Workflow, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -4515,6 +4726,7 @@ def _typecheckingstub__cad6204d94421a2493e44c6131e44e9ac2175546be72d0e655df76252
4515
4726
  default: typing.Optional[typing.Union[Default, typing.Dict[builtins.str, typing.Any]]] = None,
4516
4727
  jobs: typing.Optional[typing.Mapping[builtins.str, typing.Union[Job, typing.Dict[builtins.str, typing.Any]]]] = None,
4517
4728
  pages: typing.Optional[typing.Union[Job, typing.Dict[builtins.str, typing.Any]]] = None,
4729
+ path: typing.Optional[builtins.str] = None,
4518
4730
  stages: typing.Optional[typing.Sequence[builtins.str]] = None,
4519
4731
  variables: typing.Optional[typing.Mapping[builtins.str, typing.Any]] = None,
4520
4732
  workflow: typing.Optional[typing.Union[Workflow, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -4536,6 +4748,8 @@ def _typecheckingstub__c8e71d01eda90297db6af675f51033414546212b06d49c00c218dee20
4536
4748
  artifacts: typing.Optional[typing.Union[Artifacts, typing.Dict[builtins.str, typing.Any]]] = None,
4537
4749
  before_script: typing.Optional[typing.Sequence[builtins.str]] = None,
4538
4750
  cache: typing.Optional[typing.Sequence[typing.Union[Cache, typing.Dict[builtins.str, typing.Any]]]] = None,
4751
+ hooks: typing.Optional[typing.Union[DefaultHooks, typing.Dict[builtins.str, typing.Any]]] = None,
4752
+ id_tokens: typing.Optional[typing.Mapping[builtins.str, IDToken]] = None,
4539
4753
  image: typing.Optional[typing.Union[Image, typing.Dict[builtins.str, typing.Any]]] = None,
4540
4754
  interruptible: typing.Optional[builtins.bool] = None,
4541
4755
  retry: typing.Optional[typing.Union[Retry, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -4546,6 +4760,13 @@ def _typecheckingstub__c8e71d01eda90297db6af675f51033414546212b06d49c00c218dee20
4546
4760
  """Type checking stubs"""
4547
4761
  pass
4548
4762
 
4763
+ def _typecheckingstub__9ead82c15a4a68e5b98f5a4870a986cf8bfd8558ec475eafed66ba30ae376385(
4764
+ *,
4765
+ pre_get_sources_script: typing.Optional[typing.Sequence[builtins.str]] = None,
4766
+ ) -> None:
4767
+ """Type checking stubs"""
4768
+ pass
4769
+
4549
4770
  def _typecheckingstub__4574deb50cf9019e113c67d714da29685143324fc4e1df06c5ea08a874de8223(
4550
4771
  *,
4551
4772
  name: builtins.str,
@@ -4583,6 +4804,7 @@ def _typecheckingstub__9b7c22b752837d5c419877611c3664caa886539ab5209465bbfe27372
4583
4804
  default: typing.Optional[typing.Union[Default, typing.Dict[builtins.str, typing.Any]]] = None,
4584
4805
  jobs: typing.Optional[typing.Mapping[builtins.str, typing.Union[Job, typing.Dict[builtins.str, typing.Any]]]] = None,
4585
4806
  pages: typing.Optional[typing.Union[Job, typing.Dict[builtins.str, typing.Any]]] = None,
4807
+ path: typing.Optional[builtins.str] = None,
4586
4808
  stages: typing.Optional[typing.Sequence[builtins.str]] = None,
4587
4809
  variables: typing.Optional[typing.Mapping[builtins.str, typing.Any]] = None,
4588
4810
  workflow: typing.Optional[typing.Union[Workflow, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -4629,6 +4851,7 @@ def _typecheckingstub__5547025bbe422124f59e782b7141894ba37dbf0049070c73b17f39de1
4629
4851
  changes: typing.Optional[typing.Sequence[builtins.str]] = None,
4630
4852
  exists: typing.Optional[typing.Sequence[builtins.str]] = None,
4631
4853
  if_: typing.Optional[builtins.str] = None,
4854
+ needs: typing.Optional[typing.Sequence[builtins.str]] = None,
4632
4855
  start_in: typing.Optional[builtins.str] = None,
4633
4856
  variables: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
4634
4857
  when: typing.Optional[JobWhen] = None,
@@ -4656,6 +4879,7 @@ def _typecheckingstub__485afb8ca4cf12bdaab3c3455c7b90f3ea9d549eb87ec6fd05eae046f
4656
4879
  environment: typing.Optional[typing.Union[builtins.str, typing.Union[Environment, typing.Dict[builtins.str, typing.Any]]]] = None,
4657
4880
  except_: typing.Optional[typing.Union[typing.Sequence[builtins.str], typing.Union[Filter, typing.Dict[builtins.str, typing.Any]]]] = None,
4658
4881
  extends: typing.Optional[typing.Sequence[builtins.str]] = None,
4882
+ hooks: typing.Optional[typing.Union[DefaultHooks, typing.Dict[builtins.str, typing.Any]]] = None,
4659
4883
  id_tokens: typing.Optional[typing.Mapping[builtins.str, IDToken]] = None,
4660
4884
  image: typing.Optional[typing.Union[Image, typing.Dict[builtins.str, typing.Any]]] = None,
4661
4885
  inherit: typing.Optional[typing.Union[Inherit, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -4718,6 +4942,7 @@ def _typecheckingstub__23d7f1d8d243fb7e275a0eeba3f1419822bf2c274e47641e553a5675c
4718
4942
  default: typing.Optional[typing.Union[Default, typing.Dict[builtins.str, typing.Any]]] = None,
4719
4943
  jobs: typing.Optional[typing.Mapping[builtins.str, typing.Union[Job, typing.Dict[builtins.str, typing.Any]]]] = None,
4720
4944
  pages: typing.Optional[typing.Union[Job, typing.Dict[builtins.str, typing.Any]]] = None,
4945
+ path: typing.Optional[builtins.str] = None,
4721
4946
  stages: typing.Optional[typing.Sequence[builtins.str]] = None,
4722
4947
  variables: typing.Optional[typing.Mapping[builtins.str, typing.Any]] = None,
4723
4948
  workflow: typing.Optional[typing.Union[Workflow, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -4799,6 +5024,7 @@ def _typecheckingstub__78aec6a6c462331cffb8d8af511a7a04ea96a7e260e03f8d857ba5710
4799
5024
  *,
4800
5025
  branch: typing.Optional[builtins.str] = None,
4801
5026
  include: typing.Optional[typing.Sequence[typing.Union[TriggerInclude, typing.Dict[builtins.str, typing.Any]]]] = None,
5027
+ inputs: typing.Optional[typing.Mapping[builtins.str, typing.Any]] = None,
4802
5028
  project: typing.Optional[builtins.str] = None,
4803
5029
  strategy: typing.Optional[Strategy] = None,
4804
5030
  ) -> None:
@@ -4837,6 +5063,7 @@ def _typecheckingstub__8bf8b88995e7b236e0548afd560041fc8de683c71708218ce1af2818e
4837
5063
 
4838
5064
  def _typecheckingstub__e0b75047f6bf7eb788b08fc007a66573480a38e913bde351acaac05347d467b1(
4839
5065
  *,
5066
+ name: typing.Optional[builtins.str] = None,
4840
5067
  rules: typing.Optional[typing.Sequence[typing.Union[WorkflowRule, typing.Dict[builtins.str, typing.Any]]]] = None,
4841
5068
  ) -> None:
4842
5069
  """Type checking stubs"""
@@ -4852,3 +5079,6 @@ def _typecheckingstub__01a2cf4c2a982a749d12511d9e43468f3b4a9cca16d6c56d9a2cfd115
4852
5079
  ) -> None:
4853
5080
  """Type checking stubs"""
4854
5081
  pass
5082
+
5083
+ for cls in [IDToken]:
5084
+ typing.cast(typing.Any, cls).__protocol_attrs__ = typing.cast(typing.Any, cls).__protocol_attrs__ - set(['__jsii_proxy_class__', '__jsii_type__'])