Merge pull request #2174 from dolanor/simple-go-guide

docs: add simple Go guide
This commit is contained in:
Tanguy ⧓ Herrmann 2022-04-14 16:27:56 +02:00 committed by GitHub
commit 8ef3b00b0f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 96 additions and 0 deletions

33
docs/guides/1229-go-ci.md Normal file
View File

@ -0,0 +1,33 @@
---
slug: /1229/go-ci
displayed_sidebar: '0.2'
---
# Testing and building a Go project
This guide explains how 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.Greeting()` out.
```go file=../plans/go-ci/hello/main.go title=hello/main.go
```
```go file=../plans/go-ci/hello/greeting/greeting.go title=hello/greeting/greeting.go
```
```go file=../plans/go-ci/hello/greeting/greeting_test.go title=hello/greeting/greeting_test.go
```

View File

@ -0,0 +1,3 @@
module dagger.io/testgreetci
go 1.17

View File

@ -0,0 +1,7 @@
package greeting
import "fmt"
func Greeting(name string) string {
return fmt.Sprintf("Hi %s!", name)
}

View 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)
}
}

View 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))
}

23
docs/plans/go-ci/plan.cue Normal file
View File

@ -0,0 +1,23 @@
package main
import (
"dagger.io/dagger"
"universe.dagger.io/go"
)
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
}
}
}

View File

@ -55,6 +55,7 @@ module.exports = {
"guides/pushing-plan-dependencies",
"guides/handling-outputs",
"guides/migrate-from-dagger-0.1",
"guides/go-ci",
],
},
{