Skip to content
Draft
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
20 changes: 10 additions & 10 deletions .dagger/build.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@ import (
//
// GOOS: linux, windows, darwin
// GOARCH: amd64, arm64
func (t *Tool) BuildPlatforms(ctx context.Context,
func (m *DataTool) BuildPlatforms(
// Snapshot build, skipping goreleaser validations. Useful for building committed git history that isn't tagged with a release, a dirty repo does an "auto-snapshot".
// +optional
snapshot bool,
) *dagger.Directory {
return dag.Goreleaser(t.Source).
return dag.Goreleaser(m.Source).
Build().
With(func(r *dagger.GoreleaserBuild) *dagger.GoreleaserBuild {
if snapshot {
Expand All @@ -40,7 +40,7 @@ func (t *Tool) BuildPlatforms(ctx context.Context,
//
// GOOS: linux, windows, darwin
// GOARCH: amd64, arm64
func (t *Tool) Build(ctx context.Context,
func (m *DataTool) Build(ctx context.Context,
// Build target platform
// +optional
// +default="linux/amd64"
Expand All @@ -49,11 +49,11 @@ func (t *Tool) Build(ctx context.Context,
// +optional
snapshot bool,
) *dagger.File {
return build(ctx, t.Source, platform, snapshot)
return build(m.Source, platform, snapshot)
}

// Create an image with an ace-dt executable.
func (t *Tool) Image(ctx context.Context,
func (m *DataTool) Image(ctx context.Context,
// image version
version string,
// Build target platform
Expand All @@ -63,14 +63,14 @@ func (t *Tool) Image(ctx context.Context,
) *dagger.Container {
ctr := dag.Container(dagger.ContainerOpts{Platform: platform}).
From(imageChainguard).
WithFile("/usr/local/bin/ace-dt", t.Build(ctx, platform, false)).
WithFile("/usr/local/bin/ace-dt", m.Build(ctx, platform, false)).
WithEntrypoint([]string{"ace-dt"}).
WithWorkdir("/")
return withCommonLabels(ctr, version)
}

// Create and publish a multi-platform image index.
func (t *Tool) ImageIndex(ctx context.Context,
func (m *DataTool) ImageIndex(ctx context.Context,
// image version
version string,
// build platforms
Expand All @@ -90,7 +90,7 @@ func (t *Tool) ImageIndex(ctx context.Context,
p := pool.NewWithResults[*dagger.Container]().WithContext(ctx)
for _, platform := range platforms {
p.Go(func(ctx context.Context) (*dagger.Container, error) {
img := t.Image(ctx, version, platform).
img := m.Image(ctx, version, platform).
WithLabel("org.opencontainers.image.url", imgURL).
WithLabel("org.opencontainers.image.source", "https://github.com/act3-ai/data-tool")
return img, nil
Expand All @@ -116,7 +116,7 @@ func (t *Tool) ImageIndex(ctx context.Context,
result.WriteString(fmt.Sprintf("%s\n", dgstRef))

if len(extraTags) > 0 {
_, err := dag.Release(t.Source).AddTags(ctx, taggedRef, extraTags)
_, err := dag.Release(nil).AddTags(ctx, taggedRef, extraTags)
if err != nil {
return result.String(), fmt.Errorf("adding extra tags to image: %w", err)
}
Expand All @@ -127,7 +127,7 @@ func (t *Tool) ImageIndex(ctx context.Context,
return result.String(), nil
}

func build(ctx context.Context,
func build(
src *dagger.Directory,
platform dagger.Platform,
// snapshot build, skip goreleaser validations
Expand Down
51 changes: 25 additions & 26 deletions .dagger/generate.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,45 +13,44 @@ const (
cliDocsPath = "docs/cli"
)

// Run all auto generators: CLI docs, API docs, and go generate
func (t *Tool) GenAll(ctx context.Context) *dagger.Directory {
return dag.Directory().
WithDirectory(cliDocsPath, t.CLIDocs(ctx)).
WithDirectory(apiDocsPath, t.APIDocs()).
WithDirectory(pkgPath, t.Generate())
}

// Generate CLI documentation.
func (t *Tool) CLIDocs(ctx context.Context) *dagger.Directory {
acedt := t.Build(ctx, "linux/amd64", true)
// +generate
func (m *DataTool) CLIDocs(ctx context.Context) *dagger.Changeset {
acedt := m.Build(ctx, "linux/amd64", true)

return dag.Go().
WithSource(t.Source).
Container().
return dag.Container().
WithDirectory("/src", m.Source).
WithWorkdir("/src").
WithFile("/usr/local/bin/ace-dt", acedt).
WithExec([]string{"ace-dt", "gendocs", "md", "--only-commands", cliDocsPath}).
Directory(cliDocsPath)
Directory("/src").
Changes(m.Source)
}

// Generate API documentation.
func (t *Tool) APIDocs() *dagger.Directory {
return dag.Go().
WithSource(t.Source).
Exec([]string{"go", "install", goCrdRefDocs}).
WithExec([]string{"crd-ref-docs", "--config=apidocs.yaml", "--renderer=markdown",
// +generate
func (m *DataTool) APIDocs() *dagger.Changeset {
return dag.Go(dagger.GoOpts{
Source: m.Source,
}).
Env().
WithExec([]string{"go", "tool", "crd-ref-docs", "--config=apidocs.yaml", "--renderer=markdown",
fmt.Sprintf("--source-path=%s/", pkgPath),
fmt.Sprintf("--output-path=%s/", apiDocsPath),
}).
WithoutFile(filepath.Join(apiDocsPath, "out.md")). // TODO: Necessary?
Directory(apiDocsPath)
Directory("/app").
Changes(m.Source)
}

// Generate pkg/apis with controller-gen.
func (t *Tool) Generate() *dagger.Directory {
return dag.Go().
WithSource(t.Source).
WithEnvVariable("GOBIN", "/work/src/tool").
Exec([]string{"go", "install", goControllerGen}).
// +generate
func (m *DataTool) Generate() *dagger.Changeset {
return dag.Go(dagger.GoOpts{
Source: m.Source,
}).
Env().
WithExec([]string{"go", "generate", "./..."}).
Directory(pkgPath)
Directory("/app").
Changes(m.Source)
}
4 changes: 2 additions & 2 deletions .dagger/lint.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ import (
)

// Run linters.
func (t *Tool) Lint() *Lint {
func (m *DataTool) Lint() *Lint {
return &Lint{
Source: t.Source,
Source: m.Source,
}
}

Expand Down
37 changes: 16 additions & 21 deletions .dagger/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,21 +20,16 @@ import (

const (
// images
imageGitCliff = "docker.io/orhunp/git-cliff:2.8.0"
imageGrype = "anchore/grype:latest"
imageSyft = "anchore/syft:latest"
imageRegistry = "docker.io/library/registry:3.0.0-rc.3"
imageTelemetry = "ghcr.io/act3-ai/data-telemetry/slim:latest"
imageChainguard = "cgr.dev/chainguard/static"
imagePostgres = "postgres:17-alpine"
imageGoReleaser = "ghcr.io/goreleaser/goreleaser:v2.8.2"

// go tools
goControllerGen = "sigs.k8s.io/controller-tools/cmd/controller-gen@v0.17.2"
goCrdRefDocs = "github.com/elastic/crd-ref-docs@v0.1.0"
imageGoReleaser = "ghcr.io/goreleaser/goreleaser:v2.15.3"
)

type Tool struct {
type DataTool struct {
// source code directory
Source *dagger.Directory

Expand All @@ -48,40 +43,40 @@ func New(
// top level source code directory
// +defaultPath="/"
src *dagger.Directory,
) *Tool {
return &Tool{
) *DataTool {
return &DataTool{
Source: src,
RegistryConfig: dag.RegistryConfig(),
}
}

// Add credentials for a registry.
func (t *Tool) WithRegistryAuth(
func (m *DataTool) WithRegistryAuth(
// registry's hostname
address string,
// username in registry
username string,
// password or token for registry
secret *dagger.Secret,
) *Tool {
t.RegistryConfig = t.RegistryConfig.WithRegistryAuth(address, username, secret)
return t
) *DataTool {
m.RegistryConfig = m.RegistryConfig.WithRegistryAuth(address, username, secret)
return m
}

// Removes credentials for a registry.
func (t *Tool) WithoutRegistryAuth(
func (m *DataTool) WithoutRegistryAuth(
// registry's hostname
address string,
) *Tool {
t.RegistryConfig = t.RegistryConfig.WithoutRegistryAuth(address)
return t
) *DataTool {
m.RegistryConfig = m.RegistryConfig.WithoutRegistryAuth(address)
return m
}

// Add netrc credentials for a private git repository.
func (t *Tool) WithNetrc(
func (m *DataTool) WithNetrc(
// NETRC credentials
netrc *dagger.Secret,
) *Tool {
t.Netrc = netrc
return t
) *DataTool {
m.Netrc = netrc
return m
}
Loading
Loading