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