Nuno Ribeiro
Structural Civil Engineer over the last decade
DevOps Engineer @ Critical TechWorks
2024 Dagger Commanders Batch


package main
import (
"context"
"dagger/my-module/internal/dagger"
)
type MyModule struct{}
func (m *MyModule) Build(
ctx context.Context,
src *dagger.Directory,
arch string,
os string,
) *dagger.Container {
return dag.Container().
From("golang:1.21").
WithMountedDirectory("/src", src).
WithWorkdir("/src").
WithEnvVariable("GOARCH", arch).
WithEnvVariable("GOOS", os).
WithEnvVariable("CGO_ENABLED", "0").
WithExec([]string{"go", "build", "-o", "build/"})
}import { dag, object, Directory, Container, func } from "@dagger.io/dagger"
@object()
class MyModule {
@func()
build(src: Directory, arch: string, os: string): Container {
return dag
.container()
.from("golang:1.21")
.withMountedDirectory("/src", src)
.withWorkdir("/src")
.withEnvVariable("GOARCH", arch)
.withEnvVariable("GOOS", os)
.withEnvVariable("CGO_ENABLED", "0")
.withExec(["go", "build", "-o", "build/"])
}
}import dagger
from dagger import dag, function, object_type
@object_type
class MyModule:
@function
def build(self, src: dagger.Directory, arch: str, os: str) -> dagger.Container:
return (
dag.container()
.from_("golang:1.21")
.with_mounted_directory("/src", src)
.with_workdir("/src")
.with_env_variable("GOARCH", arch)
.with_env_variable("GOOS", os)
.with_env_variable("CGO_ENABLED", "0")
.with_exec(["go", "build", "-o", "build/"])
)<?php
declare(strict_types=1);
namespace DaggerModule;
use Dagger\Attribute\{DaggerFunction, DaggerObject};
use Dagger\{Container, Directory};
use function Dagger\dag;
#[DaggerObject]
class MyModule
{
#[DaggerFunction]
public function build(
Directory $src,
string $arch,
string $os,
): Container {
return dag()
->container()
->from('golang:1.21')
->withMountedDirectory('/src', $src)
->withWorkdir('/src')
->withEnvVariable('GOARCH', $arch)
->withEnvVariable('GOOS', $os)
->withEnvVariable('CGO_ENABLED', '0')
->withExec(['go', 'build', '-o', 'build/']);
}
}package io.dagger.modules.mymodule;
import static io.dagger.client.Dagger.dag;
import io.dagger.client.Container;
import io.dagger.client.Directory;
import io.dagger.module.annotation.Function;
import io.dagger.module.annotation.Object;
import java.util.List;
@Object
public class MyModule {
@Function
public Container build(Directory src, String arch, String os) {
return dag().container()
.from("golang:1.21")
.withMountedDirectory("/src", src)
.withWorkdir("/src")
.withEnvVariable("GOARCH", arch)
.withEnvVariable("GOOS", os)
.withEnvVariable("CGO_ENABLED", "0")
.withExec(List.of("go", "build", "-o", "build/"));
}
}base=$(container | from alpine)
env=$(env | with-container-input 'base' $base 'a base container' | with-container-output 'python-dev' 'a container with python dev tools')
llm | with-env $env | with-prompt "You have an alpine container. Install tools to develop with Python." | env | output python-dev | as-container | terminalgithub.com/NunoFrRibeiro/devops-porto-nov
Join Discord! dagger.io
Try the Quickstart! docs.dagger.io