feat(dagger): added build, test, and lint using dagger

This commit is contained in:
Patrick Sy 2024-10-14 13:01:06 +02:00
parent 206aebe832
commit 7746219c43
Signed by: Patrick.Sy
GPG key ID: DDDC8EC51823195E
12 changed files with 1420 additions and 5 deletions

1
dagger/.gitattributes vendored Normal file
View file

@ -0,0 +1 @@
/sdk/** linguist-generated

3
dagger/.gitignore vendored Normal file
View file

@ -0,0 +1,3 @@
/sdk
/**/node_modules/**
/**/.pnpm-store/**

8
dagger/package.json Normal file
View file

@ -0,0 +1,8 @@
{
"type": "module",
"dependencies": {
"typescript": "^5.5.4",
"@dagger.io/dagger": "./sdk"
},
"packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e"
}

58
dagger/src/index.ts Normal file
View file

@ -0,0 +1,58 @@
/**
* Dagger build and deploy functions
*/
import { dag, Container, Directory, object, func } from "@dagger.io/dagger";
@object()
class HelloDagger {
/**
* Return the result of running unit tests
*/
@func()
build(source: Directory): Container {
const executable = this.buildEnv(source)
.withExec(["go", "build"])
.file("./helloworld");
return dag
.container()
.from("ubuntu:latest")
.withFile("/usr/bin/helloworld", executable)
.withExposedPort(9000)
.withEntrypoint(["helloworld"]);
}
/**
* Return the result of running unit tests
*/
@func()
async test(source: Directory): Promise<string> {
return this.buildEnv(source).withExec(["go", "test"]).stdout();
}
/**
* Build a ready-to-use development environment
*/
@func()
lint(source: Directory): Container {
return dag
.container()
.from("golangci/golangci-lint:v1.61.0")
.withDirectory("/src", source)
.withWorkdir("/src")
.withExec(["golangci-lint", "run", "-v"])
;
}
/**
* Build a ready-to-use development environment
*/
@func()
buildEnv(source: Directory): Container {
return dag
.container()
.from("golang:1.23")
.withDirectory("/src", source)
.withWorkdir("/src");
}
}

11
dagger/tsconfig.json Normal file
View file

@ -0,0 +1,11 @@
{
"compilerOptions": {
"target": "ES2022",
"moduleResolution": "Node",
"experimentalDecorators": true,
"paths": {
"@dagger.io/dagger": ["./sdk"],
"@dagger.io/dagger/telemetry": ["./sdk/telemetry"]
}
}
}

1219
dagger/yarn.lock Normal file

File diff suppressed because it is too large Load diff