Merge pull request #8544 from jtattermusch/test_javascript_aarch64

Test javascript on linux aarch64 (under qemu emulator)
pull/8545/head
Jan Tattermusch 4 years ago committed by GitHub
commit 5e84a6169c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 19
      kokoro/linux/aarch64/javascript_build_and_run_tests_with_qemu_aarch64.sh
  2. 29
      kokoro/linux/aarch64/test_javascript_aarch64.sh
  3. 16
      kokoro/linux/javascript_aarch64/build.sh
  4. 11
      kokoro/linux/javascript_aarch64/continuous.cfg
  5. 11
      kokoro/linux/javascript_aarch64/presubmit.cfg

@ -0,0 +1,19 @@
#!/bin/bash
set -ex
# install the same version of node as in /tests.sh
NODE_VERSION=node-v12.16.3-linux-arm64
NODE_TGZ="$NODE_VERSION.tar.gz"
pushd /tmp
curl -OL https://nodejs.org/dist/v12.16.3/$NODE_TGZ
tar zxvf $NODE_TGZ
export PATH=$PATH:`pwd`/$NODE_VERSION/bin
popd
# go to the repo root
cd $(dirname $0)/../../..
cd js
npm install
npm test

@ -0,0 +1,29 @@
#!/bin/bash
set -ex
# go to the repo root
cd $(dirname $0)/../../..
if [[ -t 0 ]]; then
DOCKER_TTY_ARGS="-it"
else
# The input device on kokoro is not a TTY, so -it does not work.
DOCKER_TTY_ARGS=
fi
# crosscompile protoc as we will later need it for the javascript build.
# we build it under the dockcross/manylinux2014-aarch64 image so that the resulting protoc binary is compatible
# with a wide range of linux distros (including any docker images we will use later to build and test javascript)
kokoro/linux/aarch64/dockcross_helpers/run_dockcross_manylinux2014_aarch64.sh kokoro/linux/aarch64/protoc_crosscompile_aarch64.sh
# use an actual aarch64 docker image (with a real aarch64 nodejs) to run build & test protobuf javascript under an emulator
# * mount the protobuf root as /work to be able to access the crosscompiled files
# * to avoid running the process inside docker as root (which can pollute the workspace with files owned by root), we force
# running under current user's UID and GID. To be able to do that, we need to provide a home directory for the user
# otherwise the UID would be homeless under the docker container and pip install wouldn't work. For simplicity,
# we just run map the user's home to a throwaway temporary directory
# Note that the docker image used for running the tests is arm64v8/openjdk, not arm64v8/node
# This is because some of the node tests require java to be available and adding node
# binary distribution into a java image is easier than vice versa.
docker run $DOCKER_TTY_ARGS --rm --user "$(id -u):$(id -g)" -e "HOME=/home/fake-user" -v "$(mktemp -d):/home/fake-user" -v "$(pwd)":/work -w /work arm64v8/openjdk:11-jdk-buster kokoro/linux/aarch64/javascript_build_and_run_tests_with_qemu_aarch64.sh

@ -0,0 +1,16 @@
#!/bin/bash
#
# This is the top-level script we give to Kokoro as the entry point for
# running the "continuous" and "presubmit" jobs.
set -ex
# Change to repo root
cd $(dirname $0)/../../..
# Initialize any submodules.
git submodule update --init --recursive
kokoro/linux/aarch64/qemu_helpers/prepare_qemu.sh
kokoro/linux/aarch64/test_javascript_aarch64.sh

@ -0,0 +1,11 @@
# Config file for running tests in Kokoro
# Location of the build script in repository
build_file: "protobuf/kokoro/linux/javascript_aarch64/build.sh"
timeout_mins: 120
action {
define_artifacts {
regex: "**/sponge_log.xml"
}
}

@ -0,0 +1,11 @@
# Config file for running tests in Kokoro
# Location of the build script in repository
build_file: "protobuf/kokoro/linux/javascript_aarch64/build.sh"
timeout_mins: 120
action {
define_artifacts {
regex: "**/sponge_log.xml"
}
}
Loading…
Cancel
Save