7 Commits

Author SHA1 Message Date
a872bad97d with more generic way, but still wonky 2022-10-29 23:33:46 +02:00
0838bc5a56 with main.go path 2022-10-29 23:27:43 +02:00
c4ca5f25a0 default build.go 2022-10-29 23:25:49 +02:00
f89936200e with buildpath 2022-10-29 23:25:31 +02:00
e9dd36f1e4 with tmp dir 2022-10-29 23:12:06 +02:00
001742340c with defined dir 2022-10-29 23:08:07 +02:00
dfa693ea08 with base src/ 2022-10-29 23:06:06 +02:00
5 changed files with 45 additions and 43 deletions

View File

@@ -8,7 +8,7 @@ RUN go build -o dist/dagger-go main.go
FROM harbor.front.kjuulh.io/docker-proxy/library/docker:dind
WORKDIR /src/docker
WORKDIR /src
COPY --from=builder /src/builder/dist/dagger-go /usr/bin/

View File

@@ -1,5 +1,3 @@
{{ $imageTag := "harbor.front.kjuulh.io/library/${DRONE_REPO_NAME}" }}
type: docker
kind: pipeline
name: "drone-dagger-test"
@@ -18,7 +16,7 @@ steps:
- mkdir -p tmp/dagger-go
- git clone "https://git.front.kjuulh.io/kjuulh/dagger-go.git" tmp/dagger-go
- docker build -t dagger-go-builder:${DRONE_COMMIT} -f tmp/dagger-go/Dockerfile .
- 'docker run -v "$PWD/:/src/build" -v /var/run/docker.sock:/var/run/docker.sock dagger-go-builder:${DRONE_COMMIT} dagger-go build --image-tag "{{ or .input.imageTag $imageTag }}"'
- 'docker run -v "$PWD/:/src/" -v /var/run/docker.sock:/var/run/docker.sock dagger-go-builder:${DRONE_COMMIT} dagger-go build'
services:
- name: docker

27
example/main.go Normal file
View File

@@ -0,0 +1,27 @@
package main
import (
"context"
"log"
"git.front.kjuulh.io/kjuulh/dagger-go/internal"
"git.front.kjuulh.io/kjuulh/dagger-go/pkg/tasks"
)
func main() {
ctx := context.Background()
if err := run(ctx); err != nil {
log.Fatal(err)
}
}
func run(ctx context.Context) error {
builder, err := internal.New(ctx)
if err != nil {
return err
}
defer builder.CleanUp()
return tasks.Build(builder, "some-image", "example/main.go")
}

View File

@@ -1,18 +1,17 @@
package cli
import (
"errors"
"fmt"
"log"
"os"
"git.front.kjuulh.io/kjuulh/dagger-go/internal"
"git.front.kjuulh.io/kjuulh/dagger-go/pkg/tasks"
"github.com/spf13/cobra"
)
func Build() *cobra.Command {
var (
imageTag string
)
func Build(mainGoPath string, imageTag string) *cobra.Command {
cmd := &cobra.Command{
Use: "build",
RunE: func(cmd *cobra.Command, args []string) error {
@@ -20,6 +19,14 @@ func Build() *cobra.Command {
return err
}
if imageTag == "" {
repoName := os.Getenv("DRONE_REPO_NAME")
if repoName == "" {
return errors.New("could not find DRONE_REPO_NAME")
}
imageTag = fmt.Sprintf("harbor.front.kjuulh.io/library/%s", repoName)
}
ctx := cmd.Context()
log.Printf("Building image: %s\n", imageTag)
@@ -30,12 +37,9 @@ func Build() *cobra.Command {
}
defer client.CleanUp()
return tasks.Build(client, imageTag)
return tasks.Build(client, imageTag, mainGoPath)
},
}
cmd.PersistentFlags().StringVar(&imageTag, "image-tag", "", "the url for which to tag the docker image, defaults to private url, with repo as image name")
cmd.MarkPersistentFlagRequired("image-tag")
return cmd
}

View File

@@ -3,14 +3,13 @@ package tasks
import (
"context"
"log"
"os"
"dagger.io/dagger"
"git.front.kjuulh.io/kjuulh/byg"
"git.front.kjuulh.io/kjuulh/dagger-go/internal"
)
func Build(builder *internal.Builder, imageTag string) error {
func Build(builder *internal.Builder, imageTag string, buildPath string) error {
log.Printf("building image: %s", imageTag)
client := builder.Dagger
@@ -31,36 +30,10 @@ func Build(builder *internal.Builder, imageTag string) error {
return err
}
log.Println("listing files in /src/build")
dir, err := os.ReadDir("/src/build")
if err == nil {
for _, d := range dir {
log.Printf("content: %s\n", d.Name())
}
} else {
return err
}
log.Println("listing files in /src/docker")
dir, err = os.ReadDir("/src/docker")
if err == nil {
for _, d := range dir {
log.Printf("content: %s\n", d.Name())
}
}
log.Println("listing files in /src/")
dir, err = os.ReadDir("/src/")
if err == nil {
for _, d := range dir {
log.Printf("content: %s\n", d.Name())
}
}
golang := client.Container().From("golang:latest")
golang = golang.WithMountedDirectory("/src/build", src).WithWorkdir("/src")
golang = golang.WithMountedDirectory("/src", src).WithWorkdir("/src")
_, err = golang.Exec(dagger.ContainerExecOpts{
Args: []string{"go", "build", "-o", "build/"},
Args: []string{"go", "build", "-o", "build/", buildPath},
}).ExitCode(ctx)
return err