enso/tools/ci
Dmitry Bushev 56e3e1c991
Build Ydoc on CI (#11517)
close #11478

Changelog:
- add: `run release deploy-ydoc-polyglot` and `run release deploy-ydoc-nodejs` commands that build Ydoc Docker images and push them to ECR repository
- add: Ydoc native-image build for Linux PR checks
- update: CI release configuration to deploy (push to ECR repo) Ydoc Docker images during the Nightly and Release steps
2024-11-26 16:51:27 +00:00
..
artifact-test/repl Migrate the REPL to the New Server (#827) 2020-06-15 13:06:20 +02:00
docker Build Ydoc on CI (#11517) 2024-11-26 16:51:27 +00:00
nightly Format TS code (#10648) 2024-07-26 17:47:59 +10:00
releases Format TS code (#10648) 2024-07-26 17:47:59 +10:00
check-changelog.js Format TS code (#10648) 2024-07-26 17:47:59 +10:00
prepare-distribution-env.sh Add Python and R to the GraalVM Bundle (#1644) 2021-04-07 17:19:23 +03:00
README.md Build Ydoc on CI (#11517) 2024-11-26 16:51:27 +00:00
Test.enso Move Builtin Types and Methods to stdlib (#3363) 2022-05-05 20:18:06 +02:00

CI Tools

This folder contains miscellaneous utilities for CI.

Docker

Building

A custom docker image requires a certain number of directories to be present from a desired edition. The root directory of the docker build context can be provided in the docker build command:

docker build \
  -t runtime:latest \
  -f tools/ci/docker/engine/Dockerfile \
  --build-context docker-tools=tools/ci/docker/engine \
  built-distribution/enso-engine-0.0.0-dev-linux-amd64/enso-0.0.0-dev

Running

To start Language Server with a default configuration, run the built image and mount the project directory:

docker run -it --rm \
  --network=host \
  --mount type=bind,src=~/Documents/enso-projects/NewProject,dst=/volumes/workspace/project_root \
  runtime:latest

Ydoc Docker

Build Node.js container

To build a Node.js-based Ydoc, you need to first ensure that you have the distributable sources:

pnpm -r compile

the resulting artifacts are located in app/ydoc-server-nodejs/dist directory. Having the right Node.js sources in place, one can now build the docker image:

docker build -t ydoc-server-nodejs:latest -f tools/ci/docker/ydoc-server-nodejs/Dockerfile --build-context docker-tools=tools/ci/docker/ydoc-server-nodejs app/ydoc-server-nodejs

Build Native Image container

Build the Native Image:

sbt ydoc-server/buildNativeImage

Build the Docker image:

docker build -t ydoc-server-polyglot:latest --build-context native-image=lib/java/ydoc-server/target/native-image tools/ci/docker/ydoc-server-polyglot

Running

Both images ydoc-server-nodejs and ydoc-server-polyglot are started the same way:

  • PORT - the port number under which Ydoc will be available
  • HOSTNAME - the hostname under which Ydoc will be available
  • LANGUAGE_SERVER_URL - the full url (with port number) of the language server to connect to
docker run -it -e PORT=1234 -e HOSTNAME='0.0.0.0' -e LANGUAGE_SERVER_URL=ws://localhost:59876 ydoc-server-nodejs:latest

When correctly setup the network layer one can also hit Ydoc's healthcheck endpoint:

> curl http://${HOSTNAME}:${PORT}/_health
OK