chore(firecracker): name the artifact package bot-bottle-firecracker-infra
test / unit (pull_request) Successful in 1m19s
test / integration (pull_request) Successful in 23s
test / coverage (pull_request) Successful in 1m18s
lint / lint (push) Successful in 2m17s
test / unit (push) Successful in 1m18s
test / integration (push) Successful in 32s
test / coverage (push) Successful in 1m21s
Update Quality Badges / update-badges (push) Successful in 1m17s
test / unit (pull_request) Successful in 1m19s
test / integration (pull_request) Successful in 23s
test / coverage (pull_request) Successful in 1m18s
lint / lint (push) Successful in 2m17s
test / unit (push) Successful in 1m18s
test / integration (push) Successful in 32s
test / coverage (push) Successful in 1m21s
Update Quality Badges / update-badges (push) Successful in 1m17s
Rename the Gitea generic package from bot-bottle-infra to bot-bottle-firecracker-infra so it's self-evident in the package list which backend it serves (and leaves room for other artifacts, e.g. a shipped kernel). The version slot stays the content hash — "firecracker" belongs in the package name, not the version. Docker image / VM names are unchanged. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UoEZHDjv84ChoZbozQERhJ
This commit was merged in pull request #395.
This commit is contained in:
@@ -45,7 +45,7 @@ _DOCKERFILES = ("Dockerfile.orchestrator", "Dockerfile.gateway", "Dockerfile.inf
|
|||||||
|
|
||||||
_DEFAULT_BASE = "https://gitea.dideric.is"
|
_DEFAULT_BASE = "https://gitea.dideric.is"
|
||||||
_DEFAULT_OWNER = "didericis"
|
_DEFAULT_OWNER = "didericis"
|
||||||
_PACKAGE = "bot-bottle-infra"
|
_PACKAGE = "bot-bottle-firecracker-infra"
|
||||||
|
|
||||||
# Streaming copy chunk for the (hundreds-of-MB) download.
|
# Streaming copy chunk for the (hundreds-of-MB) download.
|
||||||
_CHUNK = 1 << 20
|
_CHUNK = 1 << 20
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ never on the launch host. It runs the same pipeline the launch host used to run
|
|||||||
locally — `docker build` the three fixed images, export to a rootfs dir, inject
|
locally — `docker build` the three fixed images, export to a rootfs dir, inject
|
||||||
the guest boot, `mke2fs` to an ext4 with the buildah build slack — then gzips
|
the guest boot, `mke2fs` to an ext4 with the buildah build slack — then gzips
|
||||||
the ext4 and PUTs it (plus a `.sha256`) to
|
the ext4 and PUTs it (plus a `.sha256`) to
|
||||||
`…/api/packages/<owner>/generic/bot-bottle-infra/<version>/`.
|
`…/api/packages/<owner>/generic/bot-bottle-firecracker-infra/<version>/`.
|
||||||
|
|
||||||
The `<version>` is `infra_artifact.infra_artifact_version(...)`, the content
|
The `<version>` is `infra_artifact.infra_artifact_version(...)`, the content
|
||||||
hash of the rootfs inputs, so a launch host at the same code checkout resolves
|
hash of the rootfs inputs, so a launch host at the same code checkout resolves
|
||||||
|
|||||||
@@ -112,12 +112,12 @@ bottle-agnostic**: the per-boot bits (authorized_keys, guest IP) arrive on the
|
|||||||
published ext4 boots on any launch host.
|
published ext4 boots on any launch host.
|
||||||
|
|
||||||
- **Artifact.** `rootfs.ext4` + a `rootfs.ext4.sha256`, published as a Gitea
|
- **Artifact.** `rootfs.ext4` + a `rootfs.ext4.sha256`, published as a Gitea
|
||||||
**generic package** (`bot-bottle-infra/<tag>`) — generic packages take
|
**generic package** (`bot-bottle-firecracker-infra/<tag>`) — generic packages take
|
||||||
arbitrary large binaries (no attachment size cap / file-type allowlist that
|
arbitrary large binaries (no attachment size cap / file-type allowlist that
|
||||||
release attachments impose). The matching `vmlinux` kernel can ship the same
|
release attachments impose). The matching `vmlinux` kernel can ship the same
|
||||||
way, so the whole VM is fetchable.
|
way, so the whole VM is fetchable.
|
||||||
- **Pull.** The launch host `GET`s
|
- **Pull.** The launch host `GET`s
|
||||||
`…/api/packages/<owner>/generic/bot-bottle-infra/<tag>/rootfs.ext4` (+
|
`…/api/packages/<owner>/generic/bot-bottle-firecracker-infra/<tag>/rootfs.ext4` (+
|
||||||
`.sha256`) for its pinned tag, verifies the checksum, caches it under the
|
`.sha256`) for its pinned tag, verifies the checksum, caches it under the
|
||||||
tag, and attaches it as the infra VM's root disk. Host prerequisite is an
|
tag, and attaches it as the infra VM's root disk. Host prerequisite is an
|
||||||
HTTP client — nothing else. Public packages need no auth to pull; a token
|
HTTP client — nothing else. Public packages need no auth to pull; a token
|
||||||
|
|||||||
@@ -169,7 +169,7 @@ class TestConfig(unittest.TestCase):
|
|||||||
url = ia.artifact_url("v1", "rootfs.ext4.gz")
|
url = ia.artifact_url("v1", "rootfs.ext4.gz")
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
"https://mirror.example/api/packages/acme/generic/"
|
"https://mirror.example/api/packages/acme/generic/"
|
||||||
"bot-bottle-infra/v1/rootfs.ext4.gz", url)
|
"bot-bottle-firecracker-infra/v1/rootfs.ext4.gz", url)
|
||||||
|
|
||||||
def test_local_build_flag(self) -> None:
|
def test_local_build_flag(self) -> None:
|
||||||
with mock.patch.dict(os.environ, {"BOT_BOTTLE_INFRA_BUILD": "local"}):
|
with mock.patch.dict(os.environ, {"BOT_BOTTLE_INFRA_BUILD": "local"}):
|
||||||
|
|||||||
Reference in New Issue
Block a user