Hi,
We are using dagger and now we begin to have multiples dagger modules across our repo (internal modules + end user modules).
I would like the have a dagger module in charge of the maintenance like upgrading dagger modules and some manifests.
For the dagger module I begin to do:
@object_type
class Maintenance:
source: Annotated[dagger.Directory, Doc("Source directory"), DefaultPath("/"), Ignore(
["**/*.env", ".venv/"])]
@function
async def upgrade_dagger(
self,
version: Annotated[str, Doc("The version of dagger to upgrade")],
) -> dagger.Directory:
repo_location = "/opt/repo"
dagger_ctr = (
dag.
container().
from_(f"registry.dagger.io/engine:v{version}").
with_directory(repo_location, self.source)
)
for i in await self.source.glob("**/dagger.json"):
dagger_ctr = (
dagger_ctr.
with_workdir(Path(f"{repo_location}/{i}").parent.absolute().__str__()).
with_exec(["dagger", "develop"])
)
return dagger_ctr.directory(repo_location)
But it seems dagger develop need to be connected to the engine.
I would like to know if I can run something like dagger in dagger or connect my dagger engine to this function with a socket or something like that ?