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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
projen/gitlab/__init__.py CHANGED
@@ -1,3 +1,6 @@
1
+ from pkgutil import extend_path
2
+ __path__ = extend_path(__path__, __name__)
3
+
1
4
  import abc
2
5
  import builtins
3
6
  import datetime
@@ -8,7 +11,22 @@ import jsii
8
11
  import publication
9
12
  import typing_extensions
10
13
 
11
- from typeguard import check_type
14
+ import typeguard
15
+ from importlib.metadata import version as _metadata_package_version
16
+ TYPEGUARD_MAJOR_VERSION = int(_metadata_package_version('typeguard').split('.')[0])
17
+
18
+ def check_type(argname: str, value: object, expected_type: typing.Any) -> typing.Any:
19
+ if TYPEGUARD_MAJOR_VERSION <= 2:
20
+ return typeguard.check_type(argname=argname, value=value, expected_type=expected_type) # type:ignore
21
+ else:
22
+ if isinstance(value, jsii._reference_map.InterfaceDynamicProxy): # pyright: ignore [reportAttributeAccessIssue]
23
+ pass
24
+ else:
25
+ if TYPEGUARD_MAJOR_VERSION == 3:
26
+ typeguard.config.collection_check_strategy = typeguard.CollectionCheckStrategy.ALL_ITEMS # type:ignore
27
+ typeguard.check_type(value=value, expected_type=expected_type) # type:ignore
28
+ else:
29
+ typeguard.check_type(value=value, expected_type=expected_type, collection_check_strategy=typeguard.CollectionCheckStrategy.ALL_ITEMS) # type:ignore
12
30
 
13
31
  from .._jsii import *
14
32
 
