feat(dagger): added build, test, and lint using dagger
This commit is contained in:
parent
206aebe832
commit
7746219c43
12 changed files with 1420 additions and 5 deletions
1
dagger/.gitattributes
vendored
Normal file
1
dagger/.gitattributes
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
/sdk/** linguist-generated
|
||||
3
dagger/.gitignore
vendored
Normal file
3
dagger/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
/sdk
|
||||
/**/node_modules/**
|
||||
/**/.pnpm-store/**
|
||||
8
dagger/package.json
Normal file
8
dagger/package.json
Normal 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
58
dagger/src/index.ts
Normal 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
11
dagger/tsconfig.json
Normal 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
1219
dagger/yarn.lock
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue