diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index ab3b2934c3c9bb1d65c0b11a9a75219072a2f547..26d51decb6e82f644672c2f8aec6dd0548639cda 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -21,7 +21,10 @@ autoupdate:
   - git clone --depth 1 --branch ${UPSTREAM_VERSION} https://github.com/RocketChat/Rocket.Chat rocketchat
   - NODEJS_VERSION="$(jq -r .engines.node rocketchat/package.json)"
   - METEOR_VERSION="$(cut -d@ -f2 rocketchat/apps/meteor/.meteor/release)"
-  - wget -q "https://deb.nodesource.com/node_14.x/pool/main/n/nodejs/nodejs_${NODEJS_VERSION}-deb-1nodesource1_amd64.deb" -O nodejs.deb
+  - echo "NODEJS_VERSION ${NODEJS_VERSION}"
+  - echo "METEOR_VERSION ${METEOR_VERSION}"
+  # TODO: make node_20.x depending on major node version
+  - wget -q "https://deb.nodesource.com/node_20.x/pool/main/n/nodejs/nodejs_${NODEJS_VERSION}-1nodesource1_amd64.deb" -O nodejs.deb
   - apt-get -qq install ./nodejs.deb
   # NodeJS < 14.9.0 did not contain corepack
   - test -e /usr/bin/corepack || npm install -g corepack
@@ -35,6 +38,14 @@ autoupdate:
   - export METEOR_ALLOW_SUPERUSER=true
   - export PATH=$PATH:/root/.meteor
   - meteor --version
+  # TODO: we may want to make deno version dynamic
+  - wget -q "https://github.com/denoland/deno/releases/download/v2.1.6/deno-x86_64-unknown-linux-gnu.zip" -O deno.zip
+  - mkdir -p ~/.deno/bin/
+  - unzip -d ~/.deno/bin -o deno.zip
+  - chmod +x ~/.deno/bin/deno
+  - rm deno.zip
+  - export PATH=$PATH:/root/.deno/bin/
+  - deno --version
   - cd rocketchat && YARN_CHECKSUM_BEHAVIOR=update yarn install --json && git diff yarn.lock && cd ..
   # yarn build:ci uses hard-coded /tmp/dist directory for build output
   - cd rocketchat && yarn build:ci --env-mode=loose && cd .. && mv /tmp/dist ./build