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