371967f791
By using npm ci, we can make sure the versions of the helper libraries (e.g. Karma, Jasmine) we are testing with locally is the same as the versions we are using in the continuous integration system. The copying is needed because our docker recipe forces us to run as not root, and this was causing some issues. As a result, I changed the canvaskit test/perf to not re-use the same file as pathkit does so copying was easier and the dependencies between the two modules is broken. Bug: skia:11077 Change-Id: Ib05890d666d3507d4f724a4ae298484629c7932a Reviewed-on: https://skia-review.googlesource.com/c/skia/+/343503 Reviewed-by: Kevin Lubick <kjlubick@google.com>
108 lines
4.1 KiB
Markdown
108 lines
4.1 KiB
Markdown
Docker
|
|
======
|
|
|
|
Docker files to ease working with PathKit and CanvasKit.
|
|
|
|
emsdk-base
|
|
----------
|
|
|
|
This image has an Emscripten SDK environment that can be used for
|
|
compiling projects (e.g. Skia's PathKit) to WASM/asm.js.
|
|
|
|
This image tracks the official emscripten Docker image and installs
|
|
python 2 (which some of our scripts still use).
|
|
|
|
make publish_emsdk_base
|
|
|
|
For testing the image locally, the following flow can be helpful:
|
|
|
|
docker build -t emsdk-base ./emsdk-base/
|
|
# Run bash in it to poke around and make sure things are properly installed
|
|
docker run -it emsdk-base /bin/bash
|
|
# Compile PathKit with the local image
|
|
docker run -v $SKIA_ROOT:/SRC -v $SKIA_ROOT/out/dockerpathkit:/OUT emsdk-base /SRC/infra/pathkit/build_pathkit.sh
|
|
|
|
karma-chrome-tests
|
|
------------------
|
|
|
|
This image has Google Chrome and karma/jasmine installed on it, which can
|
|
be used to run JS tests.
|
|
|
|
This image is standalone and does not have any extra dependencies that make
|
|
it Skia-exclusive.
|
|
|
|
It gets manually pushed anytime there's an update to the Dockerfile or relevant
|
|
installed libraries.
|
|
|
|
make publish_karma_chrome_tests
|
|
|
|
Of note, some versions (generally before Chrome 60) run out of space on /dev/shm when
|
|
using the default Docker settings. To be safe, it is recommended to run the container
|
|
with the flag --shm-size=2gb.
|
|
|
|
For testing the image locally, the following can be helpful:
|
|
|
|
docker build -t karma-chrome-tests ./karma-chrome-tests/
|
|
# Run bash in it to poke around and make sure things are properly installed
|
|
docker run -it --shm-size=2gb karma-chrome-tests /bin/bash
|
|
# Run the tests (but not capturing Gold output) with the local source repo
|
|
docker run --shm-size=2gb -v $SKIA_ROOT:/SRC karma-chrome-tests karma start /SRC/infra/pathkit/karma-docker.conf.js --single-run
|
|
|
|
gold-karma-chrome-tests
|
|
------------------
|
|
|
|
This image has Google Chrome and karma/jasmine installed on it, which can
|
|
be used to run JS tests.
|
|
|
|
This image assumes the runner wants to collect the output images and JSON data
|
|
specific to Skia Infra's Gold tool (image correctness).
|
|
|
|
It gets manually pushed anytime there's an update to the Dockerfile or the parent
|
|
image (karma-chrome-tests).
|
|
|
|
# Run the following from $SKIA_ROOT/infra/pathkit
|
|
make publish_gold_karma_chrome_tests
|
|
|
|
Of note, some versions (generally before Chrome 60) run out of space on /dev/shm when
|
|
using the default Docker settings. To be safe, it is recommended to run the container
|
|
with the flag --shm-size=2gb.
|
|
|
|
For testing the image locally, the following can be helpful:
|
|
|
|
# Run the following from $SKIA_ROOT/infra/pathkit
|
|
make gold-docker-image
|
|
# Run bash in it to poke around and make sure things are properly installed
|
|
docker run -it --shm-size=2gb gold-karma-chrome-tests /bin/bash
|
|
# Run the tests and collect Gold output with the local source repo
|
|
mkdir -p -m 0777 /tmp/dockergold
|
|
docker run --shm-size=2gb -v $SKIA_ROOT:/SRC -v /tmp/dockergold:/OUT gold-karma-chrome-tests /SRC/infra/pathkit/test_pathkit.sh
|
|
|
|
perf-karma-chrome-tests
|
|
------------------
|
|
|
|
This image has Google Chrome and karma/jasmine installed on it, which can
|
|
be used to run JS tests.
|
|
|
|
This image assumes the runner wants to collect the output images and JSON data
|
|
specific to Skia Infra's Perf tool.
|
|
|
|
It gets manually pushed anytime there's an update to the Dockerfile or the parent
|
|
image (karma-chrome-tests).
|
|
|
|
# Run the following from $SKIA_ROOT/infra/pathkit
|
|
make publish_perf_karma_chrome_tests
|
|
|
|
Of note, some versions (generally before Chrome 60) run out of space on /dev/shm when
|
|
using the default Docker settings. To be safe, it is recommended to run the container
|
|
with the flag --shm-size=2gb.
|
|
|
|
For testing the image locally, the following can be helpful:
|
|
|
|
# Run the following from $SKIA_ROOT/infra/pathkit
|
|
make perf-docker-image
|
|
# Run bash in it to poke around and make sure things are properly installed
|
|
docker run -it --shm-size=2gb perf-karma-chrome-tests /bin/bash
|
|
# Run the tests and collect Perf output with the local source repo
|
|
mkdir -p -m 0777 /tmp/dockerperf
|
|
docker run --shm-size=2gb -v $SKIA_ROOT:/SRC -v /tmp/dockerperf:/OUT perf-karma-chrome-tests /SRC/infra/pathkit/perf_pathkit.sh
|