docs: add simple Go guide
Signed-off-by: Tanguy ⧓ Herrmann <tanguy@dagger.io>
This commit is contained in:
parent
3750422a55
commit
f744996556
33
docs/guides/1228-go-ci.md
Normal file
33
docs/guides/1228-go-ci.md
Normal file
@ -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
|
||||
```
|
3
docs/plans/go-ci/hello/go.mod
Normal file
3
docs/plans/go-ci/hello/go.mod
Normal file
@ -0,0 +1,3 @@
|
||||
module dagger.io/testgreetci
|
||||
|
||||
go 1.17
|
7
docs/plans/go-ci/hello/greeting/greeting.go
Normal file
7
docs/plans/go-ci/hello/greeting/greeting.go
Normal file
@ -0,0 +1,7 @@
|
||||
package greeting
|
||||
|
||||
import "fmt"
|
||||
|
||||
func Greeting(name string) string {
|
||||
return fmt.Sprintf("Hi %s!", name)
|
||||
}
|
13
docs/plans/go-ci/hello/greeting/greeting_test.go
Normal file
13
docs/plans/go-ci/hello/greeting/greeting_test.go
Normal file
@ -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)
|
||||
}
|
||||
}
|
16
docs/plans/go-ci/hello/main.go
Normal file
16
docs/plans/go-ci/hello/main.go
Normal file
@ -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))
|
||||
}
|
24
docs/plans/go-ci/plan.cue
Normal file
24
docs/plans/go-ci/plan.cue
Normal file
@ -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
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user