Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
157 changes: 122 additions & 35 deletions src/usethis/_integrations/ci/bitbucket/schema.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# generated by datamodel-codegen:
# filename: schema.json
# timestamp: 2025-11-12T19:13:24+00:00
# timestamp: 2025-12-13T22:00:27+00:00
# using the command:
# datamodel-codegen --input tests\usethis\_integrations\ci\bitbucket\schema.json --input-file-type jsonschema --output src\usethis\_integrations\ci\bitbucket\schema.py --enum-field-as-literal all --field-constraints --use-double-quotes --use-union-operator --use-standard-collections --use-default-kwarg --extra-fields=allow --output-model-type pydantic_v2.BaseModel --target-python-version 3.10
# ruff: noqa: ERA001
Expand Down Expand Up @@ -106,6 +106,11 @@ class Cloud(BaseModel):
alias="atlassian-ip-ranges",
description="Whether it uses Atlassian ip ranges.",
)
instance_type: str | None = Field(
default=None,
alias="instance-type",
description="Instance type for the cloud runtime.",
)
version: str | None = Field(default=None, description="Cloud Runtime version.")


Expand Down Expand Up @@ -160,6 +165,12 @@ class ImportPipeline(BaseModel):
)


class RunsOnItem(RootModel[str]):
root: str = Field(
..., description="Label of a runner.", max_length=50, title="Step Runner Label"
)


class TriggerConfiguration(BaseModel):
model_config = ConfigDict(
extra="allow",
Expand Down Expand Up @@ -191,6 +202,56 @@ class ImageBase(BaseModel):
)


class StorageAwsAuth1(BaseModel):
model_config = ConfigDict(
extra="allow",
)
access_key: str = Field(..., alias="access-key", description="The AWS access key")
bucket: str = Field(..., description="The name of the S3 bucket")
oidc_role: str | None = Field(
default=None, alias="oidc-role", description="The OIDC role to assume"
)
region: str = Field(..., description="The AWS region")
secret_key: str = Field(..., alias="secret-key", description="The AWS secret key")


class StorageAwsAuth2(BaseModel):
model_config = ConfigDict(
extra="allow",
)
access_key: str | None = Field(
default=None, alias="access-key", description="The AWS access key"
)
bucket: str = Field(..., description="The name of the S3 bucket")
oidc_role: str = Field(
..., alias="oidc-role", description="The OIDC role to assume"
)
region: str = Field(..., description="The AWS region")
secret_key: str | None = Field(
default=None, alias="secret-key", description="The AWS secret key"
)


class StorageAwsAuth(RootModel[StorageAwsAuth1 | StorageAwsAuth2]):
root: StorageAwsAuth1 | StorageAwsAuth2 = Field(
...,
description="Amazon web services self hosted storage",
title="Custom aws self hosted storage",
)


class StorageGcpAuth(BaseModel):
model_config = ConfigDict(
extra="allow",
)
bucket: str = Field(..., description="The name of the GCP bucket")
key_file: str = Field(
...,
alias="key-file",
description="The GCP key file contents encoded in Base64 format",
)


class Variable(BaseModel):
model_config = ConfigDict(
extra="allow",
Expand Down Expand Up @@ -282,12 +343,6 @@ class Pipe(BaseModel):
)


class RunsOnItem(RootModel[str]):
root: str = Field(
..., description="Label of a runner.", max_length=50, title="Step Runner Label"
)


class ArtifactsUpload(BaseModel):
model_config = ConfigDict(
extra="allow",
Expand Down Expand Up @@ -319,13 +374,6 @@ class ArtifactsUpload(BaseModel):
)


class Runtime(BaseModel):
model_config = ConfigDict(
extra="allow",
)
cloud: Cloud | None = None


class TriggerConfigurationList(RootModel[list[TriggerConfiguration]]):
root: list[TriggerConfiguration] = Field(
...,
Expand Down Expand Up @@ -375,19 +423,6 @@ class ImageNoAuth(ImageBase):
username: Any | None = None


class Script(RootModel[list[str | Pipe | ScriptItemAnchor]]):
root: list[str | Pipe | ScriptItemAnchor] = Field(..., min_length=1)


class ArtifactsExpanded(BaseModel):
model_config = ConfigDict(
extra="allow",
)
download: bool | Download | None = None
paths: ArtifactsPaths | None = None
upload: list[ArtifactsUpload] | None = Field(default=None, min_length=1)


class RunsOnExpanded(RootModel[list[RunsOnItem]]):
root: list[RunsOnItem] = Field(
...,
Expand All @@ -399,16 +434,47 @@ class RunsOnExpanded(RootModel[list[RunsOnItem]]):
)


class Options(BaseModel):
class Storage(BaseModel):
model_config = ConfigDict(
extra="allow",
)
docker: bool | None = Field(
default=False, description="Enables Docker service for every step."
gcp: StorageGcpAuth


class Storage1(BaseModel):
model_config = ConfigDict(
extra="allow",
)
max_time: MaxTime | None = Field(default=None, alias="max-time")
runtime: Runtime | None = None
size: Size | None = None
aws: StorageAwsAuth


class SelfHosted(BaseModel):
model_config = ConfigDict(
extra="allow",
)
cpu: int | None = Field(
default=None, description="Cpu available to runner.", title="Cpu"
)
memory: int | None = Field(
default=None, description="Memory (mb) available to runner.", title="Memory"
)
storage: Storage | Storage1 | None = None
volumes: list[str] | None = Field(
default=[], description="Volumes to be mounted into the build container."
)


class Script(RootModel[list[str | Pipe | ScriptItemAnchor]]):
root: list[str | Pipe | ScriptItemAnchor] = Field(..., min_length=1)


class ArtifactsExpanded(BaseModel):
model_config = ConfigDict(
extra="allow",
)
download: bool | Download | None = None
paths: ArtifactsPaths | None = None
upload: list[ArtifactsUpload] | None = Field(default=None, min_length=1)


class Cache(RootModel[CachePath | CacheExpanded]):
Expand All @@ -419,6 +485,18 @@ class Image(RootModel[ImageNoAuth | ImageBasicAuth | ImageAwsAuth | ImageName]):
root: ImageNoAuth | ImageBasicAuth | ImageAwsAuth | ImageName


class RunsOn(RootModel[RunsOnItem | RunsOnExpanded]):
root: RunsOnItem | RunsOnExpanded


class Runtime(BaseModel):
model_config = ConfigDict(
extra="allow",
)
cloud: Cloud | None = None
self_hosted: SelfHosted | None = Field(default=None, alias="self-hosted")


class Service(BaseModel):
model_config = ConfigDict(
extra="allow",
Expand All @@ -445,8 +523,17 @@ class Artifacts(RootModel[ArtifactsPaths | ArtifactsExpanded]):
root: ArtifactsPaths | ArtifactsExpanded


class RunsOn(RootModel[RunsOnItem | RunsOnExpanded]):
root: RunsOnItem | RunsOnExpanded
class Options(BaseModel):
model_config = ConfigDict(
extra="allow",
)
docker: bool | None = Field(
default=False, description="Enables Docker service for every step."
)
max_time: MaxTime | None = Field(default=None, alias="max-time")
runs_on: RunsOn | None = Field(default=None, alias="runs-on")
runtime: Runtime | None = None
size: Size | None = None


class StepBase(BaseModel):
Expand Down
Loading