From f744996556604f5de0d6113257f7807bb084337a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tanguy=20=E2=A7=93=20Herrmann?= Date: Wed, 13 Apr 2022 16:30:28 +0200 Subject: [PATCH] docs: add simple Go guide MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Tanguy ⧓ Herrmann --- docs/guides/1228-go-ci.md | 33 +++++++++++++++++++ docs/plans/go-ci/hello/go.mod | 3 ++ docs/plans/go-ci/hello/greeting/greeting.go | 7 ++++ .../go-ci/hello/greeting/greeting_test.go | 13 ++++++++ docs/plans/go-ci/hello/main.go | 16 +++++++++ docs/plans/go-ci/plan.cue | 24 ++++++++++++++ 6 files changed, 96 insertions(+) create mode 100644 docs/guides/1228-go-ci.md create mode 100644 docs/plans/go-ci/hello/go.mod create mode 100644 docs/plans/go-ci/hello/greeting/greeting.go create mode 100644 docs/plans/go-ci/hello/greeting/greeting_test.go create mode 100644 docs/plans/go-ci/hello/main.go create mode 100644 docs/plans/go-ci/plan.cue diff --git a/docs/guides/1228-go-ci.md b/docs/guides/1228-go-ci.md new file mode 100644 index 00000000..2ee0d624 --- /dev/null +++ b/docs/guides/1228-go-ci.md @@ -0,0 +1,33 @@ +--- +slug: /1227/go-ci +displayed_sidebar: europa +--- + +# Go project CI + +We want to run some tests and build a Go project with the `go` cue package. + +## Plan + +The plan consist of 2 actions: + +- `test` for `go test` +- `build` for `go build` + +both use the [Go dagger package](https://github.com/dagger/dagger/tree/main/pkg/universe.dagger.io/go) + +```cue file=../plans/go-ci/plan.cue +``` + +## Go project + +The project is a simple program that takes `$NAME` environment variable, use the [Go greeting package](https://github.com/dagger/dagger/tree/main/docs/plans/go-ci/hello/greeting) to print the `greeting.Greet()` out. + +```go file=../plans/go-ci/hello/main.go +``` + +```go file=../plans/go-ci/hello/greeting/greeting.go +``` + +```go file=../plans/go-ci/hello/greeting/greeting_test.go +``` diff --git a/docs/plans/go-ci/hello/go.mod b/docs/plans/go-ci/hello/go.mod new file mode 100644 index 00000000..58103bd2 --- /dev/null +++ b/docs/plans/go-ci/hello/go.mod @@ -0,0 +1,3 @@ +module dagger.io/testgreetci + +go 1.17 diff --git a/docs/plans/go-ci/hello/greeting/greeting.go b/docs/plans/go-ci/hello/greeting/greeting.go new file mode 100644 index 00000000..b830aabf --- /dev/null +++ b/docs/plans/go-ci/hello/greeting/greeting.go @@ -0,0 +1,7 @@ +package greeting + +import "fmt" + +func Greeting(name string) string { + return fmt.Sprintf("Hi %s!", name) +} diff --git a/docs/plans/go-ci/hello/greeting/greeting_test.go b/docs/plans/go-ci/hello/greeting/greeting_test.go new file mode 100644 index 00000000..f2f2d812 --- /dev/null +++ b/docs/plans/go-ci/hello/greeting/greeting_test.go @@ -0,0 +1,13 @@ +package greeting + +import "testing" + +func TestGreeting(t *testing.T) { + name := "Dagger Test" + expect := "Hi Dagger Test!" + value := Greeting(name) + + if expect != value { + t.Fatalf("Hello(%s) = '%s', expected '%s'", name, value, expect) + } +} diff --git a/docs/plans/go-ci/hello/main.go b/docs/plans/go-ci/hello/main.go new file mode 100644 index 00000000..a18f5487 --- /dev/null +++ b/docs/plans/go-ci/hello/main.go @@ -0,0 +1,16 @@ +package main + +import ( + "fmt" + "os" + + "dagger.io/testgreetci/greeting" +) + +func main() { + name := os.Getenv("NAME") + if name == "" { + name = "John Doe" + } + fmt.Printf(greeting.Greeting(name)) +} diff --git a/docs/plans/go-ci/plan.cue b/docs/plans/go-ci/plan.cue new file mode 100644 index 00000000..25c394ce --- /dev/null +++ b/docs/plans/go-ci/plan.cue @@ -0,0 +1,24 @@ +package main + +import ( + "dagger.io/dagger" + + "universe.dagger.io/go" + //"universe.dagger.io/bash" +) + +dagger.#Plan & { + client: filesystem: "./hello": read: contents: dagger.#FS + + actions: { + test: go.#Test & { + source: client.filesystem."./hello".read.contents + package: "./..." + } + + build: go.#Build & { + source: client.filesystem."./hello".read.contents + } + } + +}