DodoApp: Add Deno 2.2.0 support
Change-Id: I3e683cda2dd18e9a3dce87b8eb1f65ea11dd5f14
diff --git a/apps/app-runner/Dockerfile.deno.2.2.0 b/apps/app-runner/Dockerfile.deno.2.2.0
new file mode 100644
index 0000000..bc2014e
--- /dev/null
+++ b/apps/app-runner/Dockerfile.deno.2.2.0
@@ -0,0 +1,5 @@
+FROM denoland/deno:alpine-2.2.0
+
+ARG TARGETARCH
+
+COPY app-runner_${TARGETARCH} /usr/bin/app-runner
diff --git a/apps/app-runner/Makefile b/apps/app-runner/Makefile
index 72fcb79..356ce28 100644
--- a/apps/app-runner/Makefile
+++ b/apps/app-runner/Makefile
@@ -8,6 +8,7 @@
manifest_dest_hugo_latest=docker://docker.io/$(repo_name)/app-runner:hugo-latest
manifest_dest_php_8_2_apache=docker://docker.io/$(repo_name)/app-runner:php-8.2-apache
manifest_dest_nextjs_deno_2_0_0=docker://docker.io/$(repo_name)/app-runner:nextjs-deno-2.0.0
+manifest_dest_deno_2_2_0=docker://docker.io/$(repo_name)/app-runner:deno-2.2.0
manifest_dest_nodejs_23_1_0=docker://docker.io/$(repo_name)/app-runner:nodejs-23.1.0
endif
@@ -132,5 +133,21 @@
$(podman) manifest create $(repo_name)/app-runner:nodejs-23.1.0 $(repo_name)/app-runner:nodejs-23.1.0-arm64 $(repo_name)/app-runner:nodejs-23.1.0-amd64
$(podman) manifest push --purge $(repo_name)/app-runner:nodejs-23.1.0 $(manifest_dest_nodejs_23_1_0)
+# Deno
+
+push_deno_2_2_0_arm64: clean build_arm64
+ $(podman) build --platform linux/arm64 --tag=$(repo_name)/app-runner_deno-2.2.0-arm64 -f Dockerfile.deno.2.2.0 $(docker_flags) .
+ $(podman) push $(repo_name)/app-runner_deno-2.2.0-arm64
+
+push_deno_2_2_0_amd64: clean build_amd64
+ $(podman) build --platform linux/amd64 --tag=$(repo_name)/app-runner_deno-2.2.0-amd64 -f Dockerfile.deno.2.2.0 $(docker_flags) .
+ $(podman) push $(repo_name)/app-runner_deno-2.2.0-amd64
+
+push_deno_2_2_0: push_deno_2_2_0_arm64 push_deno_2_2_0_amd64
+ $(podman) manifest create $(repo_name)/app-runner_deno-2.2.0 $(repo_name)/app-runner_deno-2.2.0-arm64 $(repo_name)/app-runner_deno-2.2.0-amd64
+ $(podman) manifest push $(repo_name)/app-runner_deno-2.2.0 $(manifest_dest_deno_2_2_0)
+ $(podman) manifest rm $(repo_name)/app-runner_deno-2.2.0
+
+
# all
-push: push_golang_1_22_0 push_golang_1_20_0 push_hugo push_php_8_2_apache push_nextjs_deno_2_0_0 push_nodejs_23_1_0
+push: push_golang_1_22_0 push_golang_1_20_0 push_hugo push_php_8_2_apache push_nextjs_deno_2_0_0 push_nodejs_23_1_0 push_deno_2_0_0
diff --git a/core/installer/app_configs/dodo_app.cue b/core/installer/app_configs/dodo_app.cue
index 28eedd1..5b538a8 100644
--- a/core/installer/app_configs/dodo_app.cue
+++ b/core/installer/app_configs/dodo_app.cue
@@ -326,6 +326,54 @@
#NextjsApp: #NextjsDeno2AppTmpl
+// Deno
+
+#Deno_2_2_0_AppTmpl: #AppTmpl & {
+ type: "deno:2.2.0"
+ apiPort: 2000
+ ports: [...#Port] | *[{
+ name: "web"
+ value: 3000
+ }]
+ rootDir: _appDir
+ preBuildCommands: [...#Command] | *[]
+
+ lastCmdEnv: [...string]
+
+ runConfiguration: [{
+ bin: "/usr/bin/deno"
+ args: ["install"]
+ },
+ for c in preBuildCommands {
+ {
+ bin: c.bin
+ args: c.args
+ env: list.Concat([lastCmdEnv, c.env])
+ }
+ },
+ {
+ bin: "/usr/bin/deno"
+ args: ["task", "build"]
+ env: lastCmdEnv
+ }, {
+ bin: "/usr/bin/deno"
+ args: ["task", "start"]
+ env: lastCmdEnv
+ }]
+
+ vm: {
+ env: [
+ "export PATH=$PATH:/usr/local/deno/bin",
+ ]
+ cloudInit: runCmd: [
+ ["sh", "-c", "apt-get install -y npm unzip"],
+ ["sh", "-c", "curl -fsSL https://deno.land/install.sh | DENO_INSTALL=/usr/local/deno sh -s -- -y --no-modify-path"],
+ ]
+ }
+}
+
+#DenoApp: #Deno_2_2_0_AppTmpl
+
// NodeJS
#NodeJSAppTmpl: #AppTmpl & {
@@ -378,7 +426,7 @@
#NodeJSApp: #NodeJS2310
-#App: #GoApp | #HugoApp | #PHPApp | #NextjsApp | #NodeJSApp
+#App: #GoApp | #HugoApp | #PHPApp | #NextjsApp | #NodeJSApp | #DenoApp
service: [...#App]