build: add basic dagger pipeline
This commit is contained in:
parent
adfbe04d30
commit
96274de3ed
8 changed files with 130 additions and 0 deletions
1
.dagger/.gitattributes
vendored
Normal file
1
.dagger/.gitattributes
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
/sdk/** linguist-generated
|
||||
4
.dagger/.gitignore
vendored
Normal file
4
.dagger/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
/sdk
|
||||
/**/node_modules/**
|
||||
/**/.pnpm-store/**
|
||||
/.env
|
||||
25
.dagger/package-lock.json
generated
Normal file
25
.dagger/package-lock.json
generated
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
{
|
||||
"name": ".dagger",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"dependencies": {
|
||||
"typescript": "5.9.3"
|
||||
}
|
||||
},
|
||||
"node_modules/typescript": {
|
||||
"version": "5.9.3",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
|
||||
"integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
|
||||
"license": "Apache-2.0",
|
||||
"bin": {
|
||||
"tsc": "bin/tsc",
|
||||
"tsserver": "bin/tsserver"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.17"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
3
.dagger/package.json
Normal file
3
.dagger/package.json
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"type": "module"
|
||||
,"dependencies":{"typescript":"5.9.3"}}
|
||||
68
.dagger/src/index.ts
Normal file
68
.dagger/src/index.ts
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
import {
|
||||
dag,
|
||||
Container,
|
||||
Directory,
|
||||
File,
|
||||
object,
|
||||
func,
|
||||
argument,
|
||||
} from "@dagger.io/dagger";
|
||||
|
||||
const RUST_IMAGE = "rust:1.85";
|
||||
const WORKDIR = "/workspace";
|
||||
|
||||
@object()
|
||||
export class LineAndSurface {
|
||||
private baseRust(source: Directory): Container {
|
||||
return dag
|
||||
.container()
|
||||
.from(RUST_IMAGE)
|
||||
.withEnvVariable("CARGO_HOME", "/root/.cargo")
|
||||
.withMountedCache("/root/.cargo", dag.cacheVolume("cargo-cache"))
|
||||
.withMountedCache(
|
||||
`${WORKDIR}/target`,
|
||||
dag.cacheVolume("cargo-target"),
|
||||
)
|
||||
.withWorkdir(WORKDIR)
|
||||
.withDirectory(WORKDIR, source)
|
||||
.withExec(["cargo", "fetch", "--locked"]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Build the native desktop binary (release).
|
||||
*/
|
||||
@func()
|
||||
async nativeBuild(
|
||||
@argument({
|
||||
defaultPath: "/",
|
||||
ignore: [".git/**", ".dagger/**", "target/**", "node_modules/**"],
|
||||
})
|
||||
source: Directory,
|
||||
): Promise<File> {
|
||||
const ctr = this.baseRust(source)
|
||||
.withExec(["cargo", "build", "--release"])
|
||||
.withExec(["mkdir", "-p", "/out"])
|
||||
.withExec(["cp", "-v", `${WORKDIR}/target/release/las`, "/out/las"]);
|
||||
|
||||
return ctr.file("/out/las");
|
||||
}
|
||||
|
||||
/**
|
||||
* Build the web (wasm) bundle using Trunk.
|
||||
*/
|
||||
@func()
|
||||
async webBuild(
|
||||
@argument({
|
||||
defaultPath: "/",
|
||||
ignore: [".git/**", ".dagger/**", "target/**", "node_modules/**"],
|
||||
})
|
||||
source: Directory,
|
||||
): Promise<Directory> {
|
||||
const ctr = this.baseRust(source)
|
||||
.withExec(["rustup", "target", "add", "wasm32-unknown-unknown"])
|
||||
.withExec(["cargo", "install", "trunk"])
|
||||
.withExec(["trunk", "build", "--release", "--dist", "/out"]);
|
||||
|
||||
return ctr.directory("/out");
|
||||
}
|
||||
}
|
||||
13
.dagger/tsconfig.json
Normal file
13
.dagger/tsconfig.json
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"compilerOptions": {
|
||||
"target": "ES2022",
|
||||
"moduleResolution": "Node",
|
||||
"experimentalDecorators": true,
|
||||
"strict": true,
|
||||
"skipLibCheck": true,
|
||||
"paths": {
|
||||
"@dagger.io/dagger": ["./sdk/index.ts"],
|
||||
"@dagger.io/dagger/telemetry": ["./sdk/telemetry.ts"]
|
||||
}
|
||||
}
|
||||
}
|
||||
8
.dagger/yarn.lock
Normal file
8
.dagger/yarn.lock
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
|
||||
# yarn lockfile v1
|
||||
|
||||
|
||||
typescript@5.9.3:
|
||||
version "5.9.3"
|
||||
resolved "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz"
|
||||
integrity sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==
|
||||
8
dagger.json
Normal file
8
dagger.json
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"name": "line-and-surface",
|
||||
"engineVersion": "v0.19.10",
|
||||
"sdk": {
|
||||
"source": "typescript"
|
||||
},
|
||||
"source": ".dagger"
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue