Compare commits
7 Commits
Author | SHA1 | Date | |
---|---|---|---|
a872bad97d
|
|||
0838bc5a56
|
|||
c4ca5f25a0
|
|||
f89936200e
|
|||
e9dd36f1e4
|
|||
001742340c
|
|||
dfa693ea08
|
@@ -8,7 +8,7 @@ RUN go build -o dist/dagger-go main.go
|
|||||||
|
|
||||||
FROM harbor.front.kjuulh.io/docker-proxy/library/docker:dind
|
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/
|
COPY --from=builder /src/builder/dist/dagger-go /usr/bin/
|
||||||
|
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
{{ $imageTag := "harbor.front.kjuulh.io/library/${DRONE_REPO_NAME}" }}
|
|
||||||
|
|
||||||
type: docker
|
type: docker
|
||||||
kind: pipeline
|
kind: pipeline
|
||||||
name: "drone-dagger-test"
|
name: "drone-dagger-test"
|
||||||
@@ -18,7 +16,7 @@ steps:
|
|||||||
- mkdir -p tmp/dagger-go
|
- mkdir -p tmp/dagger-go
|
||||||
- git clone "https://git.front.kjuulh.io/kjuulh/dagger-go.git" 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 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:
|
services:
|
||||||
- name: docker
|
- name: docker
|
||||||
|
27
example/main.go
Normal file
27
example/main.go
Normal 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")
|
||||||
|
}
|
@@ -1,18 +1,17 @@
|
|||||||
package cli
|
package cli
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
|
"os"
|
||||||
|
|
||||||
"git.front.kjuulh.io/kjuulh/dagger-go/internal"
|
"git.front.kjuulh.io/kjuulh/dagger-go/internal"
|
||||||
"git.front.kjuulh.io/kjuulh/dagger-go/pkg/tasks"
|
"git.front.kjuulh.io/kjuulh/dagger-go/pkg/tasks"
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
)
|
)
|
||||||
|
|
||||||
func Build() *cobra.Command {
|
func Build(mainGoPath string, imageTag string) *cobra.Command {
|
||||||
var (
|
|
||||||
imageTag string
|
|
||||||
)
|
|
||||||
|
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "build",
|
Use: "build",
|
||||||
RunE: func(cmd *cobra.Command, args []string) error {
|
RunE: func(cmd *cobra.Command, args []string) error {
|
||||||
@@ -20,6 +19,14 @@ func Build() *cobra.Command {
|
|||||||
return err
|
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()
|
ctx := cmd.Context()
|
||||||
|
|
||||||
log.Printf("Building image: %s\n", imageTag)
|
log.Printf("Building image: %s\n", imageTag)
|
||||||
@@ -30,12 +37,9 @@ func Build() *cobra.Command {
|
|||||||
}
|
}
|
||||||
defer client.CleanUp()
|
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
|
return cmd
|
||||||
}
|
}
|
||||||
|
@@ -3,14 +3,13 @@ package tasks
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"log"
|
"log"
|
||||||
"os"
|
|
||||||
|
|
||||||
"dagger.io/dagger"
|
"dagger.io/dagger"
|
||||||
"git.front.kjuulh.io/kjuulh/byg"
|
"git.front.kjuulh.io/kjuulh/byg"
|
||||||
"git.front.kjuulh.io/kjuulh/dagger-go/internal"
|
"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)
|
log.Printf("building image: %s", imageTag)
|
||||||
|
|
||||||
client := builder.Dagger
|
client := builder.Dagger
|
||||||
@@ -31,36 +30,10 @@ func Build(builder *internal.Builder, imageTag string) error {
|
|||||||
return err
|
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 := 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{
|
_, err = golang.Exec(dagger.ContainerExecOpts{
|
||||||
Args: []string{"go", "build", "-o", "build/"},
|
Args: []string{"go", "build", "-o", "build/", buildPath},
|
||||||
}).ExitCode(ctx)
|
}).ExitCode(ctx)
|
||||||
|
|
||||||
return err
|
return err
|
||||||
|
Reference in New Issue
Block a user