pulumi-docker-build 0.1.0a1736895711__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.

Potentially problematic release.


This version of pulumi-docker-build might be problematic. Click here for more details.

@@ -0,0 +1,2404 @@
1
+ # coding=utf-8
2
+ # *** WARNING: this file was generated by pulumi-language-python. ***
3
+ # *** Do not edit by hand unless you're certain you know what you are doing! ***
4
+
5
+ import copy
6
+ import warnings
7
+ import sys
8
+ import pulumi
9
+ import pulumi.runtime
10
+ from typing import Any, Mapping, Optional, Sequence, Union, overload
11
+ if sys.version_info >= (3, 11):
12
+ from typing import NotRequired, TypedDict, TypeAlias
13
+ else:
14
+ from typing_extensions import NotRequired, TypedDict, TypeAlias
15
+ from . import _utilities
16
+ from . import outputs
17
+ from ._enums import *
18
+
19
+ __all__ = [
20
+ 'BuildContext',
21
+ 'BuilderConfig',
22
+ 'CacheFrom',
23
+ 'CacheFromAzureBlob',
24
+ 'CacheFromGitHubActions',
25
+ 'CacheFromLocal',
26
+ 'CacheFromRegistry',
27
+ 'CacheFromS3',
28
+ 'CacheTo',
29
+ 'CacheToAzureBlob',
30
+ 'CacheToGitHubActions',
31
+ 'CacheToInline',
32
+ 'CacheToLocal',
33
+ 'CacheToRegistry',
34
+ 'CacheToS3',
35
+ 'Context',
36
+ 'Dockerfile',
37
+ 'Export',
38
+ 'ExportCacheOnly',
39
+ 'ExportDocker',
40
+ 'ExportImage',
41
+ 'ExportLocal',
42
+ 'ExportOCI',
43
+ 'ExportRegistry',
44
+ 'ExportTar',
45
+ 'Registry',
46
+ 'SSH',
47
+ ]
48
+
49
+ @pulumi.output_type
50
+ class BuildContext(dict):
51
+ def __init__(__self__, *,
52
+ location: str,
53
+ named: Optional[Mapping[str, 'outputs.Context']] = None):
54
+ """
55
+ :param str location: Resources to use for build context.
56
+
57
+ The location can be:
58
+ * A relative or absolute path to a local directory (`.`, `./app`,
59
+ `/app`, etc.).
60
+ * A remote URL of a Git repository, tarball, or plain text file
61
+ (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`,
62
+ etc.).
63
+ :param Mapping[str, 'Context'] named: Additional build contexts to use.
64
+
65
+ These contexts are accessed with `FROM name` or `--from=name`
66
+ statements when using Dockerfile 1.4+ syntax.
67
+
68
+ Values can be local paths, HTTP URLs, or `docker-image://` images.
69
+ """
70
+ pulumi.set(__self__, "location", location)
71
+ if named is not None:
72
+ pulumi.set(__self__, "named", named)
73
+
74
+ @property
75
+ @pulumi.getter
76
+ def location(self) -> str:
77
+ """
78
+ Resources to use for build context.
79
+
80
+ The location can be:
81
+ * A relative or absolute path to a local directory (`.`, `./app`,
82
+ `/app`, etc.).
83
+ * A remote URL of a Git repository, tarball, or plain text file
84
+ (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`,
85
+ etc.).
86
+ """
87
+ return pulumi.get(self, "location")
88
+
89
+ @property
90
+ @pulumi.getter
91
+ def named(self) -> Optional[Mapping[str, 'outputs.Context']]:
92
+ """
93
+ Additional build contexts to use.
94
+
95
+ These contexts are accessed with `FROM name` or `--from=name`
96
+ statements when using Dockerfile 1.4+ syntax.
97
+
98
+ Values can be local paths, HTTP URLs, or `docker-image://` images.
99
+ """
100
+ return pulumi.get(self, "named")
101
+
102
+
103
+ @pulumi.output_type
104
+ class BuilderConfig(dict):
105
+ def __init__(__self__, *,
106
+ name: Optional[str] = None):
107
+ """
108
+ :param str name: Name of an existing buildx builder to use.
109
+
110
+ Only `docker-container`, `kubernetes`, or `remote` drivers are
111
+ supported. The legacy `docker` driver is not supported.
112
+
113
+ Equivalent to Docker's `--builder` flag.
114
+ """
115
+ if name is not None:
116
+ pulumi.set(__self__, "name", name)
117
+
118
+ @property
119
+ @pulumi.getter
120
+ def name(self) -> Optional[str]:
121
+ """
122
+ Name of an existing buildx builder to use.
123
+
124
+ Only `docker-container`, `kubernetes`, or `remote` drivers are
125
+ supported. The legacy `docker` driver is not supported.
126
+
127
+ Equivalent to Docker's `--builder` flag.
128
+ """
129
+ return pulumi.get(self, "name")
130
+
131
+
132
+ @pulumi.output_type
133
+ class CacheFrom(dict):
134
+ def __init__(__self__, *,
135
+ azblob: Optional['outputs.CacheFromAzureBlob'] = None,
136
+ disabled: Optional[bool] = None,
137
+ gha: Optional['outputs.CacheFromGitHubActions'] = None,
138
+ local: Optional['outputs.CacheFromLocal'] = None,
139
+ raw: Optional[str] = None,
140
+ registry: Optional['outputs.CacheFromRegistry'] = None,
141
+ s3: Optional['outputs.CacheFromS3'] = None):
142
+ """
143
+ :param 'CacheFromAzureBlob' azblob: Upload build caches to Azure's blob storage service.
144
+ :param bool disabled: When `true` this entry will be excluded. Defaults to `false`.
145
+ :param 'CacheFromGitHubActions' gha: Recommended for use with GitHub Actions workflows.
146
+
147
+ An action like `crazy-max/ghaction-github-runtime` is recommended to
148
+ expose appropriate credentials to your GitHub workflow.
149
+ :param 'CacheFromLocal' local: A simple backend which caches images on your local filesystem.
150
+ :param str raw: A raw string as you would provide it to the Docker CLI (e.g.,
151
+ `type=inline`).
152
+ :param 'CacheFromRegistry' registry: Upload build caches to remote registries.
153
+ :param 'CacheFromS3' s3: Upload build caches to AWS S3 or an S3-compatible services such as
154
+ MinIO.
155
+ """
156
+ if azblob is not None:
157
+ pulumi.set(__self__, "azblob", azblob)
158
+ if disabled is not None:
159
+ pulumi.set(__self__, "disabled", disabled)
160
+ if gha is not None:
161
+ pulumi.set(__self__, "gha", gha)
162
+ if local is not None:
163
+ pulumi.set(__self__, "local", local)
164
+ if raw is not None:
165
+ pulumi.set(__self__, "raw", raw)
166
+ if registry is not None:
167
+ pulumi.set(__self__, "registry", registry)
168
+ if s3 is not None:
169
+ pulumi.set(__self__, "s3", s3)
170
+
171
+ @property
172
+ @pulumi.getter
173
+ def azblob(self) -> Optional['outputs.CacheFromAzureBlob']:
174
+ """
175
+ Upload build caches to Azure's blob storage service.
176
+ """
177
+ return pulumi.get(self, "azblob")
178
+
179
+ @property
180
+ @pulumi.getter
181
+ def disabled(self) -> Optional[bool]:
182
+ """
183
+ When `true` this entry will be excluded. Defaults to `false`.
184
+ """
185
+ return pulumi.get(self, "disabled")
186
+
187
+ @property
188
+ @pulumi.getter
189
+ def gha(self) -> Optional['outputs.CacheFromGitHubActions']:
190
+ """
191
+ Recommended for use with GitHub Actions workflows.
192
+
193
+ An action like `crazy-max/ghaction-github-runtime` is recommended to
194
+ expose appropriate credentials to your GitHub workflow.
195
+ """
196
+ return pulumi.get(self, "gha")
197
+
198
+ @property
199
+ @pulumi.getter
200
+ def local(self) -> Optional['outputs.CacheFromLocal']:
201
+ """
202
+ A simple backend which caches images on your local filesystem.
203
+ """
204
+ return pulumi.get(self, "local")
205
+
206
+ @property
207
+ @pulumi.getter
208
+ def raw(self) -> Optional[str]:
209
+ """
210
+ A raw string as you would provide it to the Docker CLI (e.g.,
211
+ `type=inline`).
212
+ """
213
+ return pulumi.get(self, "raw")
214
+
215
+ @property
216
+ @pulumi.getter
217
+ def registry(self) -> Optional['outputs.CacheFromRegistry']:
218
+ """
219
+ Upload build caches to remote registries.
220
+ """
221
+ return pulumi.get(self, "registry")
222
+
223
+ @property
224
+ @pulumi.getter
225
+ def s3(self) -> Optional['outputs.CacheFromS3']:
226
+ """
227
+ Upload build caches to AWS S3 or an S3-compatible services such as
228
+ MinIO.
229
+ """
230
+ return pulumi.get(self, "s3")
231
+
232
+
233
+ @pulumi.output_type
234
+ class CacheFromAzureBlob(dict):
235
+ @staticmethod
236
+ def __key_warning(key: str):
237
+ suggest = None
238
+ if key == "accountUrl":
239
+ suggest = "account_url"
240
+ elif key == "secretAccessKey":
241
+ suggest = "secret_access_key"
242
+
243
+ if suggest:
244
+ pulumi.log.warn(f"Key '{key}' not found in CacheFromAzureBlob. Access the value via the '{suggest}' property getter instead.")
245
+
246
+ def __getitem__(self, key: str) -> Any:
247
+ CacheFromAzureBlob.__key_warning(key)
248
+ return super().__getitem__(key)
249
+
250
+ def get(self, key: str, default = None) -> Any:
251
+ CacheFromAzureBlob.__key_warning(key)
252
+ return super().get(key, default)
253
+
254
+ def __init__(__self__, *,
255
+ name: str,
256
+ account_url: Optional[str] = None,
257
+ secret_access_key: Optional[str] = None):
258
+ """
259
+ :param str name: The name of the cache image.
260
+ :param str account_url: Base URL of the storage account.
261
+ :param str secret_access_key: Blob storage account key.
262
+ """
263
+ pulumi.set(__self__, "name", name)
264
+ if account_url is not None:
265
+ pulumi.set(__self__, "account_url", account_url)
266
+ if secret_access_key is not None:
267
+ pulumi.set(__self__, "secret_access_key", secret_access_key)
268
+
269
+ @property
270
+ @pulumi.getter
271
+ def name(self) -> str:
272
+ """
273
+ The name of the cache image.
274
+ """
275
+ return pulumi.get(self, "name")
276
+
277
+ @property
278
+ @pulumi.getter(name="accountUrl")
279
+ def account_url(self) -> Optional[str]:
280
+ """
281
+ Base URL of the storage account.
282
+ """
283
+ return pulumi.get(self, "account_url")
284
+
285
+ @property
286
+ @pulumi.getter(name="secretAccessKey")
287
+ def secret_access_key(self) -> Optional[str]:
288
+ """
289
+ Blob storage account key.
290
+ """
291
+ return pulumi.get(self, "secret_access_key")
292
+
293
+
294
+ @pulumi.output_type
295
+ class CacheFromGitHubActions(dict):
296
+ def __init__(__self__, *,
297
+ scope: Optional[str] = None,
298
+ token: Optional[str] = None,
299
+ url: Optional[str] = None):
300
+ """
301
+ :param str scope: The scope to use for cache keys. Defaults to `buildkit`.
302
+
303
+ This should be set if building and caching multiple images in one
304
+ workflow, otherwise caches will overwrite each other.
305
+ :param str token: The GitHub Actions token to use. This is not a personal access tokens
306
+ and is typically generated automatically as part of each job.
307
+
308
+ Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like
309
+ `crazy-max/ghaction-github-runtime` is recommended to expose this
310
+ environment variable to your jobs.
311
+ :param str url: The cache server URL to use for artifacts.
312
+
313
+ Defaults to `$ACTIONS_CACHE_URL`, although a separate action like
314
+ `crazy-max/ghaction-github-runtime` is recommended to expose this
315
+ environment variable to your jobs.
316
+ """
317
+ if scope is None:
318
+ scope = (_utilities.get_env('buildkit') or '')
319
+ if scope is not None:
320
+ pulumi.set(__self__, "scope", scope)
321
+ if token is None:
322
+ token = (_utilities.get_env('ACTIONS_RUNTIME_TOKEN') or '')
323
+ if token is not None:
324
+ pulumi.set(__self__, "token", token)
325
+ if url is None:
326
+ url = (_utilities.get_env('ACTIONS_CACHE_URL') or '')
327
+ if url is not None:
328
+ pulumi.set(__self__, "url", url)
329
+
330
+ @property
331
+ @pulumi.getter
332
+ def scope(self) -> Optional[str]:
333
+ """
334
+ The scope to use for cache keys. Defaults to `buildkit`.
335
+
336
+ This should be set if building and caching multiple images in one
337
+ workflow, otherwise caches will overwrite each other.
338
+ """
339
+ return pulumi.get(self, "scope")
340
+
341
+ @property
342
+ @pulumi.getter
343
+ def token(self) -> Optional[str]:
344
+ """
345
+ The GitHub Actions token to use. This is not a personal access tokens
346
+ and is typically generated automatically as part of each job.
347
+
348
+ Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like
349
+ `crazy-max/ghaction-github-runtime` is recommended to expose this
350
+ environment variable to your jobs.
351
+ """
352
+ return pulumi.get(self, "token")
353
+
354
+ @property
355
+ @pulumi.getter
356
+ def url(self) -> Optional[str]:
357
+ """
358
+ The cache server URL to use for artifacts.
359
+
360
+ Defaults to `$ACTIONS_CACHE_URL`, although a separate action like
361
+ `crazy-max/ghaction-github-runtime` is recommended to expose this
362
+ environment variable to your jobs.
363
+ """
364
+ return pulumi.get(self, "url")
365
+
366
+
367
+ @pulumi.output_type
368
+ class CacheFromLocal(dict):
369
+ def __init__(__self__, *,
370
+ src: str,
371
+ digest: Optional[str] = None):
372
+ """
373
+ :param str src: Path of the local directory where cache gets imported from.
374
+ :param str digest: Digest of manifest to import.
375
+ """
376
+ pulumi.set(__self__, "src", src)
377
+ if digest is not None:
378
+ pulumi.set(__self__, "digest", digest)
379
+
380
+ @property
381
+ @pulumi.getter
382
+ def src(self) -> str:
383
+ """
384
+ Path of the local directory where cache gets imported from.
385
+ """
386
+ return pulumi.get(self, "src")
387
+
388
+ @property
389
+ @pulumi.getter
390
+ def digest(self) -> Optional[str]:
391
+ """
392
+ Digest of manifest to import.
393
+ """
394
+ return pulumi.get(self, "digest")
395
+
396
+
397
+ @pulumi.output_type
398
+ class CacheFromRegistry(dict):
399
+ def __init__(__self__, *,
400
+ ref: str):
401
+ """
402
+ :param str ref: Fully qualified name of the cache image to import.
403
+ """
404
+ pulumi.set(__self__, "ref", ref)
405
+
406
+ @property
407
+ @pulumi.getter
408
+ def ref(self) -> str:
409
+ """
410
+ Fully qualified name of the cache image to import.
411
+ """
412
+ return pulumi.get(self, "ref")
413
+
414
+
415
+ @pulumi.output_type
416
+ class CacheFromS3(dict):
417
+ @staticmethod
418
+ def __key_warning(key: str):
419
+ suggest = None
420
+ if key == "accessKeyId":
421
+ suggest = "access_key_id"
422
+ elif key == "blobsPrefix":
423
+ suggest = "blobs_prefix"
424
+ elif key == "endpointUrl":
425
+ suggest = "endpoint_url"
426
+ elif key == "manifestsPrefix":
427
+ suggest = "manifests_prefix"
428
+ elif key == "secretAccessKey":
429
+ suggest = "secret_access_key"
430
+ elif key == "sessionToken":
431
+ suggest = "session_token"
432
+ elif key == "usePathStyle":
433
+ suggest = "use_path_style"
434
+
435
+ if suggest:
436
+ pulumi.log.warn(f"Key '{key}' not found in CacheFromS3. Access the value via the '{suggest}' property getter instead.")
437
+
438
+ def __getitem__(self, key: str) -> Any:
439
+ CacheFromS3.__key_warning(key)
440
+ return super().__getitem__(key)
441
+
442
+ def get(self, key: str, default = None) -> Any:
443
+ CacheFromS3.__key_warning(key)
444
+ return super().get(key, default)
445
+
446
+ def __init__(__self__, *,
447
+ bucket: str,
448
+ region: Optional[str] = None,
449
+ access_key_id: Optional[str] = None,
450
+ blobs_prefix: Optional[str] = None,
451
+ endpoint_url: Optional[str] = None,
452
+ manifests_prefix: Optional[str] = None,
453
+ name: Optional[str] = None,
454
+ secret_access_key: Optional[str] = None,
455
+ session_token: Optional[str] = None,
456
+ use_path_style: Optional[bool] = None):
457
+ """
458
+ :param str bucket: Name of the S3 bucket.
459
+ :param str region: The geographic location of the bucket. Defaults to `$AWS_REGION`.
460
+ :param str access_key_id: Defaults to `$AWS_ACCESS_KEY_ID`.
461
+ :param str blobs_prefix: Prefix to prepend to blob filenames.
462
+ :param str endpoint_url: Endpoint of the S3 bucket.
463
+ :param str manifests_prefix: Prefix to prepend on manifest filenames.
464
+ :param str name: Name of the cache image.
465
+ :param str secret_access_key: Defaults to `$AWS_SECRET_ACCESS_KEY`.
466
+ :param str session_token: Defaults to `$AWS_SESSION_TOKEN`.
467
+ :param bool use_path_style: Uses `bucket` in the URL instead of hostname when `true`.
468
+ """
469
+ pulumi.set(__self__, "bucket", bucket)
470
+ if region is None:
471
+ region = (_utilities.get_env('AWS_REGION') or '')
472
+ pulumi.set(__self__, "region", region)
473
+ if access_key_id is None:
474
+ access_key_id = (_utilities.get_env('AWS_ACCESS_KEY_ID') or '')
475
+ if access_key_id is not None:
476
+ pulumi.set(__self__, "access_key_id", access_key_id)
477
+ if blobs_prefix is not None:
478
+ pulumi.set(__self__, "blobs_prefix", blobs_prefix)
479
+ if endpoint_url is not None:
480
+ pulumi.set(__self__, "endpoint_url", endpoint_url)
481
+ if manifests_prefix is not None:
482
+ pulumi.set(__self__, "manifests_prefix", manifests_prefix)
483
+ if name is not None:
484
+ pulumi.set(__self__, "name", name)
485
+ if secret_access_key is None:
486
+ secret_access_key = (_utilities.get_env('AWS_SECRET_ACCESS_KEY') or '')
487
+ if secret_access_key is not None:
488
+ pulumi.set(__self__, "secret_access_key", secret_access_key)
489
+ if session_token is None:
490
+ session_token = (_utilities.get_env('AWS_SESSION_TOKEN') or '')
491
+ if session_token is not None:
492
+ pulumi.set(__self__, "session_token", session_token)
493
+ if use_path_style is not None:
494
+ pulumi.set(__self__, "use_path_style", use_path_style)
495
+
496
+ @property
497
+ @pulumi.getter
498
+ def bucket(self) -> str:
499
+ """
500
+ Name of the S3 bucket.
501
+ """
502
+ return pulumi.get(self, "bucket")
503
+
504
+ @property
505
+ @pulumi.getter
506
+ def region(self) -> str:
507
+ """
508
+ The geographic location of the bucket. Defaults to `$AWS_REGION`.
509
+ """
510
+ return pulumi.get(self, "region")
511
+
512
+ @property
513
+ @pulumi.getter(name="accessKeyId")
514
+ def access_key_id(self) -> Optional[str]:
515
+ """
516
+ Defaults to `$AWS_ACCESS_KEY_ID`.
517
+ """
518
+ return pulumi.get(self, "access_key_id")
519
+
520
+ @property
521
+ @pulumi.getter(name="blobsPrefix")
522
+ def blobs_prefix(self) -> Optional[str]:
523
+ """
524
+ Prefix to prepend to blob filenames.
525
+ """
526
+ return pulumi.get(self, "blobs_prefix")
527
+
528
+ @property
529
+ @pulumi.getter(name="endpointUrl")
530
+ def endpoint_url(self) -> Optional[str]:
531
+ """
532
+ Endpoint of the S3 bucket.
533
+ """
534
+ return pulumi.get(self, "endpoint_url")
535
+
536
+ @property
537
+ @pulumi.getter(name="manifestsPrefix")
538
+ def manifests_prefix(self) -> Optional[str]:
539
+ """
540
+ Prefix to prepend on manifest filenames.
541
+ """
542
+ return pulumi.get(self, "manifests_prefix")
543
+
544
+ @property
545
+ @pulumi.getter
546
+ def name(self) -> Optional[str]:
547
+ """
548
+ Name of the cache image.
549
+ """
550
+ return pulumi.get(self, "name")
551
+
552
+ @property
553
+ @pulumi.getter(name="secretAccessKey")
554
+ def secret_access_key(self) -> Optional[str]:
555
+ """
556
+ Defaults to `$AWS_SECRET_ACCESS_KEY`.
557
+ """
558
+ return pulumi.get(self, "secret_access_key")
559
+
560
+ @property
561
+ @pulumi.getter(name="sessionToken")
562
+ def session_token(self) -> Optional[str]:
563
+ """
564
+ Defaults to `$AWS_SESSION_TOKEN`.
565
+ """
566
+ return pulumi.get(self, "session_token")
567
+
568
+ @property
569
+ @pulumi.getter(name="usePathStyle")
570
+ def use_path_style(self) -> Optional[bool]:
571
+ """
572
+ Uses `bucket` in the URL instead of hostname when `true`.
573
+ """
574
+ return pulumi.get(self, "use_path_style")
575
+
576
+
577
+ @pulumi.output_type
578
+ class CacheTo(dict):
579
+ def __init__(__self__, *,
580
+ azblob: Optional['outputs.CacheToAzureBlob'] = None,
581
+ disabled: Optional[bool] = None,
582
+ gha: Optional['outputs.CacheToGitHubActions'] = None,
583
+ inline: Optional['outputs.CacheToInline'] = None,
584
+ local: Optional['outputs.CacheToLocal'] = None,
585
+ raw: Optional[str] = None,
586
+ registry: Optional['outputs.CacheToRegistry'] = None,
587
+ s3: Optional['outputs.CacheToS3'] = None):
588
+ """
589
+ :param 'CacheToAzureBlob' azblob: Push cache to Azure's blob storage service.
590
+ :param bool disabled: When `true` this entry will be excluded. Defaults to `false`.
591
+ :param 'CacheToGitHubActions' gha: Recommended for use with GitHub Actions workflows.
592
+
593
+ An action like `crazy-max/ghaction-github-runtime` is recommended to
594
+ expose appropriate credentials to your GitHub workflow.
595
+ :param 'CacheToInline' inline: The inline cache storage backend is the simplest implementation to get
596
+ started with, but it does not handle multi-stage builds. Consider the
597
+ `registry` cache backend instead.
598
+ :param 'CacheToLocal' local: A simple backend which caches imagines on your local filesystem.
599
+ :param str raw: A raw string as you would provide it to the Docker CLI (e.g.,
600
+ `type=inline`)
601
+ :param 'CacheToRegistry' registry: Push caches to remote registries. Incompatible with the `docker` build
602
+ driver.
603
+ :param 'CacheToS3' s3: Push cache to AWS S3 or S3-compatible services such as MinIO.
604
+ """
605
+ if azblob is not None:
606
+ pulumi.set(__self__, "azblob", azblob)
607
+ if disabled is not None:
608
+ pulumi.set(__self__, "disabled", disabled)
609
+ if gha is not None:
610
+ pulumi.set(__self__, "gha", gha)
611
+ if inline is not None:
612
+ pulumi.set(__self__, "inline", inline)
613
+ if local is not None:
614
+ pulumi.set(__self__, "local", local)
615
+ if raw is not None:
616
+ pulumi.set(__self__, "raw", raw)
617
+ if registry is not None:
618
+ pulumi.set(__self__, "registry", registry)
619
+ if s3 is not None:
620
+ pulumi.set(__self__, "s3", s3)
621
+
622
+ @property
623
+ @pulumi.getter
624
+ def azblob(self) -> Optional['outputs.CacheToAzureBlob']:
625
+ """
626
+ Push cache to Azure's blob storage service.
627
+ """
628
+ return pulumi.get(self, "azblob")
629
+
630
+ @property
631
+ @pulumi.getter
632
+ def disabled(self) -> Optional[bool]:
633
+ """
634
+ When `true` this entry will be excluded. Defaults to `false`.
635
+ """
636
+ return pulumi.get(self, "disabled")
637
+
638
+ @property
639
+ @pulumi.getter
640
+ def gha(self) -> Optional['outputs.CacheToGitHubActions']:
641
+ """
642
+ Recommended for use with GitHub Actions workflows.
643
+
644
+ An action like `crazy-max/ghaction-github-runtime` is recommended to
645
+ expose appropriate credentials to your GitHub workflow.
646
+ """
647
+ return pulumi.get(self, "gha")
648
+
649
+ @property
650
+ @pulumi.getter
651
+ def inline(self) -> Optional['outputs.CacheToInline']:
652
+ """
653
+ The inline cache storage backend is the simplest implementation to get
654
+ started with, but it does not handle multi-stage builds. Consider the
655
+ `registry` cache backend instead.
656
+ """
657
+ return pulumi.get(self, "inline")
658
+
659
+ @property
660
+ @pulumi.getter
661
+ def local(self) -> Optional['outputs.CacheToLocal']:
662
+ """
663
+ A simple backend which caches imagines on your local filesystem.
664
+ """
665
+ return pulumi.get(self, "local")
666
+
667
+ @property
668
+ @pulumi.getter
669
+ def raw(self) -> Optional[str]:
670
+ """
671
+ A raw string as you would provide it to the Docker CLI (e.g.,
672
+ `type=inline`)
673
+ """
674
+ return pulumi.get(self, "raw")
675
+
676
+ @property
677
+ @pulumi.getter
678
+ def registry(self) -> Optional['outputs.CacheToRegistry']:
679
+ """
680
+ Push caches to remote registries. Incompatible with the `docker` build
681
+ driver.
682
+ """
683
+ return pulumi.get(self, "registry")
684
+
685
+ @property
686
+ @pulumi.getter
687
+ def s3(self) -> Optional['outputs.CacheToS3']:
688
+ """
689
+ Push cache to AWS S3 or S3-compatible services such as MinIO.
690
+ """
691
+ return pulumi.get(self, "s3")
692
+
693
+
694
+ @pulumi.output_type
695
+ class CacheToAzureBlob(dict):
696
+ @staticmethod
697
+ def __key_warning(key: str):
698
+ suggest = None
699
+ if key == "accountUrl":
700
+ suggest = "account_url"
701
+ elif key == "ignoreError":
702
+ suggest = "ignore_error"
703
+ elif key == "secretAccessKey":
704
+ suggest = "secret_access_key"
705
+
706
+ if suggest:
707
+ pulumi.log.warn(f"Key '{key}' not found in CacheToAzureBlob. Access the value via the '{suggest}' property getter instead.")
708
+
709
+ def __getitem__(self, key: str) -> Any:
710
+ CacheToAzureBlob.__key_warning(key)
711
+ return super().__getitem__(key)
712
+
713
+ def get(self, key: str, default = None) -> Any:
714
+ CacheToAzureBlob.__key_warning(key)
715
+ return super().get(key, default)
716
+
717
+ def __init__(__self__, *,
718
+ name: str,
719
+ account_url: Optional[str] = None,
720
+ ignore_error: Optional[bool] = None,
721
+ mode: Optional['CacheMode'] = None,
722
+ secret_access_key: Optional[str] = None):
723
+ """
724
+ :param str name: The name of the cache image.
725
+ :param str account_url: Base URL of the storage account.
726
+ :param bool ignore_error: Ignore errors caused by failed cache exports.
727
+ :param 'CacheMode' mode: The cache mode to use. Defaults to `min`.
728
+ :param str secret_access_key: Blob storage account key.
729
+ """
730
+ pulumi.set(__self__, "name", name)
731
+ if account_url is not None:
732
+ pulumi.set(__self__, "account_url", account_url)
733
+ if ignore_error is None:
734
+ ignore_error = False
735
+ if ignore_error is not None:
736
+ pulumi.set(__self__, "ignore_error", ignore_error)
737
+ if mode is None:
738
+ mode = 'min'
739
+ if mode is not None:
740
+ pulumi.set(__self__, "mode", mode)
741
+ if secret_access_key is not None:
742
+ pulumi.set(__self__, "secret_access_key", secret_access_key)
743
+
744
+ @property
745
+ @pulumi.getter
746
+ def name(self) -> str:
747
+ """
748
+ The name of the cache image.
749
+ """
750
+ return pulumi.get(self, "name")
751
+
752
+ @property
753
+ @pulumi.getter(name="accountUrl")
754
+ def account_url(self) -> Optional[str]:
755
+ """
756
+ Base URL of the storage account.
757
+ """
758
+ return pulumi.get(self, "account_url")
759
+
760
+ @property
761
+ @pulumi.getter(name="ignoreError")
762
+ def ignore_error(self) -> Optional[bool]:
763
+ """
764
+ Ignore errors caused by failed cache exports.
765
+ """
766
+ return pulumi.get(self, "ignore_error")
767
+
768
+ @property
769
+ @pulumi.getter
770
+ def mode(self) -> Optional['CacheMode']:
771
+ """
772
+ The cache mode to use. Defaults to `min`.
773
+ """
774
+ return pulumi.get(self, "mode")
775
+
776
+ @property
777
+ @pulumi.getter(name="secretAccessKey")
778
+ def secret_access_key(self) -> Optional[str]:
779
+ """
780
+ Blob storage account key.
781
+ """
782
+ return pulumi.get(self, "secret_access_key")
783
+
784
+
785
+ @pulumi.output_type
786
+ class CacheToGitHubActions(dict):
787
+ @staticmethod
788
+ def __key_warning(key: str):
789
+ suggest = None
790
+ if key == "ignoreError":
791
+ suggest = "ignore_error"
792
+
793
+ if suggest:
794
+ pulumi.log.warn(f"Key '{key}' not found in CacheToGitHubActions. Access the value via the '{suggest}' property getter instead.")
795
+
796
+ def __getitem__(self, key: str) -> Any:
797
+ CacheToGitHubActions.__key_warning(key)
798
+ return super().__getitem__(key)
799
+
800
+ def get(self, key: str, default = None) -> Any:
801
+ CacheToGitHubActions.__key_warning(key)
802
+ return super().get(key, default)
803
+
804
+ def __init__(__self__, *,
805
+ ignore_error: Optional[bool] = None,
806
+ mode: Optional['CacheMode'] = None,
807
+ scope: Optional[str] = None,
808
+ token: Optional[str] = None,
809
+ url: Optional[str] = None):
810
+ """
811
+ :param bool ignore_error: Ignore errors caused by failed cache exports.
812
+ :param 'CacheMode' mode: The cache mode to use. Defaults to `min`.
813
+ :param str scope: The scope to use for cache keys. Defaults to `buildkit`.
814
+
815
+ This should be set if building and caching multiple images in one
816
+ workflow, otherwise caches will overwrite each other.
817
+ :param str token: The GitHub Actions token to use. This is not a personal access tokens
818
+ and is typically generated automatically as part of each job.
819
+
820
+ Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like
821
+ `crazy-max/ghaction-github-runtime` is recommended to expose this
822
+ environment variable to your jobs.
823
+ :param str url: The cache server URL to use for artifacts.
824
+
825
+ Defaults to `$ACTIONS_CACHE_URL`, although a separate action like
826
+ `crazy-max/ghaction-github-runtime` is recommended to expose this
827
+ environment variable to your jobs.
828
+ """
829
+ if ignore_error is None:
830
+ ignore_error = False
831
+ if ignore_error is not None:
832
+ pulumi.set(__self__, "ignore_error", ignore_error)
833
+ if mode is None:
834
+ mode = 'min'
835
+ if mode is not None:
836
+ pulumi.set(__self__, "mode", mode)
837
+ if scope is None:
838
+ scope = (_utilities.get_env('buildkit') or '')
839
+ if scope is not None:
840
+ pulumi.set(__self__, "scope", scope)
841
+ if token is None:
842
+ token = (_utilities.get_env('ACTIONS_RUNTIME_TOKEN') or '')
843
+ if token is not None:
844
+ pulumi.set(__self__, "token", token)
845
+ if url is None:
846
+ url = (_utilities.get_env('ACTIONS_CACHE_URL') or '')
847
+ if url is not None:
848
+ pulumi.set(__self__, "url", url)
849
+
850
+ @property
851
+ @pulumi.getter(name="ignoreError")
852
+ def ignore_error(self) -> Optional[bool]:
853
+ """
854
+ Ignore errors caused by failed cache exports.
855
+ """
856
+ return pulumi.get(self, "ignore_error")
857
+
858
+ @property
859
+ @pulumi.getter
860
+ def mode(self) -> Optional['CacheMode']:
861
+ """
862
+ The cache mode to use. Defaults to `min`.
863
+ """
864
+ return pulumi.get(self, "mode")
865
+
866
+ @property
867
+ @pulumi.getter
868
+ def scope(self) -> Optional[str]:
869
+ """
870
+ The scope to use for cache keys. Defaults to `buildkit`.
871
+
872
+ This should be set if building and caching multiple images in one
873
+ workflow, otherwise caches will overwrite each other.
874
+ """
875
+ return pulumi.get(self, "scope")
876
+
877
+ @property
878
+ @pulumi.getter
879
+ def token(self) -> Optional[str]:
880
+ """
881
+ The GitHub Actions token to use. This is not a personal access tokens
882
+ and is typically generated automatically as part of each job.
883
+
884
+ Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like
885
+ `crazy-max/ghaction-github-runtime` is recommended to expose this
886
+ environment variable to your jobs.
887
+ """
888
+ return pulumi.get(self, "token")
889
+
890
+ @property
891
+ @pulumi.getter
892
+ def url(self) -> Optional[str]:
893
+ """
894
+ The cache server URL to use for artifacts.
895
+
896
+ Defaults to `$ACTIONS_CACHE_URL`, although a separate action like
897
+ `crazy-max/ghaction-github-runtime` is recommended to expose this
898
+ environment variable to your jobs.
899
+ """
900
+ return pulumi.get(self, "url")
901
+
902
+
903
+ @pulumi.output_type
904
+ class CacheToInline(dict):
905
+ """
906
+ Include an inline cache with the exported image.
907
+ """
908
+ def __init__(__self__):
909
+ """
910
+ Include an inline cache with the exported image.
911
+ """
912
+ pass
913
+
914
+
915
+ @pulumi.output_type
916
+ class CacheToLocal(dict):
917
+ @staticmethod
918
+ def __key_warning(key: str):
919
+ suggest = None
920
+ if key == "compressionLevel":
921
+ suggest = "compression_level"
922
+ elif key == "forceCompression":
923
+ suggest = "force_compression"
924
+ elif key == "ignoreError":
925
+ suggest = "ignore_error"
926
+
927
+ if suggest:
928
+ pulumi.log.warn(f"Key '{key}' not found in CacheToLocal. Access the value via the '{suggest}' property getter instead.")
929
+
930
+ def __getitem__(self, key: str) -> Any:
931
+ CacheToLocal.__key_warning(key)
932
+ return super().__getitem__(key)
933
+
934
+ def get(self, key: str, default = None) -> Any:
935
+ CacheToLocal.__key_warning(key)
936
+ return super().get(key, default)
937
+
938
+ def __init__(__self__, *,
939
+ dest: str,
940
+ compression: Optional['CompressionType'] = None,
941
+ compression_level: Optional[int] = None,
942
+ force_compression: Optional[bool] = None,
943
+ ignore_error: Optional[bool] = None,
944
+ mode: Optional['CacheMode'] = None):
945
+ """
946
+ :param str dest: Path of the local directory to export the cache.
947
+ :param 'CompressionType' compression: The compression type to use.
948
+ :param int compression_level: Compression level from 0 to 22.
949
+ :param bool force_compression: Forcefully apply compression.
950
+ :param bool ignore_error: Ignore errors caused by failed cache exports.
951
+ :param 'CacheMode' mode: The cache mode to use. Defaults to `min`.
952
+ """
953
+ pulumi.set(__self__, "dest", dest)
954
+ if compression is None:
955
+ compression = 'gzip'
956
+ if compression is not None:
957
+ pulumi.set(__self__, "compression", compression)
958
+ if compression_level is None:
959
+ compression_level = 0
960
+ if compression_level is not None:
961
+ pulumi.set(__self__, "compression_level", compression_level)
962
+ if force_compression is None:
963
+ force_compression = False
964
+ if force_compression is not None:
965
+ pulumi.set(__self__, "force_compression", force_compression)
966
+ if ignore_error is None:
967
+ ignore_error = False
968
+ if ignore_error is not None:
969
+ pulumi.set(__self__, "ignore_error", ignore_error)
970
+ if mode is None:
971
+ mode = 'min'
972
+ if mode is not None:
973
+ pulumi.set(__self__, "mode", mode)
974
+
975
+ @property
976
+ @pulumi.getter
977
+ def dest(self) -> str:
978
+ """
979
+ Path of the local directory to export the cache.
980
+ """
981
+ return pulumi.get(self, "dest")
982
+
983
+ @property
984
+ @pulumi.getter
985
+ def compression(self) -> Optional['CompressionType']:
986
+ """
987
+ The compression type to use.
988
+ """
989
+ return pulumi.get(self, "compression")
990
+
991
+ @property
992
+ @pulumi.getter(name="compressionLevel")
993
+ def compression_level(self) -> Optional[int]:
994
+ """
995
+ Compression level from 0 to 22.
996
+ """
997
+ return pulumi.get(self, "compression_level")
998
+
999
+ @property
1000
+ @pulumi.getter(name="forceCompression")
1001
+ def force_compression(self) -> Optional[bool]:
1002
+ """
1003
+ Forcefully apply compression.
1004
+ """
1005
+ return pulumi.get(self, "force_compression")
1006
+
1007
+ @property
1008
+ @pulumi.getter(name="ignoreError")
1009
+ def ignore_error(self) -> Optional[bool]:
1010
+ """
1011
+ Ignore errors caused by failed cache exports.
1012
+ """
1013
+ return pulumi.get(self, "ignore_error")
1014
+
1015
+ @property
1016
+ @pulumi.getter
1017
+ def mode(self) -> Optional['CacheMode']:
1018
+ """
1019
+ The cache mode to use. Defaults to `min`.
1020
+ """
1021
+ return pulumi.get(self, "mode")
1022
+
1023
+
1024
+ @pulumi.output_type
1025
+ class CacheToRegistry(dict):
1026
+ @staticmethod
1027
+ def __key_warning(key: str):
1028
+ suggest = None
1029
+ if key == "compressionLevel":
1030
+ suggest = "compression_level"
1031
+ elif key == "forceCompression":
1032
+ suggest = "force_compression"
1033
+ elif key == "ignoreError":
1034
+ suggest = "ignore_error"
1035
+ elif key == "imageManifest":
1036
+ suggest = "image_manifest"
1037
+ elif key == "ociMediaTypes":
1038
+ suggest = "oci_media_types"
1039
+
1040
+ if suggest:
1041
+ pulumi.log.warn(f"Key '{key}' not found in CacheToRegistry. Access the value via the '{suggest}' property getter instead.")
1042
+
1043
+ def __getitem__(self, key: str) -> Any:
1044
+ CacheToRegistry.__key_warning(key)
1045
+ return super().__getitem__(key)
1046
+
1047
+ def get(self, key: str, default = None) -> Any:
1048
+ CacheToRegistry.__key_warning(key)
1049
+ return super().get(key, default)
1050
+
1051
+ def __init__(__self__, *,
1052
+ ref: str,
1053
+ compression: Optional['CompressionType'] = None,
1054
+ compression_level: Optional[int] = None,
1055
+ force_compression: Optional[bool] = None,
1056
+ ignore_error: Optional[bool] = None,
1057
+ image_manifest: Optional[bool] = None,
1058
+ mode: Optional['CacheMode'] = None,
1059
+ oci_media_types: Optional[bool] = None):
1060
+ """
1061
+ :param str ref: Fully qualified name of the cache image to import.
1062
+ :param 'CompressionType' compression: The compression type to use.
1063
+ :param int compression_level: Compression level from 0 to 22.
1064
+ :param bool force_compression: Forcefully apply compression.
1065
+ :param bool ignore_error: Ignore errors caused by failed cache exports.
1066
+ :param bool image_manifest: Export cache manifest as an OCI-compatible image manifest instead of a
1067
+ manifest list. Requires `ociMediaTypes` to also be `true`.
1068
+
1069
+ Some registries like AWS ECR will not work with caching if this is
1070
+ `false`.
1071
+
1072
+ Defaults to `false` to match Docker's default behavior.
1073
+ :param 'CacheMode' mode: The cache mode to use. Defaults to `min`.
1074
+ :param bool oci_media_types: Whether to use OCI media types in exported manifests. Defaults to
1075
+ `true`.
1076
+ """
1077
+ pulumi.set(__self__, "ref", ref)
1078
+ if compression is None:
1079
+ compression = 'gzip'
1080
+ if compression is not None:
1081
+ pulumi.set(__self__, "compression", compression)
1082
+ if compression_level is None:
1083
+ compression_level = 0
1084
+ if compression_level is not None:
1085
+ pulumi.set(__self__, "compression_level", compression_level)
1086
+ if force_compression is None:
1087
+ force_compression = False
1088
+ if force_compression is not None:
1089
+ pulumi.set(__self__, "force_compression", force_compression)
1090
+ if ignore_error is None:
1091
+ ignore_error = False
1092
+ if ignore_error is not None:
1093
+ pulumi.set(__self__, "ignore_error", ignore_error)
1094
+ if image_manifest is None:
1095
+ image_manifest = False
1096
+ if image_manifest is not None:
1097
+ pulumi.set(__self__, "image_manifest", image_manifest)
1098
+ if mode is None:
1099
+ mode = 'min'
1100
+ if mode is not None:
1101
+ pulumi.set(__self__, "mode", mode)
1102
+ if oci_media_types is None:
1103
+ oci_media_types = True
1104
+ if oci_media_types is not None:
1105
+ pulumi.set(__self__, "oci_media_types", oci_media_types)
1106
+
1107
+ @property
1108
+ @pulumi.getter
1109
+ def ref(self) -> str:
1110
+ """
1111
+ Fully qualified name of the cache image to import.
1112
+ """
1113
+ return pulumi.get(self, "ref")
1114
+
1115
+ @property
1116
+ @pulumi.getter
1117
+ def compression(self) -> Optional['CompressionType']:
1118
+ """
1119
+ The compression type to use.
1120
+ """
1121
+ return pulumi.get(self, "compression")
1122
+
1123
+ @property
1124
+ @pulumi.getter(name="compressionLevel")
1125
+ def compression_level(self) -> Optional[int]:
1126
+ """
1127
+ Compression level from 0 to 22.
1128
+ """
1129
+ return pulumi.get(self, "compression_level")
1130
+
1131
+ @property
1132
+ @pulumi.getter(name="forceCompression")
1133
+ def force_compression(self) -> Optional[bool]:
1134
+ """
1135
+ Forcefully apply compression.
1136
+ """
1137
+ return pulumi.get(self, "force_compression")
1138
+
1139
+ @property
1140
+ @pulumi.getter(name="ignoreError")
1141
+ def ignore_error(self) -> Optional[bool]:
1142
+ """
1143
+ Ignore errors caused by failed cache exports.
1144
+ """
1145
+ return pulumi.get(self, "ignore_error")
1146
+
1147
+ @property
1148
+ @pulumi.getter(name="imageManifest")
1149
+ def image_manifest(self) -> Optional[bool]:
1150
+ """
1151
+ Export cache manifest as an OCI-compatible image manifest instead of a
1152
+ manifest list. Requires `ociMediaTypes` to also be `true`.
1153
+
1154
+ Some registries like AWS ECR will not work with caching if this is
1155
+ `false`.
1156
+
1157
+ Defaults to `false` to match Docker's default behavior.
1158
+ """
1159
+ return pulumi.get(self, "image_manifest")
1160
+
1161
+ @property
1162
+ @pulumi.getter
1163
+ def mode(self) -> Optional['CacheMode']:
1164
+ """
1165
+ The cache mode to use. Defaults to `min`.
1166
+ """
1167
+ return pulumi.get(self, "mode")
1168
+
1169
+ @property
1170
+ @pulumi.getter(name="ociMediaTypes")
1171
+ def oci_media_types(self) -> Optional[bool]:
1172
+ """
1173
+ Whether to use OCI media types in exported manifests. Defaults to
1174
+ `true`.
1175
+ """
1176
+ return pulumi.get(self, "oci_media_types")
1177
+
1178
+
1179
+ @pulumi.output_type
1180
+ class CacheToS3(dict):
1181
+ @staticmethod
1182
+ def __key_warning(key: str):
1183
+ suggest = None
1184
+ if key == "accessKeyId":
1185
+ suggest = "access_key_id"
1186
+ elif key == "blobsPrefix":
1187
+ suggest = "blobs_prefix"
1188
+ elif key == "endpointUrl":
1189
+ suggest = "endpoint_url"
1190
+ elif key == "ignoreError":
1191
+ suggest = "ignore_error"
1192
+ elif key == "manifestsPrefix":
1193
+ suggest = "manifests_prefix"
1194
+ elif key == "secretAccessKey":
1195
+ suggest = "secret_access_key"
1196
+ elif key == "sessionToken":
1197
+ suggest = "session_token"
1198
+ elif key == "usePathStyle":
1199
+ suggest = "use_path_style"
1200
+
1201
+ if suggest:
1202
+ pulumi.log.warn(f"Key '{key}' not found in CacheToS3. Access the value via the '{suggest}' property getter instead.")
1203
+
1204
+ def __getitem__(self, key: str) -> Any:
1205
+ CacheToS3.__key_warning(key)
1206
+ return super().__getitem__(key)
1207
+
1208
+ def get(self, key: str, default = None) -> Any:
1209
+ CacheToS3.__key_warning(key)
1210
+ return super().get(key, default)
1211
+
1212
+ def __init__(__self__, *,
1213
+ bucket: str,
1214
+ region: Optional[str] = None,
1215
+ access_key_id: Optional[str] = None,
1216
+ blobs_prefix: Optional[str] = None,
1217
+ endpoint_url: Optional[str] = None,
1218
+ ignore_error: Optional[bool] = None,
1219
+ manifests_prefix: Optional[str] = None,
1220
+ mode: Optional['CacheMode'] = None,
1221
+ name: Optional[str] = None,
1222
+ secret_access_key: Optional[str] = None,
1223
+ session_token: Optional[str] = None,
1224
+ use_path_style: Optional[bool] = None):
1225
+ """
1226
+ :param str bucket: Name of the S3 bucket.
1227
+ :param str region: The geographic location of the bucket. Defaults to `$AWS_REGION`.
1228
+ :param str access_key_id: Defaults to `$AWS_ACCESS_KEY_ID`.
1229
+ :param str blobs_prefix: Prefix to prepend to blob filenames.
1230
+ :param str endpoint_url: Endpoint of the S3 bucket.
1231
+ :param bool ignore_error: Ignore errors caused by failed cache exports.
1232
+ :param str manifests_prefix: Prefix to prepend on manifest filenames.
1233
+ :param 'CacheMode' mode: The cache mode to use. Defaults to `min`.
1234
+ :param str name: Name of the cache image.
1235
+ :param str secret_access_key: Defaults to `$AWS_SECRET_ACCESS_KEY`.
1236
+ :param str session_token: Defaults to `$AWS_SESSION_TOKEN`.
1237
+ :param bool use_path_style: Uses `bucket` in the URL instead of hostname when `true`.
1238
+ """
1239
+ pulumi.set(__self__, "bucket", bucket)
1240
+ if region is None:
1241
+ region = (_utilities.get_env('AWS_REGION') or '')
1242
+ pulumi.set(__self__, "region", region)
1243
+ if access_key_id is None:
1244
+ access_key_id = (_utilities.get_env('AWS_ACCESS_KEY_ID') or '')
1245
+ if access_key_id is not None:
1246
+ pulumi.set(__self__, "access_key_id", access_key_id)
1247
+ if blobs_prefix is not None:
1248
+ pulumi.set(__self__, "blobs_prefix", blobs_prefix)
1249
+ if endpoint_url is not None:
1250
+ pulumi.set(__self__, "endpoint_url", endpoint_url)
1251
+ if ignore_error is None:
1252
+ ignore_error = False
1253
+ if ignore_error is not None:
1254
+ pulumi.set(__self__, "ignore_error", ignore_error)
1255
+ if manifests_prefix is not None:
1256
+ pulumi.set(__self__, "manifests_prefix", manifests_prefix)
1257
+ if mode is None:
1258
+ mode = 'min'
1259
+ if mode is not None:
1260
+ pulumi.set(__self__, "mode", mode)
1261
+ if name is not None:
1262
+ pulumi.set(__self__, "name", name)
1263
+ if secret_access_key is None:
1264
+ secret_access_key = (_utilities.get_env('AWS_SECRET_ACCESS_KEY') or '')
1265
+ if secret_access_key is not None:
1266
+ pulumi.set(__self__, "secret_access_key", secret_access_key)
1267
+ if session_token is None:
1268
+ session_token = (_utilities.get_env('AWS_SESSION_TOKEN') or '')
1269
+ if session_token is not None:
1270
+ pulumi.set(__self__, "session_token", session_token)
1271
+ if use_path_style is not None:
1272
+ pulumi.set(__self__, "use_path_style", use_path_style)
1273
+
1274
+ @property
1275
+ @pulumi.getter
1276
+ def bucket(self) -> str:
1277
+ """
1278
+ Name of the S3 bucket.
1279
+ """
1280
+ return pulumi.get(self, "bucket")
1281
+
1282
+ @property
1283
+ @pulumi.getter
1284
+ def region(self) -> str:
1285
+ """
1286
+ The geographic location of the bucket. Defaults to `$AWS_REGION`.
1287
+ """
1288
+ return pulumi.get(self, "region")
1289
+
1290
+ @property
1291
+ @pulumi.getter(name="accessKeyId")
1292
+ def access_key_id(self) -> Optional[str]:
1293
+ """
1294
+ Defaults to `$AWS_ACCESS_KEY_ID`.
1295
+ """
1296
+ return pulumi.get(self, "access_key_id")
1297
+
1298
+ @property
1299
+ @pulumi.getter(name="blobsPrefix")
1300
+ def blobs_prefix(self) -> Optional[str]:
1301
+ """
1302
+ Prefix to prepend to blob filenames.
1303
+ """
1304
+ return pulumi.get(self, "blobs_prefix")
1305
+
1306
+ @property
1307
+ @pulumi.getter(name="endpointUrl")
1308
+ def endpoint_url(self) -> Optional[str]:
1309
+ """
1310
+ Endpoint of the S3 bucket.
1311
+ """
1312
+ return pulumi.get(self, "endpoint_url")
1313
+
1314
+ @property
1315
+ @pulumi.getter(name="ignoreError")
1316
+ def ignore_error(self) -> Optional[bool]:
1317
+ """
1318
+ Ignore errors caused by failed cache exports.
1319
+ """
1320
+ return pulumi.get(self, "ignore_error")
1321
+
1322
+ @property
1323
+ @pulumi.getter(name="manifestsPrefix")
1324
+ def manifests_prefix(self) -> Optional[str]:
1325
+ """
1326
+ Prefix to prepend on manifest filenames.
1327
+ """
1328
+ return pulumi.get(self, "manifests_prefix")
1329
+
1330
+ @property
1331
+ @pulumi.getter
1332
+ def mode(self) -> Optional['CacheMode']:
1333
+ """
1334
+ The cache mode to use. Defaults to `min`.
1335
+ """
1336
+ return pulumi.get(self, "mode")
1337
+
1338
+ @property
1339
+ @pulumi.getter
1340
+ def name(self) -> Optional[str]:
1341
+ """
1342
+ Name of the cache image.
1343
+ """
1344
+ return pulumi.get(self, "name")
1345
+
1346
+ @property
1347
+ @pulumi.getter(name="secretAccessKey")
1348
+ def secret_access_key(self) -> Optional[str]:
1349
+ """
1350
+ Defaults to `$AWS_SECRET_ACCESS_KEY`.
1351
+ """
1352
+ return pulumi.get(self, "secret_access_key")
1353
+
1354
+ @property
1355
+ @pulumi.getter(name="sessionToken")
1356
+ def session_token(self) -> Optional[str]:
1357
+ """
1358
+ Defaults to `$AWS_SESSION_TOKEN`.
1359
+ """
1360
+ return pulumi.get(self, "session_token")
1361
+
1362
+ @property
1363
+ @pulumi.getter(name="usePathStyle")
1364
+ def use_path_style(self) -> Optional[bool]:
1365
+ """
1366
+ Uses `bucket` in the URL instead of hostname when `true`.
1367
+ """
1368
+ return pulumi.get(self, "use_path_style")
1369
+
1370
+
1371
+ @pulumi.output_type
1372
+ class Context(dict):
1373
+ def __init__(__self__, *,
1374
+ location: str):
1375
+ """
1376
+ :param str location: Resources to use for build context.
1377
+
1378
+ The location can be:
1379
+ * A relative or absolute path to a local directory (`.`, `./app`,
1380
+ `/app`, etc.).
1381
+ * A remote URL of a Git repository, tarball, or plain text file
1382
+ (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`,
1383
+ etc.).
1384
+ """
1385
+ pulumi.set(__self__, "location", location)
1386
+
1387
+ @property
1388
+ @pulumi.getter
1389
+ def location(self) -> str:
1390
+ """
1391
+ Resources to use for build context.
1392
+
1393
+ The location can be:
1394
+ * A relative or absolute path to a local directory (`.`, `./app`,
1395
+ `/app`, etc.).
1396
+ * A remote URL of a Git repository, tarball, or plain text file
1397
+ (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`,
1398
+ etc.).
1399
+ """
1400
+ return pulumi.get(self, "location")
1401
+
1402
+
1403
+ @pulumi.output_type
1404
+ class Dockerfile(dict):
1405
+ def __init__(__self__, *,
1406
+ inline: Optional[str] = None,
1407
+ location: Optional[str] = None):
1408
+ """
1409
+ :param str inline: Raw Dockerfile contents.
1410
+
1411
+ Conflicts with `location`.
1412
+
1413
+ Equivalent to invoking Docker with `-f -`.
1414
+ :param str location: Location of the Dockerfile to use.
1415
+
1416
+ Can be a relative or absolute path to a local file, or a remote URL.
1417
+
1418
+ Defaults to `${context.location}/Dockerfile` if context is on-disk.
1419
+
1420
+ Conflicts with `inline`.
1421
+ """
1422
+ if inline is not None:
1423
+ pulumi.set(__self__, "inline", inline)
1424
+ if location is not None:
1425
+ pulumi.set(__self__, "location", location)
1426
+
1427
+ @property
1428
+ @pulumi.getter
1429
+ def inline(self) -> Optional[str]:
1430
+ """
1431
+ Raw Dockerfile contents.
1432
+
1433
+ Conflicts with `location`.
1434
+
1435
+ Equivalent to invoking Docker with `-f -`.
1436
+ """
1437
+ return pulumi.get(self, "inline")
1438
+
1439
+ @property
1440
+ @pulumi.getter
1441
+ def location(self) -> Optional[str]:
1442
+ """
1443
+ Location of the Dockerfile to use.
1444
+
1445
+ Can be a relative or absolute path to a local file, or a remote URL.
1446
+
1447
+ Defaults to `${context.location}/Dockerfile` if context is on-disk.
1448
+
1449
+ Conflicts with `inline`.
1450
+ """
1451
+ return pulumi.get(self, "location")
1452
+
1453
+
1454
+ @pulumi.output_type
1455
+ class Export(dict):
1456
+ def __init__(__self__, *,
1457
+ cacheonly: Optional['outputs.ExportCacheOnly'] = None,
1458
+ disabled: Optional[bool] = None,
1459
+ docker: Optional['outputs.ExportDocker'] = None,
1460
+ image: Optional['outputs.ExportImage'] = None,
1461
+ local: Optional['outputs.ExportLocal'] = None,
1462
+ oci: Optional['outputs.ExportOCI'] = None,
1463
+ raw: Optional[str] = None,
1464
+ registry: Optional['outputs.ExportRegistry'] = None,
1465
+ tar: Optional['outputs.ExportTar'] = None):
1466
+ """
1467
+ :param 'ExportCacheOnly' cacheonly: A no-op export. Helpful for silencing the 'no exports' warning if you
1468
+ just want to populate caches.
1469
+ :param bool disabled: When `true` this entry will be excluded. Defaults to `false`.
1470
+ :param 'ExportDocker' docker: Export as a Docker image layout.
1471
+ :param 'ExportImage' image: Outputs the build result into a container image format.
1472
+ :param 'ExportLocal' local: Export to a local directory as files and directories.
1473
+ :param 'ExportOCI' oci: Identical to the Docker exporter but uses OCI media types by default.
1474
+ :param str raw: A raw string as you would provide it to the Docker CLI (e.g.,
1475
+ `type=docker`)
1476
+ :param 'ExportRegistry' registry: Identical to the Image exporter, but pushes by default.
1477
+ :param 'ExportTar' tar: Export to a local directory as a tarball.
1478
+ """
1479
+ if cacheonly is not None:
1480
+ pulumi.set(__self__, "cacheonly", cacheonly)
1481
+ if disabled is not None:
1482
+ pulumi.set(__self__, "disabled", disabled)
1483
+ if docker is not None:
1484
+ pulumi.set(__self__, "docker", docker)
1485
+ if image is not None:
1486
+ pulumi.set(__self__, "image", image)
1487
+ if local is not None:
1488
+ pulumi.set(__self__, "local", local)
1489
+ if oci is not None:
1490
+ pulumi.set(__self__, "oci", oci)
1491
+ if raw is not None:
1492
+ pulumi.set(__self__, "raw", raw)
1493
+ if registry is not None:
1494
+ pulumi.set(__self__, "registry", registry)
1495
+ if tar is not None:
1496
+ pulumi.set(__self__, "tar", tar)
1497
+
1498
+ @property
1499
+ @pulumi.getter
1500
+ def cacheonly(self) -> Optional['outputs.ExportCacheOnly']:
1501
+ """
1502
+ A no-op export. Helpful for silencing the 'no exports' warning if you
1503
+ just want to populate caches.
1504
+ """
1505
+ return pulumi.get(self, "cacheonly")
1506
+
1507
+ @property
1508
+ @pulumi.getter
1509
+ def disabled(self) -> Optional[bool]:
1510
+ """
1511
+ When `true` this entry will be excluded. Defaults to `false`.
1512
+ """
1513
+ return pulumi.get(self, "disabled")
1514
+
1515
+ @property
1516
+ @pulumi.getter
1517
+ def docker(self) -> Optional['outputs.ExportDocker']:
1518
+ """
1519
+ Export as a Docker image layout.
1520
+ """
1521
+ return pulumi.get(self, "docker")
1522
+
1523
+ @property
1524
+ @pulumi.getter
1525
+ def image(self) -> Optional['outputs.ExportImage']:
1526
+ """
1527
+ Outputs the build result into a container image format.
1528
+ """
1529
+ return pulumi.get(self, "image")
1530
+
1531
+ @property
1532
+ @pulumi.getter
1533
+ def local(self) -> Optional['outputs.ExportLocal']:
1534
+ """
1535
+ Export to a local directory as files and directories.
1536
+ """
1537
+ return pulumi.get(self, "local")
1538
+
1539
+ @property
1540
+ @pulumi.getter
1541
+ def oci(self) -> Optional['outputs.ExportOCI']:
1542
+ """
1543
+ Identical to the Docker exporter but uses OCI media types by default.
1544
+ """
1545
+ return pulumi.get(self, "oci")
1546
+
1547
+ @property
1548
+ @pulumi.getter
1549
+ def raw(self) -> Optional[str]:
1550
+ """
1551
+ A raw string as you would provide it to the Docker CLI (e.g.,
1552
+ `type=docker`)
1553
+ """
1554
+ return pulumi.get(self, "raw")
1555
+
1556
+ @property
1557
+ @pulumi.getter
1558
+ def registry(self) -> Optional['outputs.ExportRegistry']:
1559
+ """
1560
+ Identical to the Image exporter, but pushes by default.
1561
+ """
1562
+ return pulumi.get(self, "registry")
1563
+
1564
+ @property
1565
+ @pulumi.getter
1566
+ def tar(self) -> Optional['outputs.ExportTar']:
1567
+ """
1568
+ Export to a local directory as a tarball.
1569
+ """
1570
+ return pulumi.get(self, "tar")
1571
+
1572
+
1573
+ @pulumi.output_type
1574
+ class ExportCacheOnly(dict):
1575
+ def __init__(__self__):
1576
+ pass
1577
+
1578
+
1579
+ @pulumi.output_type
1580
+ class ExportDocker(dict):
1581
+ @staticmethod
1582
+ def __key_warning(key: str):
1583
+ suggest = None
1584
+ if key == "compressionLevel":
1585
+ suggest = "compression_level"
1586
+ elif key == "forceCompression":
1587
+ suggest = "force_compression"
1588
+ elif key == "ociMediaTypes":
1589
+ suggest = "oci_media_types"
1590
+
1591
+ if suggest:
1592
+ pulumi.log.warn(f"Key '{key}' not found in ExportDocker. Access the value via the '{suggest}' property getter instead.")
1593
+
1594
+ def __getitem__(self, key: str) -> Any:
1595
+ ExportDocker.__key_warning(key)
1596
+ return super().__getitem__(key)
1597
+
1598
+ def get(self, key: str, default = None) -> Any:
1599
+ ExportDocker.__key_warning(key)
1600
+ return super().get(key, default)
1601
+
1602
+ def __init__(__self__, *,
1603
+ annotations: Optional[Mapping[str, str]] = None,
1604
+ compression: Optional['CompressionType'] = None,
1605
+ compression_level: Optional[int] = None,
1606
+ dest: Optional[str] = None,
1607
+ force_compression: Optional[bool] = None,
1608
+ names: Optional[Sequence[str]] = None,
1609
+ oci_media_types: Optional[bool] = None,
1610
+ tar: Optional[bool] = None):
1611
+ """
1612
+ :param Mapping[str, str] annotations: Attach an arbitrary key/value annotation to the image.
1613
+ :param 'CompressionType' compression: The compression type to use.
1614
+ :param int compression_level: Compression level from 0 to 22.
1615
+ :param str dest: The local export path.
1616
+ :param bool force_compression: Forcefully apply compression.
1617
+ :param Sequence[str] names: Specify images names to export. This is overridden if tags are already specified.
1618
+ :param bool oci_media_types: Use OCI media types in exporter manifests.
1619
+ :param bool tar: Bundle the output into a tarball layout.
1620
+ """
1621
+ if annotations is not None:
1622
+ pulumi.set(__self__, "annotations", annotations)
1623
+ if compression is None:
1624
+ compression = 'gzip'
1625
+ if compression is not None:
1626
+ pulumi.set(__self__, "compression", compression)
1627
+ if compression_level is None:
1628
+ compression_level = 0
1629
+ if compression_level is not None:
1630
+ pulumi.set(__self__, "compression_level", compression_level)
1631
+ if dest is not None:
1632
+ pulumi.set(__self__, "dest", dest)
1633
+ if force_compression is None:
1634
+ force_compression = False
1635
+ if force_compression is not None:
1636
+ pulumi.set(__self__, "force_compression", force_compression)
1637
+ if names is not None:
1638
+ pulumi.set(__self__, "names", names)
1639
+ if oci_media_types is None:
1640
+ oci_media_types = False
1641
+ if oci_media_types is not None:
1642
+ pulumi.set(__self__, "oci_media_types", oci_media_types)
1643
+ if tar is None:
1644
+ tar = True
1645
+ if tar is not None:
1646
+ pulumi.set(__self__, "tar", tar)
1647
+
1648
+ @property
1649
+ @pulumi.getter
1650
+ def annotations(self) -> Optional[Mapping[str, str]]:
1651
+ """
1652
+ Attach an arbitrary key/value annotation to the image.
1653
+ """
1654
+ return pulumi.get(self, "annotations")
1655
+
1656
+ @property
1657
+ @pulumi.getter
1658
+ def compression(self) -> Optional['CompressionType']:
1659
+ """
1660
+ The compression type to use.
1661
+ """
1662
+ return pulumi.get(self, "compression")
1663
+
1664
+ @property
1665
+ @pulumi.getter(name="compressionLevel")
1666
+ def compression_level(self) -> Optional[int]:
1667
+ """
1668
+ Compression level from 0 to 22.
1669
+ """
1670
+ return pulumi.get(self, "compression_level")
1671
+
1672
+ @property
1673
+ @pulumi.getter
1674
+ def dest(self) -> Optional[str]:
1675
+ """
1676
+ The local export path.
1677
+ """
1678
+ return pulumi.get(self, "dest")
1679
+
1680
+ @property
1681
+ @pulumi.getter(name="forceCompression")
1682
+ def force_compression(self) -> Optional[bool]:
1683
+ """
1684
+ Forcefully apply compression.
1685
+ """
1686
+ return pulumi.get(self, "force_compression")
1687
+
1688
+ @property
1689
+ @pulumi.getter
1690
+ def names(self) -> Optional[Sequence[str]]:
1691
+ """
1692
+ Specify images names to export. This is overridden if tags are already specified.
1693
+ """
1694
+ return pulumi.get(self, "names")
1695
+
1696
+ @property
1697
+ @pulumi.getter(name="ociMediaTypes")
1698
+ def oci_media_types(self) -> Optional[bool]:
1699
+ """
1700
+ Use OCI media types in exporter manifests.
1701
+ """
1702
+ return pulumi.get(self, "oci_media_types")
1703
+
1704
+ @property
1705
+ @pulumi.getter
1706
+ def tar(self) -> Optional[bool]:
1707
+ """
1708
+ Bundle the output into a tarball layout.
1709
+ """
1710
+ return pulumi.get(self, "tar")
1711
+
1712
+
1713
+ @pulumi.output_type
1714
+ class ExportImage(dict):
1715
+ @staticmethod
1716
+ def __key_warning(key: str):
1717
+ suggest = None
1718
+ if key == "compressionLevel":
1719
+ suggest = "compression_level"
1720
+ elif key == "danglingNamePrefix":
1721
+ suggest = "dangling_name_prefix"
1722
+ elif key == "forceCompression":
1723
+ suggest = "force_compression"
1724
+ elif key == "nameCanonical":
1725
+ suggest = "name_canonical"
1726
+ elif key == "ociMediaTypes":
1727
+ suggest = "oci_media_types"
1728
+ elif key == "pushByDigest":
1729
+ suggest = "push_by_digest"
1730
+
1731
+ if suggest:
1732
+ pulumi.log.warn(f"Key '{key}' not found in ExportImage. Access the value via the '{suggest}' property getter instead.")
1733
+
1734
+ def __getitem__(self, key: str) -> Any:
1735
+ ExportImage.__key_warning(key)
1736
+ return super().__getitem__(key)
1737
+
1738
+ def get(self, key: str, default = None) -> Any:
1739
+ ExportImage.__key_warning(key)
1740
+ return super().get(key, default)
1741
+
1742
+ def __init__(__self__, *,
1743
+ annotations: Optional[Mapping[str, str]] = None,
1744
+ compression: Optional['CompressionType'] = None,
1745
+ compression_level: Optional[int] = None,
1746
+ dangling_name_prefix: Optional[str] = None,
1747
+ force_compression: Optional[bool] = None,
1748
+ insecure: Optional[bool] = None,
1749
+ name_canonical: Optional[bool] = None,
1750
+ names: Optional[Sequence[str]] = None,
1751
+ oci_media_types: Optional[bool] = None,
1752
+ push: Optional[bool] = None,
1753
+ push_by_digest: Optional[bool] = None,
1754
+ store: Optional[bool] = None,
1755
+ unpack: Optional[bool] = None):
1756
+ """
1757
+ :param Mapping[str, str] annotations: Attach an arbitrary key/value annotation to the image.
1758
+ :param 'CompressionType' compression: The compression type to use.
1759
+ :param int compression_level: Compression level from 0 to 22.
1760
+ :param str dangling_name_prefix: Name image with `prefix@<digest>`, used for anonymous images.
1761
+ :param bool force_compression: Forcefully apply compression.
1762
+ :param bool insecure: Allow pushing to an insecure registry.
1763
+ :param bool name_canonical: Add additional canonical name (`name@<digest>`).
1764
+ :param Sequence[str] names: Specify images names to export. This is overridden if tags are already specified.
1765
+ :param bool oci_media_types: Use OCI media types in exporter manifests.
1766
+ :param bool push: Push after creating the image. Defaults to `false`.
1767
+ :param bool push_by_digest: Push image without name.
1768
+ :param bool store: Store resulting images to the worker's image store and ensure all of
1769
+ its blobs are in the content store.
1770
+
1771
+ Defaults to `true`.
1772
+
1773
+ Ignored if the worker doesn't have image store (when using OCI workers,
1774
+ for example).
1775
+ :param bool unpack: Unpack image after creation (for use with containerd). Defaults to
1776
+ `false`.
1777
+ """
1778
+ if annotations is not None:
1779
+ pulumi.set(__self__, "annotations", annotations)
1780
+ if compression is None:
1781
+ compression = 'gzip'
1782
+ if compression is not None:
1783
+ pulumi.set(__self__, "compression", compression)
1784
+ if compression_level is None:
1785
+ compression_level = 0
1786
+ if compression_level is not None:
1787
+ pulumi.set(__self__, "compression_level", compression_level)
1788
+ if dangling_name_prefix is not None:
1789
+ pulumi.set(__self__, "dangling_name_prefix", dangling_name_prefix)
1790
+ if force_compression is None:
1791
+ force_compression = False
1792
+ if force_compression is not None:
1793
+ pulumi.set(__self__, "force_compression", force_compression)
1794
+ if insecure is not None:
1795
+ pulumi.set(__self__, "insecure", insecure)
1796
+ if name_canonical is not None:
1797
+ pulumi.set(__self__, "name_canonical", name_canonical)
1798
+ if names is not None:
1799
+ pulumi.set(__self__, "names", names)
1800
+ if oci_media_types is None:
1801
+ oci_media_types = False
1802
+ if oci_media_types is not None:
1803
+ pulumi.set(__self__, "oci_media_types", oci_media_types)
1804
+ if push is not None:
1805
+ pulumi.set(__self__, "push", push)
1806
+ if push_by_digest is not None:
1807
+ pulumi.set(__self__, "push_by_digest", push_by_digest)
1808
+ if store is None:
1809
+ store = True
1810
+ if store is not None:
1811
+ pulumi.set(__self__, "store", store)
1812
+ if unpack is not None:
1813
+ pulumi.set(__self__, "unpack", unpack)
1814
+
1815
+ @property
1816
+ @pulumi.getter
1817
+ def annotations(self) -> Optional[Mapping[str, str]]:
1818
+ """
1819
+ Attach an arbitrary key/value annotation to the image.
1820
+ """
1821
+ return pulumi.get(self, "annotations")
1822
+
1823
+ @property
1824
+ @pulumi.getter
1825
+ def compression(self) -> Optional['CompressionType']:
1826
+ """
1827
+ The compression type to use.
1828
+ """
1829
+ return pulumi.get(self, "compression")
1830
+
1831
+ @property
1832
+ @pulumi.getter(name="compressionLevel")
1833
+ def compression_level(self) -> Optional[int]:
1834
+ """
1835
+ Compression level from 0 to 22.
1836
+ """
1837
+ return pulumi.get(self, "compression_level")
1838
+
1839
+ @property
1840
+ @pulumi.getter(name="danglingNamePrefix")
1841
+ def dangling_name_prefix(self) -> Optional[str]:
1842
+ """
1843
+ Name image with `prefix@<digest>`, used for anonymous images.
1844
+ """
1845
+ return pulumi.get(self, "dangling_name_prefix")
1846
+
1847
+ @property
1848
+ @pulumi.getter(name="forceCompression")
1849
+ def force_compression(self) -> Optional[bool]:
1850
+ """
1851
+ Forcefully apply compression.
1852
+ """
1853
+ return pulumi.get(self, "force_compression")
1854
+
1855
+ @property
1856
+ @pulumi.getter
1857
+ def insecure(self) -> Optional[bool]:
1858
+ """
1859
+ Allow pushing to an insecure registry.
1860
+ """
1861
+ return pulumi.get(self, "insecure")
1862
+
1863
+ @property
1864
+ @pulumi.getter(name="nameCanonical")
1865
+ def name_canonical(self) -> Optional[bool]:
1866
+ """
1867
+ Add additional canonical name (`name@<digest>`).
1868
+ """
1869
+ return pulumi.get(self, "name_canonical")
1870
+
1871
+ @property
1872
+ @pulumi.getter
1873
+ def names(self) -> Optional[Sequence[str]]:
1874
+ """
1875
+ Specify images names to export. This is overridden if tags are already specified.
1876
+ """
1877
+ return pulumi.get(self, "names")
1878
+
1879
+ @property
1880
+ @pulumi.getter(name="ociMediaTypes")
1881
+ def oci_media_types(self) -> Optional[bool]:
1882
+ """
1883
+ Use OCI media types in exporter manifests.
1884
+ """
1885
+ return pulumi.get(self, "oci_media_types")
1886
+
1887
+ @property
1888
+ @pulumi.getter
1889
+ def push(self) -> Optional[bool]:
1890
+ """
1891
+ Push after creating the image. Defaults to `false`.
1892
+ """
1893
+ return pulumi.get(self, "push")
1894
+
1895
+ @property
1896
+ @pulumi.getter(name="pushByDigest")
1897
+ def push_by_digest(self) -> Optional[bool]:
1898
+ """
1899
+ Push image without name.
1900
+ """
1901
+ return pulumi.get(self, "push_by_digest")
1902
+
1903
+ @property
1904
+ @pulumi.getter
1905
+ def store(self) -> Optional[bool]:
1906
+ """
1907
+ Store resulting images to the worker's image store and ensure all of
1908
+ its blobs are in the content store.
1909
+
1910
+ Defaults to `true`.
1911
+
1912
+ Ignored if the worker doesn't have image store (when using OCI workers,
1913
+ for example).
1914
+ """
1915
+ return pulumi.get(self, "store")
1916
+
1917
+ @property
1918
+ @pulumi.getter
1919
+ def unpack(self) -> Optional[bool]:
1920
+ """
1921
+ Unpack image after creation (for use with containerd). Defaults to
1922
+ `false`.
1923
+ """
1924
+ return pulumi.get(self, "unpack")
1925
+
1926
+
1927
+ @pulumi.output_type
1928
+ class ExportLocal(dict):
1929
+ def __init__(__self__, *,
1930
+ dest: str):
1931
+ """
1932
+ :param str dest: Output path.
1933
+ """
1934
+ pulumi.set(__self__, "dest", dest)
1935
+
1936
+ @property
1937
+ @pulumi.getter
1938
+ def dest(self) -> str:
1939
+ """
1940
+ Output path.
1941
+ """
1942
+ return pulumi.get(self, "dest")
1943
+
1944
+
1945
+ @pulumi.output_type
1946
+ class ExportOCI(dict):
1947
+ @staticmethod
1948
+ def __key_warning(key: str):
1949
+ suggest = None
1950
+ if key == "compressionLevel":
1951
+ suggest = "compression_level"
1952
+ elif key == "forceCompression":
1953
+ suggest = "force_compression"
1954
+ elif key == "ociMediaTypes":
1955
+ suggest = "oci_media_types"
1956
+
1957
+ if suggest:
1958
+ pulumi.log.warn(f"Key '{key}' not found in ExportOCI. Access the value via the '{suggest}' property getter instead.")
1959
+
1960
+ def __getitem__(self, key: str) -> Any:
1961
+ ExportOCI.__key_warning(key)
1962
+ return super().__getitem__(key)
1963
+
1964
+ def get(self, key: str, default = None) -> Any:
1965
+ ExportOCI.__key_warning(key)
1966
+ return super().get(key, default)
1967
+
1968
+ def __init__(__self__, *,
1969
+ annotations: Optional[Mapping[str, str]] = None,
1970
+ compression: Optional['CompressionType'] = None,
1971
+ compression_level: Optional[int] = None,
1972
+ dest: Optional[str] = None,
1973
+ force_compression: Optional[bool] = None,
1974
+ names: Optional[Sequence[str]] = None,
1975
+ oci_media_types: Optional[bool] = None,
1976
+ tar: Optional[bool] = None):
1977
+ """
1978
+ :param Mapping[str, str] annotations: Attach an arbitrary key/value annotation to the image.
1979
+ :param 'CompressionType' compression: The compression type to use.
1980
+ :param int compression_level: Compression level from 0 to 22.
1981
+ :param str dest: The local export path.
1982
+ :param bool force_compression: Forcefully apply compression.
1983
+ :param Sequence[str] names: Specify images names to export. This is overridden if tags are already specified.
1984
+ :param bool oci_media_types: Use OCI media types in exporter manifests.
1985
+ :param bool tar: Bundle the output into a tarball layout.
1986
+ """
1987
+ if annotations is not None:
1988
+ pulumi.set(__self__, "annotations", annotations)
1989
+ if compression is None:
1990
+ compression = 'gzip'
1991
+ if compression is not None:
1992
+ pulumi.set(__self__, "compression", compression)
1993
+ if compression_level is None:
1994
+ compression_level = 0
1995
+ if compression_level is not None:
1996
+ pulumi.set(__self__, "compression_level", compression_level)
1997
+ if dest is not None:
1998
+ pulumi.set(__self__, "dest", dest)
1999
+ if force_compression is None:
2000
+ force_compression = False
2001
+ if force_compression is not None:
2002
+ pulumi.set(__self__, "force_compression", force_compression)
2003
+ if names is not None:
2004
+ pulumi.set(__self__, "names", names)
2005
+ if oci_media_types is None:
2006
+ oci_media_types = True
2007
+ if oci_media_types is not None:
2008
+ pulumi.set(__self__, "oci_media_types", oci_media_types)
2009
+ if tar is None:
2010
+ tar = True
2011
+ if tar is not None:
2012
+ pulumi.set(__self__, "tar", tar)
2013
+
2014
+ @property
2015
+ @pulumi.getter
2016
+ def annotations(self) -> Optional[Mapping[str, str]]:
2017
+ """
2018
+ Attach an arbitrary key/value annotation to the image.
2019
+ """
2020
+ return pulumi.get(self, "annotations")
2021
+
2022
+ @property
2023
+ @pulumi.getter
2024
+ def compression(self) -> Optional['CompressionType']:
2025
+ """
2026
+ The compression type to use.
2027
+ """
2028
+ return pulumi.get(self, "compression")
2029
+
2030
+ @property
2031
+ @pulumi.getter(name="compressionLevel")
2032
+ def compression_level(self) -> Optional[int]:
2033
+ """
2034
+ Compression level from 0 to 22.
2035
+ """
2036
+ return pulumi.get(self, "compression_level")
2037
+
2038
+ @property
2039
+ @pulumi.getter
2040
+ def dest(self) -> Optional[str]:
2041
+ """
2042
+ The local export path.
2043
+ """
2044
+ return pulumi.get(self, "dest")
2045
+
2046
+ @property
2047
+ @pulumi.getter(name="forceCompression")
2048
+ def force_compression(self) -> Optional[bool]:
2049
+ """
2050
+ Forcefully apply compression.
2051
+ """
2052
+ return pulumi.get(self, "force_compression")
2053
+
2054
+ @property
2055
+ @pulumi.getter
2056
+ def names(self) -> Optional[Sequence[str]]:
2057
+ """
2058
+ Specify images names to export. This is overridden if tags are already specified.
2059
+ """
2060
+ return pulumi.get(self, "names")
2061
+
2062
+ @property
2063
+ @pulumi.getter(name="ociMediaTypes")
2064
+ def oci_media_types(self) -> Optional[bool]:
2065
+ """
2066
+ Use OCI media types in exporter manifests.
2067
+ """
2068
+ return pulumi.get(self, "oci_media_types")
2069
+
2070
+ @property
2071
+ @pulumi.getter
2072
+ def tar(self) -> Optional[bool]:
2073
+ """
2074
+ Bundle the output into a tarball layout.
2075
+ """
2076
+ return pulumi.get(self, "tar")
2077
+
2078
+
2079
+ @pulumi.output_type
2080
+ class ExportRegistry(dict):
2081
+ @staticmethod
2082
+ def __key_warning(key: str):
2083
+ suggest = None
2084
+ if key == "compressionLevel":
2085
+ suggest = "compression_level"
2086
+ elif key == "danglingNamePrefix":
2087
+ suggest = "dangling_name_prefix"
2088
+ elif key == "forceCompression":
2089
+ suggest = "force_compression"
2090
+ elif key == "nameCanonical":
2091
+ suggest = "name_canonical"
2092
+ elif key == "ociMediaTypes":
2093
+ suggest = "oci_media_types"
2094
+ elif key == "pushByDigest":
2095
+ suggest = "push_by_digest"
2096
+
2097
+ if suggest:
2098
+ pulumi.log.warn(f"Key '{key}' not found in ExportRegistry. Access the value via the '{suggest}' property getter instead.")
2099
+
2100
+ def __getitem__(self, key: str) -> Any:
2101
+ ExportRegistry.__key_warning(key)
2102
+ return super().__getitem__(key)
2103
+
2104
+ def get(self, key: str, default = None) -> Any:
2105
+ ExportRegistry.__key_warning(key)
2106
+ return super().get(key, default)
2107
+
2108
+ def __init__(__self__, *,
2109
+ annotations: Optional[Mapping[str, str]] = None,
2110
+ compression: Optional['CompressionType'] = None,
2111
+ compression_level: Optional[int] = None,
2112
+ dangling_name_prefix: Optional[str] = None,
2113
+ force_compression: Optional[bool] = None,
2114
+ insecure: Optional[bool] = None,
2115
+ name_canonical: Optional[bool] = None,
2116
+ names: Optional[Sequence[str]] = None,
2117
+ oci_media_types: Optional[bool] = None,
2118
+ push: Optional[bool] = None,
2119
+ push_by_digest: Optional[bool] = None,
2120
+ store: Optional[bool] = None,
2121
+ unpack: Optional[bool] = None):
2122
+ """
2123
+ :param Mapping[str, str] annotations: Attach an arbitrary key/value annotation to the image.
2124
+ :param 'CompressionType' compression: The compression type to use.
2125
+ :param int compression_level: Compression level from 0 to 22.
2126
+ :param str dangling_name_prefix: Name image with `prefix@<digest>`, used for anonymous images.
2127
+ :param bool force_compression: Forcefully apply compression.
2128
+ :param bool insecure: Allow pushing to an insecure registry.
2129
+ :param bool name_canonical: Add additional canonical name (`name@<digest>`).
2130
+ :param Sequence[str] names: Specify images names to export. This is overridden if tags are already specified.
2131
+ :param bool oci_media_types: Use OCI media types in exporter manifests.
2132
+ :param bool push: Push after creating the image. Defaults to `true`.
2133
+ :param bool push_by_digest: Push image without name.
2134
+ :param bool store: Store resulting images to the worker's image store and ensure all of
2135
+ its blobs are in the content store.
2136
+
2137
+ Defaults to `true`.
2138
+
2139
+ Ignored if the worker doesn't have image store (when using OCI workers,
2140
+ for example).
2141
+ :param bool unpack: Unpack image after creation (for use with containerd). Defaults to
2142
+ `false`.
2143
+ """
2144
+ if annotations is not None:
2145
+ pulumi.set(__self__, "annotations", annotations)
2146
+ if compression is None:
2147
+ compression = 'gzip'
2148
+ if compression is not None:
2149
+ pulumi.set(__self__, "compression", compression)
2150
+ if compression_level is None:
2151
+ compression_level = 0
2152
+ if compression_level is not None:
2153
+ pulumi.set(__self__, "compression_level", compression_level)
2154
+ if dangling_name_prefix is not None:
2155
+ pulumi.set(__self__, "dangling_name_prefix", dangling_name_prefix)
2156
+ if force_compression is None:
2157
+ force_compression = False
2158
+ if force_compression is not None:
2159
+ pulumi.set(__self__, "force_compression", force_compression)
2160
+ if insecure is not None:
2161
+ pulumi.set(__self__, "insecure", insecure)
2162
+ if name_canonical is not None:
2163
+ pulumi.set(__self__, "name_canonical", name_canonical)
2164
+ if names is not None:
2165
+ pulumi.set(__self__, "names", names)
2166
+ if oci_media_types is None:
2167
+ oci_media_types = False
2168
+ if oci_media_types is not None:
2169
+ pulumi.set(__self__, "oci_media_types", oci_media_types)
2170
+ if push is None:
2171
+ push = True
2172
+ if push is not None:
2173
+ pulumi.set(__self__, "push", push)
2174
+ if push_by_digest is not None:
2175
+ pulumi.set(__self__, "push_by_digest", push_by_digest)
2176
+ if store is None:
2177
+ store = True
2178
+ if store is not None:
2179
+ pulumi.set(__self__, "store", store)
2180
+ if unpack is not None:
2181
+ pulumi.set(__self__, "unpack", unpack)
2182
+
2183
+ @property
2184
+ @pulumi.getter
2185
+ def annotations(self) -> Optional[Mapping[str, str]]:
2186
+ """
2187
+ Attach an arbitrary key/value annotation to the image.
2188
+ """
2189
+ return pulumi.get(self, "annotations")
2190
+
2191
+ @property
2192
+ @pulumi.getter
2193
+ def compression(self) -> Optional['CompressionType']:
2194
+ """
2195
+ The compression type to use.
2196
+ """
2197
+ return pulumi.get(self, "compression")
2198
+
2199
+ @property
2200
+ @pulumi.getter(name="compressionLevel")
2201
+ def compression_level(self) -> Optional[int]:
2202
+ """
2203
+ Compression level from 0 to 22.
2204
+ """
2205
+ return pulumi.get(self, "compression_level")
2206
+
2207
+ @property
2208
+ @pulumi.getter(name="danglingNamePrefix")
2209
+ def dangling_name_prefix(self) -> Optional[str]:
2210
+ """
2211
+ Name image with `prefix@<digest>`, used for anonymous images.
2212
+ """
2213
+ return pulumi.get(self, "dangling_name_prefix")
2214
+
2215
+ @property
2216
+ @pulumi.getter(name="forceCompression")
2217
+ def force_compression(self) -> Optional[bool]:
2218
+ """
2219
+ Forcefully apply compression.
2220
+ """
2221
+ return pulumi.get(self, "force_compression")
2222
+
2223
+ @property
2224
+ @pulumi.getter
2225
+ def insecure(self) -> Optional[bool]:
2226
+ """
2227
+ Allow pushing to an insecure registry.
2228
+ """
2229
+ return pulumi.get(self, "insecure")
2230
+
2231
+ @property
2232
+ @pulumi.getter(name="nameCanonical")
2233
+ def name_canonical(self) -> Optional[bool]:
2234
+ """
2235
+ Add additional canonical name (`name@<digest>`).
2236
+ """
2237
+ return pulumi.get(self, "name_canonical")
2238
+
2239
+ @property
2240
+ @pulumi.getter
2241
+ def names(self) -> Optional[Sequence[str]]:
2242
+ """
2243
+ Specify images names to export. This is overridden if tags are already specified.
2244
+ """
2245
+ return pulumi.get(self, "names")
2246
+
2247
+ @property
2248
+ @pulumi.getter(name="ociMediaTypes")
2249
+ def oci_media_types(self) -> Optional[bool]:
2250
+ """
2251
+ Use OCI media types in exporter manifests.
2252
+ """
2253
+ return pulumi.get(self, "oci_media_types")
2254
+
2255
+ @property
2256
+ @pulumi.getter
2257
+ def push(self) -> Optional[bool]:
2258
+ """
2259
+ Push after creating the image. Defaults to `true`.
2260
+ """
2261
+ return pulumi.get(self, "push")
2262
+
2263
+ @property
2264
+ @pulumi.getter(name="pushByDigest")
2265
+ def push_by_digest(self) -> Optional[bool]:
2266
+ """
2267
+ Push image without name.
2268
+ """
2269
+ return pulumi.get(self, "push_by_digest")
2270
+
2271
+ @property
2272
+ @pulumi.getter
2273
+ def store(self) -> Optional[bool]:
2274
+ """
2275
+ Store resulting images to the worker's image store and ensure all of
2276
+ its blobs are in the content store.
2277
+
2278
+ Defaults to `true`.
2279
+
2280
+ Ignored if the worker doesn't have image store (when using OCI workers,
2281
+ for example).
2282
+ """
2283
+ return pulumi.get(self, "store")
2284
+
2285
+ @property
2286
+ @pulumi.getter
2287
+ def unpack(self) -> Optional[bool]:
2288
+ """
2289
+ Unpack image after creation (for use with containerd). Defaults to
2290
+ `false`.
2291
+ """
2292
+ return pulumi.get(self, "unpack")
2293
+
2294
+
2295
+ @pulumi.output_type
2296
+ class ExportTar(dict):
2297
+ def __init__(__self__, *,
2298
+ dest: str):
2299
+ """
2300
+ :param str dest: Output path.
2301
+ """
2302
+ pulumi.set(__self__, "dest", dest)
2303
+
2304
+ @property
2305
+ @pulumi.getter
2306
+ def dest(self) -> str:
2307
+ """
2308
+ Output path.
2309
+ """
2310
+ return pulumi.get(self, "dest")
2311
+
2312
+
2313
+ @pulumi.output_type
2314
+ class Registry(dict):
2315
+ def __init__(__self__, *,
2316
+ address: str,
2317
+ password: Optional[str] = None,
2318
+ username: Optional[str] = None):
2319
+ """
2320
+ :param str address: The registry's address (e.g. "docker.io").
2321
+ :param str password: Password or token for the registry.
2322
+ :param str username: Username for the registry.
2323
+ """
2324
+ pulumi.set(__self__, "address", address)
2325
+ if password is not None:
2326
+ pulumi.set(__self__, "password", password)
2327
+ if username is not None:
2328
+ pulumi.set(__self__, "username", username)
2329
+
2330
+ @property
2331
+ @pulumi.getter
2332
+ def address(self) -> str:
2333
+ """
2334
+ The registry's address (e.g. "docker.io").
2335
+ """
2336
+ return pulumi.get(self, "address")
2337
+
2338
+ @property
2339
+ @pulumi.getter
2340
+ def password(self) -> Optional[str]:
2341
+ """
2342
+ Password or token for the registry.
2343
+ """
2344
+ return pulumi.get(self, "password")
2345
+
2346
+ @property
2347
+ @pulumi.getter
2348
+ def username(self) -> Optional[str]:
2349
+ """
2350
+ Username for the registry.
2351
+ """
2352
+ return pulumi.get(self, "username")
2353
+
2354
+
2355
+ @pulumi.output_type
2356
+ class SSH(dict):
2357
+ def __init__(__self__, *,
2358
+ id: str,
2359
+ paths: Optional[Sequence[str]] = None):
2360
+ """
2361
+ :param str id: Useful for distinguishing different servers that are part of the same
2362
+ build.
2363
+
2364
+ A value of `default` is appropriate if only dealing with a single host.
2365
+ :param Sequence[str] paths: SSH agent socket or private keys to expose to the build under the given
2366
+ identifier.
2367
+
2368
+ Defaults to `[$SSH_AUTH_SOCK]`.
2369
+
2370
+ Note that your keys are **not** automatically added when using an
2371
+ agent. Run `ssh-add -l` locally to confirm which public keys are
2372
+ visible to the agent; these will be exposed to your build.
2373
+ """
2374
+ pulumi.set(__self__, "id", id)
2375
+ if paths is not None:
2376
+ pulumi.set(__self__, "paths", paths)
2377
+
2378
+ @property
2379
+ @pulumi.getter
2380
+ def id(self) -> str:
2381
+ """
2382
+ Useful for distinguishing different servers that are part of the same
2383
+ build.
2384
+
2385
+ A value of `default` is appropriate if only dealing with a single host.
2386
+ """
2387
+ return pulumi.get(self, "id")
2388
+
2389
+ @property
2390
+ @pulumi.getter
2391
+ def paths(self) -> Optional[Sequence[str]]:
2392
+ """
2393
+ SSH agent socket or private keys to expose to the build under the given
2394
+ identifier.
2395
+
2396
+ Defaults to `[$SSH_AUTH_SOCK]`.
2397
+
2398
+ Note that your keys are **not** automatically added when using an
2399
+ agent. Run `ssh-add -l` locally to confirm which public keys are
2400
+ visible to the agent; these will be exposed to your build.
2401
+ """
2402
+ return pulumi.get(self, "paths")
2403
+
2404
+