@@ -564,6 +582,7 @@ class CiConfiguration(
564
582
  default: typing.Optional[typing.Union["Default", typing.Dict[builtins.str, typing.Any]]] = None,
565
583
  jobs: typing.Optional[typing.Mapping[builtins.str, typing.Union["Job", typing.Dict[builtins.str, typing.Any]]]] = None,
566
584
  pages: typing.Optional[typing.Union["Job", typing.Dict[builtins.str, typing.Any]]] = None,
585
+ path: typing.Optional[builtins.str] = None,
567
586
  stages: typing.Optional[typing.Sequence[builtins.str]] = None,
568
587
  variables: typing.Optional[typing.Mapping[builtins.str, typing.Any]] = None,
569
588
  workflow: typing.Optional[typing.Union["Workflow", typing.Dict[builtins.str, typing.Any]]] = None,
@@ -574,6 +593,7 @@ class CiConfiguration(
574
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.
575
594
  :param jobs: (experimental) An initial set of jobs to add to the configuration.
576
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.
577
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'].
578
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.
579
599
  :param workflow: (experimental) Used to control pipeline behavior.
@@ -588,6 +608,7 @@ class CiConfiguration(
588
608
  default=default,
589
609
  jobs=jobs,
590
610
  pages=pages,
611
+ path=path,
591
612
  stages=stages,
592
613
  variables=variables,
593
614
  workflow=workflow,
@@ -611,6 +632,22 @@ class CiConfiguration(
611
632
  check_type(argname="argument caches", value=caches, expected_type=type_hints["caches"])
612
633
  return typing.cast(None, jsii.invoke(self, "addDefaultCaches", [caches]))
613
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
+
614
651
  @jsii.member(jsii_name="addGlobalVariables")
615
652
  def add_global_variables(
616
653
  self,
@@ -793,6 +830,17 @@ class CiConfiguration(
793
830
  '''
794
831
  return typing.cast(typing.Optional[typing.List[Cache]], jsii.get(self, "defaultCache"))
795
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
+
796
844
  @builtins.property
797
845
  @jsii.member(jsii_name="defaultImage")
798
846
  def default_image(self) -> typing.Optional["Image"]:
@@ -862,6 +910,7 @@ class CiConfiguration(
862
910
  "default": "default",
863
911
  "jobs": "jobs",
864
912
  "pages": "pages",
913
+ "path": "path",
865
914
  "stages": "stages",
866
915
  "variables": "variables",
867
916
  "workflow": "workflow",
@@ -874,6 +923,7 @@ class CiConfigurationOptions:
874
923
  default: typing.Optional[typing.Union["Default", typing.Dict[builtins.str, typing.Any]]] = None,
875
924
  jobs: typing.Optional[typing.Mapping[builtins.str, typing.Union["Job", typing.Dict[builtins.str, typing.Any]]]] = None,
876
925
  pages: typing.Optional[typing.Union["Job", typing.Dict[builtins.str, typing.Any]]] = None,
926
+ path: typing.Optional[builtins.str] = None,
877
927
  stages: typing.Optional[typing.Sequence[builtins.str]] = None,
878
928
  variables: typing.Optional[typing.Mapping[builtins.str, typing.Any]] = None,
879
929
  workflow: typing.Optional[typing.Union["Workflow", typing.Dict[builtins.str, typing.Any]]] = None,
@@ -883,6 +933,7 @@ class CiConfigurationOptions:
883
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.
884
934
  :param jobs: (experimental) An initial set of jobs to add to the configuration.
885
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.
886
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'].
887
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.
888
939
  :param workflow: (experimental) Used to control pipeline behavior.
@@ -900,6 +951,7 @@ class CiConfigurationOptions:
900
951
  check_type(argname="argument default", value=default, expected_type=type_hints["default"])
901
952
  check_type(argname="argument jobs", value=jobs, expected_type=type_hints["jobs"])
902
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"])
903
955
  check_type(argname="argument stages", value=stages, expected_type=type_hints["stages"])
904
956
  check_type(argname="argument variables", value=variables, expected_type=type_hints["variables"])
905
957
  check_type(argname="argument workflow", value=workflow, expected_type=type_hints["workflow"])
@@ -910,6 +962,8 @@ class CiConfigurationOptions:
910
962
  self._values["jobs"] = jobs
911
963
  if pages is not None:
912
964
  self._values["pages"] = pages
965
+ if path is not None:
966
+ self._values["path"] = path
913
967
  if stages is not None:
914
968
  self._values["stages"] = stages
915
969
  if variables is not None:
@@ -949,6 +1003,15 @@ class CiConfigurationOptions:
949
1003
  result = self._values.get("pages")
950
1004
  return typing.cast(typing.Optional["Job"], result)
951
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
+
952
1015
  @builtins.property
953
1016
  def stages(self) -> typing.Optional[typing.List[builtins.str]]:
954
1017
  '''(experimental) Groups jobs into stages.
@@ -1055,6 +1118,8 @@ class CoverageReport:
1055
1118
  "artifacts": "artifacts",
1056
1119
  "before_script": "beforeScript",
1057
1120
  "cache": "cache",
1121
+ "hooks": "hooks",
1122
+ "id_tokens": "idTokens",
1058
1123
  "image": "image",
1059
1124
  "interruptible": "interruptible",
1060
1125
  "retry": "retry",
@@ -1071,6 +1136,8 @@ class Default:
1071
1136
  artifacts: typing.Optional[typing.Union[Artifacts, typing.Dict[builtins.str, typing.Any]]] = None,
1072
1137
  before_script: typing.Optional[typing.Sequence[builtins.str]] = None,
1073
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,
1074
1141
  image: typing.Optional[typing.Union["Image", typing.Dict[builtins.str, typing.Any]]] = None,
1075
1142
  interruptible: typing.Optional[builtins.bool] = None,
1076
1143
  retry: typing.Optional[typing.Union["Retry", typing.Dict[builtins.str, typing.Any]]] = None,
@@ -1086,6 +1153,8 @@ class Default:
1086
1153
  :param artifacts:
1087
1154
  :param before_script:
1088
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.
1089
1158
  :param image:
1090
1159
  :param interruptible:
1091
1160
  :param retry:
@@ -1098,6 +1167,8 @@ class Default:
1098
1167
  '''
1099
1168
  if isinstance(artifacts, dict):
1100
1169
  artifacts = Artifacts(**artifacts)
1170
+ if isinstance(hooks, dict):
1171
+ hooks = DefaultHooks(**hooks)
1101
1172
  if isinstance(image, dict):
1102
1173
  image = Image(**image)
1103
1174
  if isinstance(retry, dict):
@@ -1108,6 +1179,8 @@ class Default:
1108
1179
  check_type(argname="argument artifacts", value=artifacts, expected_type=type_hints["artifacts"])
1109
1180
  check_type(argname="argument before_script", value=before_script, expected_type=type_hints["before_script"])
1110
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"])
1111
1184
  check_type(argname="argument image", value=image, expected_type=type_hints["image"])
1112
1185
  check_type(argname="argument interruptible", value=interruptible, expected_type=type_hints["interruptible"])
1113
1186
  check_type(argname="argument retry", value=retry, expected_type=type_hints["retry"])
@@ -1123,6 +1196,10 @@ class Default:
1123
1196
  self._values["before_script"] = before_script
1124
1197
  if cache is not None:
1125
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
1126
1203
  if image is not None:
1127
1204
  self._values["image"] = image
1128
1205
  if interruptible is not None:
@@ -1168,6 +1245,24 @@ class Default:
1168
1245
  result = self._values.get("cache")
1169
1246
  return typing.cast(typing.Optional[typing.List[Cache]], result)
1170
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
+
1171
1266
  @builtins.property
1172
1267
  def image(self) -> typing.Optional["Image"]:
1173
1268
  '''
@@ -1276,6 +1371,50 @@ class DefaultElement(enum.Enum):
1276
1371
  '''
1277
1372
 
1278
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
+
1279
1418
  @jsii.enum(jsii_type="projen.gitlab.DeploymentTier")
1280
1419
  class DeploymentTier(enum.Enum):
1281
1420
  '''(experimental) Explicitly specifies the tier of the deployment environment if non-standard environment name is used.
@@ -1617,6 +1756,7 @@ class GitlabConfiguration(
1617
1756
  default: typing.Optional[typing.Union[Default, typing.Dict[builtins.str, typing.Any]]] = None,
1618
1757
  jobs: typing.Optional[typing.Mapping[builtins.str, typing.Union["Job", typing.Dict[builtins.str, typing.Any]]]] = None,
1619
1758
  pages: typing.Optional[typing.Union["Job", typing.Dict[builtins.str, typing.Any]]] = None,
1759
+ path: typing.Optional[builtins.str] = None,
1620
1760
  stages: typing.Optional[typing.Sequence[builtins.str]] = None,
1621
1761
  variables: typing.Optional[typing.Mapping[builtins.str, typing.Any]] = None,
1622
1762
  workflow: typing.Optional[typing.Union["Workflow", typing.Dict[builtins.str, typing.Any]]] = None,
@@ -1626,6 +1766,7 @@ class GitlabConfiguration(
1626
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.
1627
1767
  :param jobs: (experimental) An initial set of jobs to add to the configuration.
1628
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.
1629
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'].
1630
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.
1631
1772
  :param workflow: (experimental) Used to control pipeline behavior.
@@ -1639,6 +1780,7 @@ class GitlabConfiguration(
1639
1780
  default=default,
1640
1781
  jobs=jobs,
1641
1782
  pages=pages,
1783
+ path=path,
1642
1784
  stages=stages,
1643
1785
  variables=variables,
1644
1786
  workflow=workflow,
@@ -1720,7 +1862,7 @@ class _IDTokenProxy:
1720
1862
  if __debug__:
1721
1863
  type_hints = typing.get_type_hints(_typecheckingstub__a9e6bbd7c1d3e16ffa82367cdd5ca16ce06a42726f4193639790a39bb2eadef9)
1722
1864
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
1723
- jsii.set(self, "aud", value)
1865
+ jsii.set(self, "aud", value) # pyright: ignore[reportArgumentType]
1724
1866
 
1725
1867
  # Adding a "__jsii_proxy_class__(): typing.Type" function to the interface
1726
1868
  typing.cast(typing.Any, IDToken).__jsii_proxy_class__ = lambda : _IDTokenProxy
@@ -1944,6 +2086,7 @@ class Include:
1944
2086
  "changes": "changes",
1945
2087
  "exists": "exists",
1946
2088
  "if_": "if",
2089
+ "needs": "needs",
1947
2090
  "start_in": "startIn",
1948
2091
  "variables": "variables",
1949
2092
  "when": "when",
@@ -1957,6 +2100,7 @@ class IncludeRule:
1957
2100
  changes: typing.Optional[typing.Sequence[builtins.str]] = None,
1958
2101
  exists: typing.Optional[typing.Sequence[builtins.str]] = None,
1959
2102
  if_: typing.Optional[builtins.str] = None,
2103
+ needs: typing.Optional[typing.Sequence[builtins.str]] = None,
1960
2104
  start_in: typing.Optional[builtins.str] = None,
1961
2105
  variables: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
1962
2106
  when: typing.Optional["JobWhen"] = None,
@@ -1967,6 +2111,7 @@ class IncludeRule:
1967
2111
  :param changes:
1968
2112
  :param exists:
1969
2113
  :param if_:
2114
+ :param needs:
1970
2115
  :param start_in:
1971
2116
  :param variables:
1972
2117
  :param when:
@@ -1980,6 +2125,7 @@ class IncludeRule:
1980
2125
  check_type(argname="argument changes", value=changes, expected_type=type_hints["changes"])
1981
2126
  check_type(argname="argument exists", value=exists, expected_type=type_hints["exists"])
1982
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"])
1983
2129
  check_type(argname="argument start_in", value=start_in, expected_type=type_hints["start_in"])
1984
2130
  check_type(argname="argument variables", value=variables, expected_type=type_hints["variables"])
1985
2131
  check_type(argname="argument when", value=when, expected_type=type_hints["when"])
@@ -1992,6 +2138,8 @@ class IncludeRule:
1992
2138
  self._values["exists"] = exists
1993
2139
  if if_ is not None:
1994
2140
  self._values["if_"] = if_
2141
+ if needs is not None:
2142
+ self._values["needs"] = needs
1995
2143
  if start_in is not None:
1996
2144
  self._values["start_in"] = start_in
1997
2145
  if variables is not None:
@@ -2033,6 +2181,14 @@ class IncludeRule:
2033
2181
  result = self._values.get("if_")
2034
2182
  return typing.cast(typing.Optional[builtins.str], result)
2035
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
+
2036
2192
  @builtins.property
2037
2193
  def start_in(self) -> typing.Optional[builtins.str]:
2038
2194
  '''
@@ -2155,6 +2311,7 @@ class Inherit:
2155
2311
  "environment": "environment",
2156
2312
  "except_": "except",
2157
2313
  "extends": "extends",
2314
+ "hooks": "hooks",
2158
2315
  "id_tokens": "idTokens",
2159
2316
  "image": "image",
2160
2317
  "inherit": "inherit",
@@ -2192,6 +2349,7 @@ class Job:
2192
2349
  environment: typing.Optional[typing.Union[builtins.str, typing.Union[Environment, typing.Dict[builtins.str, typing.Any]]]] = None,
2193
2350
  except_: typing.Optional[typing.Union[typing.Sequence[builtins.str], typing.Union[Filter, typing.Dict[builtins.str, typing.Any]]]] = None,
2194
2351
  extends: typing.Optional[typing.Sequence[builtins.str]] = None,
2352
+ hooks: typing.Optional[typing.Union[DefaultHooks, typing.Dict[builtins.str, typing.Any]]] = None,
2195
2353
  id_tokens: typing.Optional[typing.Mapping[builtins.str, IDToken]] = None,
2196
2354
  image: typing.Optional[typing.Union[Image, typing.Dict[builtins.str, typing.Any]]] = None,
2197
2355
  inherit: typing.Optional[typing.Union[Inherit, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -2226,6 +2384,7 @@ class Job:
2226
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.
2227
2385
  :param except_: (experimental) Job will run *except* for when these filtering options match.
2228
2386
  :param extends: (experimental) The name of one or more jobs to inherit configuration from.
2387
+ :param hooks:
2229
2388
  :param id_tokens: (experimental) Configurable ID tokens (JSON Web Tokens) that are used for CI/CD authentication.
2230
2389
  :param image:
2231
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.
@@ -2253,6 +2412,8 @@ class Job:
2253
2412
  '''
2254
2413
  if isinstance(artifacts, dict):
2255
2414
  artifacts = Artifacts(**artifacts)
2415
+ if isinstance(hooks, dict):
2416
+ hooks = DefaultHooks(**hooks)
2256
2417
  if isinstance(image, dict):
2257
2418
  image = Image(**image)
2258
2419
  if isinstance(inherit, dict):
@@ -2273,6 +2434,7 @@ class Job:
2273
2434
  check_type(argname="argument environment", value=environment, expected_type=type_hints["environment"])
2274
2435
  check_type(argname="argument except_", value=except_, expected_type=type_hints["except_"])
2275
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"])
2276
2438
  check_type(argname="argument id_tokens", value=id_tokens, expected_type=type_hints["id_tokens"])
2277
2439
  check_type(argname="argument image", value=image, expected_type=type_hints["image"])
2278
2440
  check_type(argname="argument inherit", value=inherit, expected_type=type_hints["inherit"])
@@ -2315,6 +2477,8 @@ class Job:
2315
2477
  self._values["except_"] = except_
2316
2478
  if extends is not None:
2317
2479
  self._values["extends"] = extends
2480
+ if hooks is not None:
2481
+ self._values["hooks"] = hooks
2318
2482
  if id_tokens is not None:
2319
2483
  self._values["id_tokens"] = id_tokens
2320
2484
  if image is not None:
@@ -2454,6 +2618,14 @@ class Job:
2454
2618
  result = self._values.get("extends")
2455
2619
  return typing.cast(typing.Optional[typing.List[builtins.str]], result)
2456
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
+
2457
2629
  @builtins.property
2458
2630
  def id_tokens(self) -> typing.Optional[typing.Mapping[builtins.str, IDToken]]:
2459
2631
  '''(experimental) Configurable ID tokens (JSON Web Tokens) that are used for CI/CD authentication.
@@ -3007,6 +3179,7 @@ class NestedConfiguration(
3007
3179
  default: typing.Optional[typing.Union[Default, typing.Dict[builtins.str, typing.Any]]] = None,
3008
3180
  jobs: typing.Optional[typing.Mapping[builtins.str, typing.Union[Job, typing.Dict[builtins.str, typing.Any]]]] = None,
3009
3181
  pages: typing.Optional[typing.Union[Job, typing.Dict[builtins.str, typing.Any]]] = None,
3182
+ path: typing.Optional[builtins.str] = None,
3010
3183
  stages: typing.Optional[typing.Sequence[builtins.str]] = None,
3011
3184
  variables: typing.Optional[typing.Mapping[builtins.str, typing.Any]] = None,
3012
3185
  workflow: typing.Optional[typing.Union["Workflow", typing.Dict[builtins.str, typing.Any]]] = None,
@@ -3018,6 +3191,7 @@ class NestedConfiguration(
3018
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.
3019
3192
  :param jobs: (experimental) An initial set of jobs to add to the configuration.
3020
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.
3021
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'].
3022
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.
3023
3197
  :param workflow: (experimental) Used to control pipeline behavior.
@@ -3033,6 +3207,7 @@ class NestedConfiguration(
3033
3207
  default=default,
3034
3208
  jobs=jobs,
3035
3209
  pages=pages,
3210
+ path=path,
3036
3211
  stages=stages,
3037
3212
  variables=variables,
3038
3213
  workflow=workflow,
@@ -3804,14 +3979,22 @@ class Service:
3804
3979
 
3805
3980
  @jsii.enum(jsii_type="projen.gitlab.Strategy")
3806
3981
  class Strategy(enum.Enum):
3807
- '''(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.
3808
3983
 
3809
3984
  :see: https://docs.gitlab.com/ee/ci/yaml/#triggerstrategy
3810
3985
  :stability: experimental
3811
3986
  '''
3812
3987
 
3813
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
3814
3994
  '''
3995
+ MIRROR = "MIRROR"
3996
+ '''(experimental) Mirrors the status of the downstream pipeline exactly.
3997
+
3815
3998
  :stability: experimental
3816
3999
  '''
3817
4000
 
@@ -3822,6 +4005,7 @@ class Strategy(enum.Enum):
3822
4005
  name_mapping={
3823
4006
  "branch": "branch",
3824
4007
  "include": "include",
4008
+ "inputs": "inputs",
3825
4009
  "project": "project",
3826
4010
  "strategy": "strategy",
3827
4011
  },
@@ -3832,6 +4016,7 @@ class Trigger:
3832
4016
  *,
3833
4017
  branch: typing.Optional[builtins.str] = None,
3834
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,
3835
4020
  project: typing.Optional[builtins.str] = None,
3836
4021
  strategy: typing.Optional[Strategy] = None,
3837
4022
  ) -> None:
@@ -3841,6 +4026,7 @@ class Trigger:
3841
4026
 
3842
4027
  :param branch: (experimental) The branch name that a downstream pipeline will use.
3843
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.
3844
4030
  :param project: (experimental) Path to the project, e.g. ``group/project``, or ``group/sub-group/project``.
3845
4031
  :param strategy: (experimental) You can mirror the pipeline status from the triggered pipeline to the source bridge job by using strategy: depend.
3846
4032
 
@@ -3851,6 +4037,7 @@ class Trigger:
3851
4037
  type_hints = typing.get_type_hints(_typecheckingstub__78aec6a6c462331cffb8d8af511a7a04ea96a7e260e03f8d857ba57103b6c89f)
3852
4038
  check_type(argname="argument branch", value=branch, expected_type=type_hints["branch"])
3853
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"])
3854
4041
  check_type(argname="argument project", value=project, expected_type=type_hints["project"])
3855
4042
  check_type(argname="argument strategy", value=strategy, expected_type=type_hints["strategy"])
3856
4043
  self._values: typing.Dict[builtins.str, typing.Any] = {}
@@ -3858,6 +4045,8 @@ class Trigger:
3858
4045
  self._values["branch"] = branch
3859
4046
  if include is not None:
3860
4047
  self._values["include"] = include
4048
+ if inputs is not None:
4049
+ self._values["inputs"] = inputs
3861
4050
  if project is not None:
3862
4051
  self._values["project"] = project
3863
4052
  if strategy is not None:
@@ -3881,6 +4070,15 @@ class Trigger:
3881
4070
  result = self._values.get("include")
3882
4071
  return typing.cast(typing.Optional[typing.List["TriggerInclude"]], result)
3883
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
+
3884
4082
  @builtins.property
3885
4083
  def project(self) -> typing.Optional[builtins.str]:
3886
4084
  '''(experimental) Path to the project, e.g. ``group/project``, or ``group/sub-group/project``.
@@ -4189,16 +4387,18 @@ class VaultConfig:
4189
4387
  @jsii.data_type(
4190
4388
  jsii_type="projen.gitlab.Workflow",
4191
4389
  jsii_struct_bases=[],
4192
- name_mapping={"rules": "rules"},
4390
+ name_mapping={"name": "name", "rules": "rules"},
4193
4391
  )
4194
4392
  class Workflow:
4195
4393
  def __init__(
4196
4394
  self,
4197
4395
  *,
4396
+ name: typing.Optional[builtins.str] = None,
4198
4397
  rules: typing.Optional[typing.Sequence[typing.Union["WorkflowRule", typing.Dict[builtins.str, typing.Any]]]] = None,
4199
4398
  ) -> None:
4200
4399
  '''(experimental) Used to control pipeline behavior.
4201
4400
 
4401
+ :param name: (experimental) You can use name to define a name for pipelines.
4202
4402
  :param rules: (experimental) Used to control whether or not a whole pipeline is created.
4203
4403
 
4204
4404
  :see: https://docs.gitlab.com/ee/ci/yaml/#workflow
@@ -4206,11 +4406,23 @@ class Workflow:
4206
4406
  '''
4207
4407
  if __debug__:
4208
4408
  type_hints = typing.get_type_hints(_typecheckingstub__e0b75047f6bf7eb788b08fc007a66573480a38e913bde351acaac05347d467b1)
4409
+ check_type(argname="argument name", value=name, expected_type=type_hints["name"])
4209
4410
  check_type(argname="argument rules", value=rules, expected_type=type_hints["rules"])
4210
4411
  self._values: typing.Dict[builtins.str, typing.Any] = {}
4412
+ if name is not None:
4413
+ self._values["name"] = name
4211
4414
  if rules is not None:
4212
4415
  self._values["rules"] = rules
4213
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
+
4214
4426
  @builtins.property
4215
4427
  def rules(self) -> typing.Optional[typing.List["WorkflowRule"]]:
4216
4428
  '''(experimental) Used to control whether or not a whole pipeline is created.
@@ -4251,7 +4463,7 @@ class WorkflowRule:
4251
4463
  exists: typing.Optional[typing.Sequence[builtins.str]] = None,
4252
4464
  if_: typing.Optional[builtins.str] = None,
4253
4465
  variables: typing.Optional[typing.Mapping[builtins.str, typing.Union[builtins.str, jsii.Number]]] = None,
4254
- when: typing.Optional[JobWhen] = None,
4466
+ when: typing.Optional["WorkflowWhen"] = None,
4255
4467
  ) -> None:
4256
4468
  '''(experimental) Used to control whether or not a whole pipeline is created.
4257
4469
 
@@ -4318,12 +4530,12 @@ class WorkflowRule:
4318
4530
  return typing.cast(typing.Optional[typing.Mapping[builtins.str, typing.Union[builtins.str, jsii.Number]]], result)
4319
4531
 
4320
4532
  @builtins.property
4321
- def when(self) -> typing.Optional[JobWhen]:
4533
+ def when(self) -> typing.Optional["WorkflowWhen"]:
4322
4534
  '''
4323
4535
  :stability: experimental
4324
4536
  '''
4325
4537
  result = self._values.get("when")
4326
- return typing.cast(typing.Optional[JobWhen], result)
4538
+ return typing.cast(typing.Optional["WorkflowWhen"], result)
4327
4539
 
4328
4540
  def __eq__(self, rhs: typing.Any) -> builtins.bool:
4329
4541
  return isinstance(rhs, self.__class__) and rhs._values == self._values
@@ -4372,6 +4584,7 @@ __all__ = [
4372
4584
  "CoverageReport",
4373
4585
  "Default",
4374
4586
  "DefaultElement",
4587
+ "DefaultHooks",
4375
4588
  "DeploymentTier",
4376
4589
  "Engine",
4377
4590
  "Environment",
@@ -4464,6 +4677,7 @@ def _typecheckingstub__231c30bc513f8e09e345dd63392e7c50f479df9f480fc36e03e88fc4a
4464
4677
  default: typing.Optional[typing.Union[Default, typing.Dict[builtins.str, typing.Any]]] = None,
4465
4678
  jobs: typing.Optional[typing.Mapping[builtins.str, typing.Union[Job, typing.Dict[builtins.str, typing.Any]]]] = None,
4466
4679
  pages: typing.Optional[typing.Union[Job, typing.Dict[builtins.str, typing.Any]]] = None,
4680
+ path: typing.Optional[builtins.str] = None,
4467
4681
  stages: typing.Optional[typing.Sequence[builtins.str]] = None,
4468
4682
  variables: typing.Optional[typing.Mapping[builtins.str, typing.Any]] = None,
4469
4683
  workflow: typing.Optional[typing.Union[Workflow, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -4512,6 +4726,7 @@ def _typecheckingstub__cad6204d94421a2493e44c6131e44e9ac2175546be72d0e655df76252
4512
4726
  default: typing.Optional[typing.Union[Default, typing.Dict[builtins.str, typing.Any]]] = None,
4513
4727
  jobs: typing.Optional[typing.Mapping[builtins.str, typing.Union[Job, typing.Dict[builtins.str, typing.Any]]]] = None,
4514
4728
  pages: typing.Optional[typing.Union[Job, typing.Dict[builtins.str, typing.Any]]] = None,
4729
+ path: typing.Optional[builtins.str] = None,
4515
4730
  stages: typing.Optional[typing.Sequence[builtins.str]] = None,
4516
4731
  variables: typing.Optional[typing.Mapping[builtins.str, typing.Any]] = None,
4517
4732
  workflow: typing.Optional[typing.Union[Workflow, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -4533,6 +4748,8 @@ def _typecheckingstub__c8e71d01eda90297db6af675f51033414546212b06d49c00c218dee20
4533
4748
  artifacts: typing.Optional[typing.Union[Artifacts, typing.Dict[builtins.str, typing.Any]]] = None,
4534
4749
  before_script: typing.Optional[typing.Sequence[builtins.str]] = None,
4535
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,
4536
4753
  image: typing.Optional[typing.Union[Image, typing.Dict[builtins.str, typing.Any]]] = None,
4537
4754
  interruptible: typing.Optional[builtins.bool] = None,
4538
4755
  retry: typing.Optional[typing.Union[Retry, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -4543,6 +4760,13 @@ def _typecheckingstub__c8e71d01eda90297db6af675f51033414546212b06d49c00c218dee20
4543
4760
  """Type checking stubs"""
4544
4761
  pass
4545
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
+
4546
4770
  def _typecheckingstub__4574deb50cf9019e113c67d714da29685143324fc4e1df06c5ea08a874de8223(
4547
4771
  *,
4548
4772
  name: builtins.str,
@@ -4580,6 +4804,7 @@ def _typecheckingstub__9b7c22b752837d5c419877611c3664caa886539ab5209465bbfe27372
4580
4804
  default: typing.Optional[typing.Union[Default, typing.Dict[builtins.str, typing.Any]]] = None,
4581
4805
  jobs: typing.Optional[typing.Mapping[builtins.str, typing.Union[Job, typing.Dict[builtins.str, typing.Any]]]] = None,
4582
4806
  pages: typing.Optional[typing.Union[Job, typing.Dict[builtins.str, typing.Any]]] = None,
4807
+ path: typing.Optional[builtins.str] = None,
4583
4808
  stages: typing.Optional[typing.Sequence[builtins.str]] = None,
4584
4809
  variables: typing.Optional[typing.Mapping[builtins.str, typing.Any]] = None,
4585
4810
  workflow: typing.Optional[typing.Union[Workflow, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -4626,6 +4851,7 @@ def _typecheckingstub__5547025bbe422124f59e782b7141894ba37dbf0049070c73b17f39de1
4626
4851
  changes: typing.Optional[typing.Sequence[builtins.str]] = None,
4627
4852
  exists: typing.Optional[typing.Sequence[builtins.str]] = None,
4628
4853
  if_: typing.Optional[builtins.str] = None,
4854
+ needs: typing.Optional[typing.Sequence[builtins.str]] = None,
4629
4855
  start_in: typing.Optional[builtins.str] = None,
4630
4856
  variables: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
4631
4857
  when: typing.Optional[JobWhen] = None,
@@ -4653,6 +4879,7 @@ def _typecheckingstub__485afb8ca4cf12bdaab3c3455c7b90f3ea9d549eb87ec6fd05eae046f
4653
4879
  environment: typing.Optional[typing.Union[builtins.str, typing.Union[Environment, typing.Dict[builtins.str, typing.Any]]]] = None,
4654
4880
  except_: typing.Optional[typing.Union[typing.Sequence[builtins.str], typing.Union[Filter, typing.Dict[builtins.str, typing.Any]]]] = None,
4655
4881
  extends: typing.Optional[typing.Sequence[builtins.str]] = None,
4882
+ hooks: typing.Optional[typing.Union[DefaultHooks, typing.Dict[builtins.str, typing.Any]]] = None,
4656
4883
  id_tokens: typing.Optional[typing.Mapping[builtins.str, IDToken]] = None,
4657
4884
  image: typing.Optional[typing.Union[Image, typing.Dict[builtins.str, typing.Any]]] = None,
4658
4885
  inherit: typing.Optional[typing.Union[Inherit, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -4715,6 +4942,7 @@ def _typecheckingstub__23d7f1d8d243fb7e275a0eeba3f1419822bf2c274e47641e553a5675c
4715
4942
  default: typing.Optional[typing.Union[Default, typing.Dict[builtins.str, typing.Any]]] = None,
4716
4943
  jobs: typing.Optional[typing.Mapping[builtins.str, typing.Union[Job, typing.Dict[builtins.str, typing.Any]]]] = None,
4717
4944
  pages: typing.Optional[typing.Union[Job, typing.Dict[builtins.str, typing.Any]]] = None,
4945
+ path: typing.Optional[builtins.str] = None,
4718
4946
  stages: typing.Optional[typing.Sequence[builtins.str]] = None,
4719
4947
  variables: typing.Optional[typing.Mapping[builtins.str, typing.Any]] = None,
4720
4948
  workflow: typing.Optional[typing.Union[Workflow, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -4796,6 +5024,7 @@ def _typecheckingstub__78aec6a6c462331cffb8d8af511a7a04ea96a7e260e03f8d857ba5710
4796
5024
  *,
4797
5025
  branch: typing.Optional[builtins.str] = None,
4798
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,
4799
5028
  project: typing.Optional[builtins.str] = None,
4800
5029
  strategy: typing.Optional[Strategy] = None,
4801
5030
  ) -> None:
@@ -4834,6 +5063,7 @@ def _typecheckingstub__8bf8b88995e7b236e0548afd560041fc8de683c71708218ce1af2818e
4834
5063
 
4835
5064
  def _typecheckingstub__e0b75047f6bf7eb788b08fc007a66573480a38e913bde351acaac05347d467b1(
4836
5065
  *,
5066
+ name: typing.Optional[builtins.str] = None,
4837
5067
  rules: typing.Optional[typing.Sequence[typing.Union[WorkflowRule, typing.Dict[builtins.str, typing.Any]]]] = None,
4838
5068
  ) -> None:
4839
5069
  """Type checking stubs"""
@@ -4845,7 +5075,10 @@ def _typecheckingstub__01a2cf4c2a982a749d12511d9e43468f3b4a9cca16d6c56d9a2cfd115
4845
5075
  exists: typing.Optional[typing.Sequence[builtins.str]] = None,
4846
5076
  if_: typing.Optional[builtins.str] = None,
4847
5077
  variables: typing.Optional[typing.Mapping[builtins.str, typing.Union[builtins.str, jsii.Number]]] = None,
4848
- when: typing.Optional[JobWhen] = None,
5078
+ when: typing.Optional[WorkflowWhen] = None,
4849
5079
  ) -> None:
4850
5080
  """Type checking stubs"""
4851
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__'])