xref: /aosp_15_r20/external/skia/infra/wasm-common/docker/README.md (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard WorkerDocker
2*c8dee2aaSAndroid Build Coastguard Worker======
3*c8dee2aaSAndroid Build Coastguard Worker
4*c8dee2aaSAndroid Build Coastguard WorkerDocker files to ease working with PathKit and CanvasKit.
5*c8dee2aaSAndroid Build Coastguard Worker
6*c8dee2aaSAndroid Build Coastguard Workeremsdk-base
7*c8dee2aaSAndroid Build Coastguard Worker----------
8*c8dee2aaSAndroid Build Coastguard Worker
9*c8dee2aaSAndroid Build Coastguard WorkerThis image has an Emscripten SDK environment that can be used for
10*c8dee2aaSAndroid Build Coastguard Workercompiling projects (e.g. Skia's PathKit) to WASM/asm.js.
11*c8dee2aaSAndroid Build Coastguard Worker
12*c8dee2aaSAndroid Build Coastguard WorkerThis image tracks the official emscripten Docker image and installs
13*c8dee2aaSAndroid Build Coastguard Workerpython 2 (which some of our scripts still use).
14*c8dee2aaSAndroid Build Coastguard Worker
15*c8dee2aaSAndroid Build Coastguard Worker    make publish_emsdk_base
16*c8dee2aaSAndroid Build Coastguard Worker
17*c8dee2aaSAndroid Build Coastguard WorkerFor testing the image locally, the following flow can be helpful:
18*c8dee2aaSAndroid Build Coastguard Worker
19*c8dee2aaSAndroid Build Coastguard Worker    docker build -t emsdk-base ./emsdk-base/
20*c8dee2aaSAndroid Build Coastguard Worker    # Run bash in it to poke around and make sure things are properly installed
21*c8dee2aaSAndroid Build Coastguard Worker    docker run -it emsdk-base /bin/bash
22*c8dee2aaSAndroid Build Coastguard Worker    # Compile PathKit with the local image
23*c8dee2aaSAndroid Build Coastguard Worker    docker run -v $SKIA_ROOT:/SRC -v $SKIA_ROOT/out/dockerpathkit:/OUT emsdk-base /SRC/infra/pathkit/build_pathkit.sh
24*c8dee2aaSAndroid Build Coastguard Worker
25*c8dee2aaSAndroid Build Coastguard Workerkarma-chrome-tests
26*c8dee2aaSAndroid Build Coastguard Worker------------------
27*c8dee2aaSAndroid Build Coastguard Worker
28*c8dee2aaSAndroid Build Coastguard WorkerThis image has Google Chrome and karma/jasmine installed on it, which can
29*c8dee2aaSAndroid Build Coastguard Workerbe used to run JS tests.
30*c8dee2aaSAndroid Build Coastguard Worker
31*c8dee2aaSAndroid Build Coastguard WorkerThis image is standalone and does not have any extra dependencies that make
32*c8dee2aaSAndroid Build Coastguard Workerit Skia-exclusive.
33*c8dee2aaSAndroid Build Coastguard Worker
34*c8dee2aaSAndroid Build Coastguard WorkerIt gets manually pushed anytime there's an update to the Dockerfile or relevant
35*c8dee2aaSAndroid Build Coastguard Workerinstalled libraries.
36*c8dee2aaSAndroid Build Coastguard Worker
37*c8dee2aaSAndroid Build Coastguard Worker    make publish_karma_chrome_tests
38*c8dee2aaSAndroid Build Coastguard Worker
39*c8dee2aaSAndroid Build Coastguard WorkerOf note, some versions (generally before Chrome 60) run out of space on /dev/shm when
40*c8dee2aaSAndroid Build Coastguard Workerusing the default Docker settings.  To be safe, it is recommended to run the container
41*c8dee2aaSAndroid Build Coastguard Workerwith the flag --shm-size=2gb.
42*c8dee2aaSAndroid Build Coastguard Worker
43*c8dee2aaSAndroid Build Coastguard WorkerFor testing the image locally, the following can be helpful:
44*c8dee2aaSAndroid Build Coastguard Worker
45*c8dee2aaSAndroid Build Coastguard Worker    docker build -t karma-chrome-tests ./karma-chrome-tests/
46*c8dee2aaSAndroid Build Coastguard Worker    # Run bash in it to poke around and make sure things are properly installed
47*c8dee2aaSAndroid Build Coastguard Worker    docker run -it --shm-size=2gb karma-chrome-tests /bin/bash
48*c8dee2aaSAndroid Build Coastguard Worker    # Run the tests (but not capturing Gold output) with the local source repo
49*c8dee2aaSAndroid Build Coastguard Worker    docker run --shm-size=2gb -v $SKIA_ROOT:/SRC karma-chrome-tests karma start /SRC/infra/pathkit/karma-docker.conf.js --single-run
50*c8dee2aaSAndroid Build Coastguard Worker
51*c8dee2aaSAndroid Build Coastguard Workergold-karma-chrome-tests
52*c8dee2aaSAndroid Build Coastguard Worker------------------
53*c8dee2aaSAndroid Build Coastguard Worker
54*c8dee2aaSAndroid Build Coastguard WorkerThis image has Google Chrome and karma/jasmine installed on it, which can
55*c8dee2aaSAndroid Build Coastguard Workerbe used to run JS tests.
56*c8dee2aaSAndroid Build Coastguard Worker
57*c8dee2aaSAndroid Build Coastguard WorkerThis image assumes the runner wants to collect the output images and JSON data
58*c8dee2aaSAndroid Build Coastguard Workerspecific to Skia Infra's Gold tool (image correctness).
59*c8dee2aaSAndroid Build Coastguard Worker
60*c8dee2aaSAndroid Build Coastguard WorkerIt gets manually pushed anytime there's an update to the Dockerfile or the parent
61*c8dee2aaSAndroid Build Coastguard Workerimage (karma-chrome-tests).
62*c8dee2aaSAndroid Build Coastguard Worker
63*c8dee2aaSAndroid Build Coastguard Worker    # Run the following from $SKIA_ROOT/infra/pathkit
64*c8dee2aaSAndroid Build Coastguard Worker    make publish_gold_karma_chrome_tests
65*c8dee2aaSAndroid Build Coastguard Worker
66*c8dee2aaSAndroid Build Coastguard WorkerOf note, some versions (generally before Chrome 60) run out of space on /dev/shm when
67*c8dee2aaSAndroid Build Coastguard Workerusing the default Docker settings.  To be safe, it is recommended to run the container
68*c8dee2aaSAndroid Build Coastguard Workerwith the flag --shm-size=2gb.
69*c8dee2aaSAndroid Build Coastguard Worker
70*c8dee2aaSAndroid Build Coastguard WorkerFor testing the image locally, the following can be helpful:
71*c8dee2aaSAndroid Build Coastguard Worker
72*c8dee2aaSAndroid Build Coastguard Worker    # Run the following from $SKIA_ROOT/infra/pathkit
73*c8dee2aaSAndroid Build Coastguard Worker    make gold-docker-image
74*c8dee2aaSAndroid Build Coastguard Worker    # Run bash in it to poke around and make sure things are properly installed
75*c8dee2aaSAndroid Build Coastguard Worker    docker run -it --shm-size=2gb gold-karma-chrome-tests /bin/bash
76*c8dee2aaSAndroid Build Coastguard Worker    # Run the tests and collect Gold output with the local source repo
77*c8dee2aaSAndroid Build Coastguard Worker    mkdir -p -m 0777 /tmp/dockergold
78*c8dee2aaSAndroid Build Coastguard Worker    docker run --shm-size=2gb -v $SKIA_ROOT:/SRC -v /tmp/dockergold:/OUT gold-karma-chrome-tests /SRC/infra/pathkit/test_pathkit.sh
79*c8dee2aaSAndroid Build Coastguard Worker
80*c8dee2aaSAndroid Build Coastguard Workerperf-karma-chrome-tests
81*c8dee2aaSAndroid Build Coastguard Worker------------------
82*c8dee2aaSAndroid Build Coastguard Worker
83*c8dee2aaSAndroid Build Coastguard WorkerThis image has Google Chrome and karma/jasmine installed on it, which can
84*c8dee2aaSAndroid Build Coastguard Workerbe used to run JS tests.
85*c8dee2aaSAndroid Build Coastguard Worker
86*c8dee2aaSAndroid Build Coastguard WorkerThis image assumes the runner wants to collect the output images and JSON data
87*c8dee2aaSAndroid Build Coastguard Workerspecific to Skia Infra's Perf tool.
88*c8dee2aaSAndroid Build Coastguard Worker
89*c8dee2aaSAndroid Build Coastguard WorkerIt gets manually pushed anytime there's an update to the Dockerfile or the parent
90*c8dee2aaSAndroid Build Coastguard Workerimage (karma-chrome-tests).
91*c8dee2aaSAndroid Build Coastguard Worker
92*c8dee2aaSAndroid Build Coastguard Worker    # Run the following from $SKIA_ROOT/infra/pathkit
93*c8dee2aaSAndroid Build Coastguard Worker    make publish_perf_karma_chrome_tests
94*c8dee2aaSAndroid Build Coastguard Worker
95*c8dee2aaSAndroid Build Coastguard WorkerOf note, some versions (generally before Chrome 60) run out of space on /dev/shm when
96*c8dee2aaSAndroid Build Coastguard Workerusing the default Docker settings.  To be safe, it is recommended to run the container
97*c8dee2aaSAndroid Build Coastguard Workerwith the flag --shm-size=2gb.
98*c8dee2aaSAndroid Build Coastguard Worker
99*c8dee2aaSAndroid Build Coastguard WorkerFor testing the image locally, the following can be helpful:
100*c8dee2aaSAndroid Build Coastguard Worker
101*c8dee2aaSAndroid Build Coastguard Worker    # Run the following from $SKIA_ROOT/infra/pathkit
102*c8dee2aaSAndroid Build Coastguard Worker    make perf-docker-image
103*c8dee2aaSAndroid Build Coastguard Worker    # Run bash in it to poke around and make sure things are properly installed
104*c8dee2aaSAndroid Build Coastguard Worker    docker run -it --shm-size=2gb perf-karma-chrome-tests /bin/bash
105*c8dee2aaSAndroid Build Coastguard Worker    # Run the tests and collect Perf output with the local source repo
106*c8dee2aaSAndroid Build Coastguard Worker    mkdir -p -m 0777 /tmp/dockerperf
107*c8dee2aaSAndroid Build Coastguard Worker    docker run --shm-size=2gb -v $SKIA_ROOT:/SRC -v /tmp/dockerperf:/OUT perf-karma-chrome-tests /SRC/infra/pathkit/perf_pathkit.sh
108