Alter Dockerfiles to include common.go and use a prebuilt JDK.
After the refactoring of the proctor binaries, the Dockerfiles for each language must be altered to copy the common folder into their image. Additionally, Java has been changed to use the pre-built version of JDK-11 from Ubuntu, instead of building it from the source. This allows for a smaller image and faster test execution within the container. PiperOrigin-RevId: 261805158
This commit is contained in:
parent
23e740433d
commit
fb996668e4
|
@ -16,7 +16,7 @@ The following runtimes are currently supported:
|
|||
|
||||
1) [Install and configure Docker](https://docs.docker.com/install/)
|
||||
|
||||
2) Build each Docker container:
|
||||
2) Build each Docker container from the runtimes directory:
|
||||
|
||||
```bash
|
||||
$ docker build -f $LANG/Dockerfile [-t $NAME] .
|
||||
|
|
|
@ -23,9 +23,12 @@ ENV LANG_DIR=${GOROOT}
|
|||
|
||||
WORKDIR ${LANG_DIR}/src
|
||||
RUN ./make.bash
|
||||
# Pre-compile the tests for faster execution
|
||||
RUN ["/root/go/bin/go", "tool", "dist", "test", "-compile-only"]
|
||||
|
||||
WORKDIR ${LANG_DIR}
|
||||
|
||||
COPY proctor-go.go ${LANG_DIR}
|
||||
COPY common /root/go/src/gvisor.dev/gvisor/test/runtimes/common/common
|
||||
COPY go/proctor-go.go ${LANG_DIR}
|
||||
|
||||
ENTRYPOINT ["/root/go/bin/go", "run", "proctor-go.go"]
|
||||
|
|
|
@ -1,25 +1,16 @@
|
|||
FROM ubuntu:bionic
|
||||
# This hash is associated with a specific JDK release and needed for ensuring
|
||||
# the same version is downloaded every time.
|
||||
ENV LANG_HASH=af47e0398606
|
||||
ENV LANG_VER=11u-dev
|
||||
ENV LANG_HASH=76072a077ee1
|
||||
ENV LANG_VER=11
|
||||
ENV LANG_NAME=Java
|
||||
|
||||
RUN apt-get update && apt-get install -y \
|
||||
autoconf \
|
||||
build-essential \
|
||||
curl\
|
||||
file \
|
||||
libasound2-dev \
|
||||
libcups2-dev \
|
||||
libfontconfig1-dev \
|
||||
libx11-dev \
|
||||
libxext-dev \
|
||||
libxrandr-dev \
|
||||
libxrender-dev \
|
||||
libxt-dev \
|
||||
libxtst-dev \
|
||||
curl \
|
||||
make \
|
||||
openjdk-${LANG_VER}-jdk \
|
||||
unzip \
|
||||
zip
|
||||
|
||||
|
@ -27,26 +18,18 @@ WORKDIR /root
|
|||
RUN curl -o go.tar.gz https://dl.google.com/go/go1.12.6.linux-amd64.tar.gz
|
||||
RUN tar -zxf go.tar.gz
|
||||
|
||||
# Use curl instead of ADD to prevent redownload every time.
|
||||
RUN curl -o jdk.tar.gz http://hg.openjdk.java.net/jdk-updates/jdk${LANG_VER}/archive/${LANG_HASH}.tar.gz
|
||||
# Download Java version N-1 to be used as the Boot JDK to build Java version N.
|
||||
RUN curl -o bootjdk.tar.gz https://download.java.net/openjdk/jdk10/ri/openjdk-10+44_linux-x64_bin_ri.tar.gz
|
||||
|
||||
RUN tar -zxf jdk.tar.gz
|
||||
RUN tar -zxf bootjdk.tar.gz
|
||||
|
||||
# Specify the JDK to be used by jtreg.
|
||||
ENV JT_JAVA=/root/jdk${LANG_VER}-${LANG_HASH}/build/linux-x86_64-normal-server-release/jdk
|
||||
ENV LANG_DIR=/root/jdk${LANG_VER}-${LANG_HASH}
|
||||
|
||||
WORKDIR ${LANG_DIR}
|
||||
# Download the JDK test library.
|
||||
RUN set -ex \
|
||||
&& curl -fsSL --retry 10 -o /tmp/jdktests.tar.gz http://hg.openjdk.java.net/jdk/jdk${LANG_VER}/archive/${LANG_HASH}.tar.gz/test \
|
||||
&& tar -xzf /tmp/jdktests.tar.gz -C /root \
|
||||
&& rm -f /tmp/jdktests.tar.gz
|
||||
|
||||
RUN curl -o jtreg.tar.gz https://ci.adoptopenjdk.net/view/Dependencies/job/jtreg/lastSuccessfulBuild/artifact/jtreg-4.2.0-tip.tar.gz
|
||||
RUN tar -xzf jtreg.tar.gz
|
||||
RUN bash configure --with-boot-jdk=/root/jdk-10 --with-jtreg=${LANG_DIR}/jtreg
|
||||
RUN make clean
|
||||
RUN make images
|
||||
|
||||
COPY proctor-java.go ${LANG_DIR}
|
||||
ENV LANG_DIR=/root
|
||||
|
||||
COPY common /root/go/src/gvisor.dev/gvisor/test/runtimes/common/common
|
||||
COPY java/proctor-java.go ${LANG_DIR}
|
||||
|
||||
ENTRYPOINT ["/root/go/bin/go", "run", "proctor-java.go"]
|
||||
|
|
|
@ -29,6 +29,7 @@ import (
|
|||
|
||||
var (
|
||||
dir = os.Getenv("LANG_DIR")
|
||||
hash = os.Getenv("LANG_HASH")
|
||||
jtreg = filepath.Join(dir, "jtreg/bin/jtreg")
|
||||
exclDirs = regexp.MustCompile(`(^(sun\/security)|(java\/util\/stream)|(java\/time)| )`)
|
||||
)
|
||||
|
@ -44,7 +45,7 @@ func main() {
|
|||
|
||||
func (j javaRunner) ListTests() ([]string, error) {
|
||||
args := []string{
|
||||
"-dir:test/jdk",
|
||||
"-dir:/root/jdk11-" + hash + "/test/jdk",
|
||||
"-ignore:quiet",
|
||||
"-a",
|
||||
"-listtests",
|
||||
|
@ -69,7 +70,7 @@ func (j javaRunner) ListTests() ([]string, error) {
|
|||
}
|
||||
|
||||
func (j javaRunner) RunTest(test string) error {
|
||||
args := []string{"-dir:test/jdk/", test}
|
||||
args := []string{"-noreport", "-dir:/root/jdk11-" + hash + "/test/jdk", test}
|
||||
cmd := exec.Command(jtreg, args...)
|
||||
cmd.Stdout, cmd.Stderr = os.Stdout, os.Stderr
|
||||
if err := cmd.Run(); err != nil {
|
||||
|
|
|
@ -22,7 +22,8 @@ RUN ./configure
|
|||
RUN make
|
||||
RUN make test-build
|
||||
|
||||
COPY proctor-nodejs.go ${LANG_DIR}
|
||||
COPY common /root/go/src/gvisor.dev/gvisor/test/runtimes/common/common
|
||||
COPY nodejs/proctor-nodejs.go ${LANG_DIR}
|
||||
|
||||
# Including dumb-init emulates the Linux "init" process, preventing the failure
|
||||
# of tests involving worker processes.
|
||||
|
|
|
@ -24,6 +24,7 @@ WORKDIR ${LANG_DIR}
|
|||
RUN ./configure
|
||||
RUN make
|
||||
|
||||
COPY proctor-php.go ${LANG_DIR}
|
||||
COPY common /root/go/src/gvisor.dev/gvisor/test/runtimes/common/common
|
||||
COPY php/proctor-php.go ${LANG_DIR}
|
||||
|
||||
ENTRYPOINT ["/root/go/bin/go", "run", "proctor-php.go"]
|
||||
|
|
|
@ -26,6 +26,7 @@ WORKDIR ${LANG_DIR}
|
|||
RUN ./configure --with-pydebug
|
||||
RUN make -s -j2
|
||||
|
||||
COPY proctor-python.go ${LANG_DIR}
|
||||
COPY common /root/go/src/gvisor.dev/gvisor/test/runtimes/common/common
|
||||
COPY python/proctor-python.go ${LANG_DIR}
|
||||
|
||||
ENTRYPOINT ["/root/go/bin/go", "run", "proctor-python.go"]
|
||||
|
|
Loading…
Reference in New Issue