aboutsummaryrefslogtreecommitdiff
path: root/Dockerfile
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-12-26 01:40:37 -0800
committerGravatar GitHub <noreply@github.com> 2021-12-26 01:40:37 -0800
commit536d6ab302d537af2627f4837ec9ad0b5337dbf2 (patch)
tree48122eb3c00bd81745efb7144d6a8b2e44a6a23f /Dockerfile
parent99446ffa8a434ae1609898de529620c91aef7f68 (diff)
downloadbun-536d6ab302d537af2627f4837ec9ad0b5337dbf2.tar.gz
bun-536d6ab302d537af2627f4837ec9ad0b5337dbf2.tar.zst
bun-536d6ab302d537af2627f4837ec9ad0b5337dbf2.zip
github actions (#91)
* Update bun.yml * Update bun.yml * Update bun.yml * Update bun.yml * Update Dockerfile * switch * :hushed: * Update bun.yml * Update Dockerfile * Update Dockerfile * wip * Update bun.yml * Update bun.yml * Update bun.yml * Update Dockerfile * Update Dockerfile * Update Dockerfile * Update Dockerfile * Update Dockerfile * Update Dockerfile * Update Dockerfile * cache is broken * Update bun.yml * Update bun.yml * Update bun.yml * Update bun.yml * Update bun.yml * Update Dockerfile * Update Dockerfile * Update Dockerfile * Update bun.yml * Update Dockerfile * Update Dockerfile * Update Dockerfile * Update bun.yml * Update Dockerfile * Update Dockerfile * Update bun.yml * bust it * Update Dockerfile * jm * Update bun.yml * Update bun.yml * Update bun.yml * Update bun.yml * Update Dockerfile * Update bun.yml * Update bun.yml * Update bun.yml * Update bun.yml * wip * Update bun.yml * Update Dockerfile * Update Dockerfile * Update Makefile * Update Dockerfile * Update Dockerfile * Update Dockerfile * Update Dockerfile * Update Dockerfile * Update Dockerfile * Update Dockerfile * pass executablePath * alright * Update Makefile * Update Dockerfile * Update Dockerfile * Update Makefile * Update Makefile * Update Dockerfile * lets try that * Update Dockerfile * Update bun.yml * hm * Update Dockerfile * Update Dockerfile * Update Dockerfile * not interactive * Update bun.yml * Update bun.yml * Update bun.yml * Update bun.yml * Update bun.yml * Update bun.yml * Update bun.yml * Update bun.yml * Update bun.yml * simplify this * Update bun.yml * Update bun.yml * Update bun.yml * Update bun.yml * Update bun.yml * Update bun.yml * Update bun.yml * missing * Update Dockerfile * Update Dockerfile * wrong dir * Update Dockerfile * Update bun.yml * Update Dockerfile * Update Dockerfile * Update bun.yml * ordering * Update Dockerfile * Update bun.yml * run-test file * pass github workspace * hm * Update bun.yml * copy the file * Update run-test.sh * Update bun.yml * Update bun.yml * Update bun.yml * try this way * Update bun.yml * maybe? * Update bun.yml * maybe taht's it? * maybe this * cache * up * Update bun.yml * Update bun.yml * try this one i guess * okay that might do it * Update Dockerfile * Update bun.yml * Update bun.yml * Update bun.yml * Update bun.yml * Update chrome.json * Update chrome.json * Update bun.yml * Update bun.yml * Update bun.yml * Update bun.yml * Update bun.yml * hm * Update bun.yml * Update bun.yml * Update bun.yml * Update bun.yml * Update bun.yml * fix caching I think * Update bun.yml * Update bun.yml * Update bun.yml * Update bun.yml * Update bun.yml * maybe * Update bun.yml * fixup * Update bun.yml * Update bun.yml * Update bun.yml * maybe this time * Update bun.yml * Update Dockerfile * random name * ok * explicit runner * Update bun.yml * Update bun.yml * try deleting the files so the layer caching doesn't happen * :runner: * Update bun.yml * Update bun.yml * Update Dockerfile * Update Dockerfile * Update Dockerfile * Dockerfile.base * node.js * Update bun.yml * Update Dockerfile * Update Dockerfile.base * cleanup
Diffstat (limited to 'Dockerfile')
-rw-r--r--Dockerfile415
1 files changed, 199 insertions, 216 deletions
diff --git a/Dockerfile b/Dockerfile
index a37a78d90..538e0ccc5 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,194 +1,194 @@
-FROM ubuntu:20.04 as base
+FROM bunbunbunbun/bun-base:latest as mimalloc
+
ARG DEBIAN_FRONTEND=noninteractive
+ARG GITHUB_WORKSPACE=/build
+ARG ZIG_PATH=${GITHUB_WORKSPACE}/zig
+# Directory extracts to "bun-webkit"
+ARG WEBKIT_DIR=${GITHUB_WORKSPACE}/bun-webkit
+ARG BUN_RELEASE_DIR=${GITHUB_WORKSPACE}/bun-release
+ARG BUN_DEPS_OUT_DIR=${GITHUB_WORKSPACE}/bun-deps
+ARG BUN_DIR=${GITHUB_WORKSPACE}/bun
-RUN apt-get update && apt-get install --no-install-recommends -y wget gnupg2 curl lsb-release wget software-properties-common
-
-RUN add-apt-repository ppa:longsleep/golang-backports
-RUN curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add -
-
-RUN wget https://apt.llvm.org/llvm.sh --no-check-certificate
-RUN chmod +x llvm.sh
-RUN ./llvm.sh 12
-
-RUN apt-get update && apt-get install --no-install-recommends -y \
- ca-certificates \
- curl \
- gnupg2 \
- software-properties-common \
- cmake \
- build-essential \
- git \
- libssl-dev \
- ruby \
- liblld-12-dev \
- libclang-12-dev \
- nodejs \
- gcc \
- g++ \
- npm \
- clang-12 \
- clang-format-12 \
- libc++-12-dev \
- libc++abi-12-dev \
- lld-12 \
- libicu-dev \
- wget \
- unzip \
- tar \
- golang-go chromium-browser ninja-build pkg-config automake autoconf libtool curl
-
-RUN update-alternatives --install /usr/bin/cc cc /usr/bin/clang-12 90 && \
- update-alternatives --install /usr/bin/cpp cpp /usr/bin/clang++-12 90 && \
- update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang++-12 90
-
-ENV CC=clang-12
-ENV CXX=clang++-12
-
-WORKDIR /home/ubuntu
-ARG BUILDARCH
-ENV ARCH "$BUILDARCH"
-
-RUN npm install -g esbuild
-
-RUN curl -L https://github.com/Jarred-Sumner/zig/releases/download/dec20/zig-linux-$BUILDARCH.zip > zig-linux-$BUILDARCH.zip; \
- unzip -q zig-linux-$BUILDARCH.zip; \
- rm zig-linux-$BUILDARCH.zip;
-
-
-ENV WEBKIT_OUT_DIR /home/ubuntu/bun-webkit
-
-WORKDIR /home/ubuntu
-
-ENV PATH "/home/ubuntu/zig:$PATH"
-ENV JSC_BASE_DIR $WEBKIT_OUT_DIR
-ENV LIB_ICU_PATH /home/ubuntu/icu/source/lib
-ENV BUN_RELEASE_DIR /home/ubuntu/bun-release
-ENV BUN_DEPS_OUT_DIR /home/ubuntu/bun-deps
+COPY Makefile ${BUN_DIR}/Makefile
+COPY src/deps/mimalloc ${BUN_DIR}/src/deps/mimalloc
-RUN mkdir -p $BUN_RELEASE_DIR $BUN_DEPS_OUT_DIR /home/ubuntu/bun
+RUN cd ${BUN_DIR} && \
+ make mimalloc && rm -rf src/deps/mimalloc Makefile
-FROM base as base_with_zig_and_webkit
+FROM bunbunbunbun/bun-base:latest as zlib
-WORKDIR /home/ubuntu
+ARG DEBIAN_FRONTEND=noninteractive
+ARG GITHUB_WORKSPACE=/build
+ARG ZIG_PATH=${GITHUB_WORKSPACE}/zig
+# Directory extracts to "bun-webkit"
+ARG WEBKIT_DIR=${GITHUB_WORKSPACE}/bun-webkit
+ARG BUN_RELEASE_DIR=${GITHUB_WORKSPACE}/bun-release
+ARG BUN_DEPS_OUT_DIR=${GITHUB_WORKSPACE}/bun-deps
+ARG BUN_DIR=${GITHUB_WORKSPACE}/bun
-RUN curl -L https://github.com/Jarred-Sumner/WebKit/releases/download/Bun-v0/bun-webkit-linux-$BUILDARCH.tar.gz > bun-webkit-linux-$BUILDARCH.tar.gz; \
- tar -xzf bun-webkit-linux-$BUILDARCH.tar.gz; \
- rm bun-webkit-linux-$BUILDARCH.tar.gz && cat $WEBKIT_OUT_DIR/include/cmakeconfig.h > /dev/null
+COPY Makefile ${BUN_DIR}/Makefile
+COPY src/deps/zlib ${BUN_DIR}/src/deps/zlib
-RUN curl -L https://github.com/unicode-org/icu/releases/download/release-66-1/icu4c-66_1-src.tgz > icu4c-66_1-src.tgz && \
- tar -xzf icu4c-66_1-src.tgz && \
- rm icu4c-66_1-src.tgz && \
- cd icu/source && \
- ./configure --enable-static --disable-shared && \
- make -j$(nproc)
+WORKDIR $BUN_DIR
+RUN cd $BUN_DIR && \
+ make zlib && rm -rf src/deps/zlib Makefile
-WORKDIR /home/ubuntu/bun
+FROM bunbunbunbun/bun-base:latest as libarchive
-FROM base as mimalloc
+ARG DEBIAN_FRONTEND=noninteractive
+ARG GITHUB_WORKSPACE=/build
+ARG ZIG_PATH=${GITHUB_WORKSPACE}/zig
+# Directory extracts to "bun-webkit"
+ARG WEBKIT_DIR=${GITHUB_WORKSPACE}/bun-webkit
+ARG BUN_RELEASE_DIR=${GITHUB_WORKSPACE}/bun-release
+ARG BUN_DEPS_OUT_DIR=${GITHUB_WORKSPACE}/bun-deps
+ARG BUN_DIR=${GITHUB_WORKSPACE}/bun
-WORKDIR /home/ubuntu/bun
-COPY Makefile /home/ubuntu/bun/Makefile
-COPY src/deps/mimalloc /home/ubuntu/bun/src/deps/mimalloc
+COPY Makefile ${BUN_DIR}/Makefile
+COPY src/deps/libarchive ${BUN_DIR}/src/deps/libarchive
-RUN make mimalloc
+WORKDIR $BUN_DIR
-FROM base as zlib
+RUN cd $BUN_DIR && \
+ make libarchive && rm -rf src/deps/libarchive Makefile
-WORKDIR /home/ubuntu/bun
-COPY Makefile /home/ubuntu/bun/Makefile
-COPY src/deps/zlib /home/ubuntu/bun/src/deps/zlib
+FROM bunbunbunbun/bun-base:latest as boringssl
-RUN make zlib
+ARG DEBIAN_FRONTEND=noninteractive
+ARG GITHUB_WORKSPACE=/build
+ARG ZIG_PATH=${GITHUB_WORKSPACE}/zig
+# Directory extracts to "bun-webkit"
+ARG WEBKIT_DIR=${GITHUB_WORKSPACE}/bun-webkit
+ARG BUN_RELEASE_DIR=${GITHUB_WORKSPACE}/bun-release
+ARG BUN_DEPS_OUT_DIR=${GITHUB_WORKSPACE}/bun-deps
+ARG BUN_DIR=${GITHUB_WORKSPACE}/bun
-FROM base as libarchive
+COPY Makefile ${BUN_DIR}/Makefile
+COPY src/deps/boringssl ${BUN_DIR}/src/deps/boringssl
-WORKDIR /home/ubuntu/bun
-COPY Makefile /home/ubuntu/bun/Makefile
-COPY src/deps/libarchive /home/ubuntu/bun/src/deps/libarchive
+WORKDIR $BUN_DIR
-RUN make libarchive
+RUN cd $BUN_DIR && \
+ make boringssl && rm -rf src/deps/boringssl Makefile
-FROM base as boringssl
+FROM bunbunbunbun/bun-base:latest as picohttp
-WORKDIR /home/ubuntu/bun
-COPY Makefile /home/ubuntu/bun/Makefile
-COPY src/deps/boringssl /home/ubuntu/bun/src/deps/boringssl
+ARG DEBIAN_FRONTEND=noninteractive
+ARG GITHUB_WORKSPACE=/build
+ARG ZIG_PATH=${GITHUB_WORKSPACE}/zig
+# Directory extracts to "bun-webkit"
+ARG WEBKIT_DIR=${GITHUB_WORKSPACE}/bun-webkit
+ARG BUN_RELEASE_DIR=${GITHUB_WORKSPACE}/bun-release
+ARG BUN_DEPS_OUT_DIR=${GITHUB_WORKSPACE}/bun-deps
+ARG BUN_DIR=${GITHUB_WORKSPACE}/bun
-RUN make boringssl
+COPY Makefile ${BUN_DIR}/Makefile
+COPY src/deps/picohttpparser ${BUN_DIR}/src/deps/picohttpparser
+COPY src/deps/*.c ${BUN_DIR}/src/deps
+COPY src/deps/*.h ${BUN_DIR}/src/deps
-FROM base as picohttp
+WORKDIR $BUN_DIR
-WORKDIR /home/ubuntu/bun
-COPY Makefile /home/ubuntu/bun/Makefile
-COPY src/deps/picohttpparser /home/ubuntu/bun/src/deps/picohttpparser
-COPY src/deps/*.c /home/ubuntu/bun/src/deps
-COPY src/deps/*.h /home/ubuntu/bun/src/deps
+RUN cd $BUN_DIR && \
+ make picohttp
-RUN make picohttp
+FROM bunbunbunbun/bun-base-with-zig-and-webkit:latest as identifier_cache
-FROM base_with_zig_and_webkit as identifier_cache
+ARG DEBIAN_FRONTEND=noninteractive
+ARG GITHUB_WORKSPACE=/build
+ARG ZIG_PATH=${GITHUB_WORKSPACE}/zig
+# Directory extracts to "bun-webkit"
+ARG WEBKIT_DIR=${GITHUB_WORKSPACE}/bun-webkit
+ARG BUN_RELEASE_DIR=${GITHUB_WORKSPACE}/bun-release
+ARG BUN_DEPS_OUT_DIR=${GITHUB_WORKSPACE}/bun-deps
+ARG BUN_DIR=${GITHUB_WORKSPACE}/bun
-WORKDIR /home/ubuntu/bun
-COPY Makefile /home/ubuntu/bun/Makefile
-COPY src/js_lexer/identifier_data.zig /home/ubuntu/bun/src/js_lexer/identifier_data.zig
-COPY src/js_lexer/identifier_cache.zig /home/ubuntu/bun/src/js_lexer/identifier_cache.zig
+WORKDIR $BUN_DIR
-RUN make identifier-cache
+COPY Makefile ${BUN_DIR}/Makefile
+COPY src/js_lexer/identifier_data.zig ${BUN_DIR}/src/js_lexer/identifier_data.zig
+COPY src/js_lexer/identifier_cache.zig ${BUN_DIR}/src/js_lexer/identifier_cache.zig
-FROM base as node_fallbacks
+RUN cd $BUN_DIR && \
+ make identifier-cache && rm -rf zig-cache Makefile
-WORKDIR /home/ubuntu/bun
-COPY Makefile /home/ubuntu/bun/Makefile
-COPY src/node-fallbacks /home/ubuntu/bun/src/node-fallbacks
-RUN make node-fallbacks
+FROM bunbunbunbun/bun-base-with-zig-and-webkit:latest as node_fallbacks
-FROM base_with_zig_and_webkit as build_dependencies
+ARG DEBIAN_FRONTEND=noninteractive
+ARG GITHUB_WORKSPACE=/build
+ARG ZIG_PATH=${GITHUB_WORKSPACE}/zig
+# Directory extracts to "bun-webkit"
+ARG WEBKIT_DIR=${GITHUB_WORKSPACE}/bun-webkit
+ARG BUN_RELEASE_DIR=${GITHUB_WORKSPACE}/bun-release
+ARG BUN_DEPS_OUT_DIR=${GITHUB_WORKSPACE}/bun-deps
+ARG BUN_DIR=${GITHUB_WORKSPACE}/bun
-WORKDIR /home/ubuntu/bun
+WORKDIR $BUN_DIR
-ENV BUN_DEPS_OUT_DIR /home/ubuntu/bun-deps
-COPY ./src /home/ubuntu/bun/src
-COPY ./build.zig /home/ubuntu/bun/build.zig
-COPY ./completions /home/ubuntu/bun/completions
-COPY ./packages /home/ubuntu/bun/packages
-COPY ./build-id /home/ubuntu/bun/build-id
-COPY ./package.json /home/ubuntu/bun/package.json
-COPY ./misctools /home/ubuntu/bun/misctools
-COPY Makefile /home/ubuntu/bun/Makefile
+COPY Makefile ${BUN_DIR}/Makefile
+COPY src/node-fallbacks ${BUN_DIR}/src/node-fallbacks
+RUN cd $BUN_DIR && \
+ make node-fallbacks && rm -rf src/node-fallbacks/node_modules Makefile
-COPY --from=mimalloc /home/ubuntu/bun-deps/*.o /home/ubuntu/bun-deps
-COPY --from=libarchive /home/ubuntu/bun-deps/*.a /home/ubuntu/bun-deps
-COPY --from=picohttp /home/ubuntu/bun-deps/*.o /home/ubuntu/bun-deps
-COPY --from=boringssl /home/ubuntu/bun-deps/*.a /home/ubuntu/bun-deps
-COPY --from=zlib /home/ubuntu/bun-deps/*.a /home/ubuntu/bun-deps
-COPY --from=node_fallbacks /home/ubuntu/bun/src/node-fallbacks /home/ubuntu/bun/src/node-fallbacks
-COPY --from=identifier_cache /home/ubuntu/bun/src/js_lexer/*.blob /home/ubuntu/bun/src/js_lexer/
+FROM bunbunbunbun/bun-base-with-zig-and-webkit:latest as build_release
-RUN make \
+ARG DEBIAN_FRONTEND=noninteractive
+ARG GITHUB_WORKSPACE=/build
+ARG ZIG_PATH=${GITHUB_WORKSPACE}/zig
+# Directory extracts to "bun-webkit"
+ARG WEBKIT_DIR=${GITHUB_WORKSPACE}/bun-webkit
+ARG BUN_RELEASE_DIR=${GITHUB_WORKSPACE}/bun-release
+ARG BUN_DEPS_OUT_DIR=${GITHUB_WORKSPACE}/bun-deps
+ARG BUN_DIR=${GITHUB_WORKSPACE}/bun
+
+
+WORKDIR $BUN_DIR
+
+COPY ./src ${BUN_DIR}/src
+COPY ./build.zig ${BUN_DIR}/build.zig
+COPY ./completions ${BUN_DIR}/completions
+COPY ./packages ${BUN_DIR}/packages
+COPY ./build-id ${BUN_DIR}/build-id
+COPY ./package.json ${BUN_DIR}/package.json
+COPY ./misctools ${BUN_DIR}/misctools
+COPY Makefile ${BUN_DIR}/Makefile
+
+COPY --from=mimalloc ${BUN_DEPS_OUT_DIR}/*.o ${BUN_DEPS_OUT_DIR}/
+COPY --from=libarchive ${BUN_DEPS_OUT_DIR}/*.a ${BUN_DEPS_OUT_DIR}/
+COPY --from=picohttp ${BUN_DEPS_OUT_DIR}/*.o ${BUN_DEPS_OUT_DIR}/
+COPY --from=boringssl ${BUN_DEPS_OUT_DIR}/*.a ${BUN_DEPS_OUT_DIR}/
+COPY --from=zlib ${BUN_DEPS_OUT_DIR}/*.a ${BUN_DEPS_OUT_DIR}/
+COPY --from=identifier_cache ${BUN_DIR}/src/js_lexer/*.blob ${BUN_DIR}/src/js_lexer
+
+RUN cd $BUN_DIR && rm -rf $HOME/.cache zig-cache && make \
jsc-bindings-headers \
api \
analytics \
bun_error \
- fallback_decoder
+ fallback_decoder && rm -rf $HOME/.cache zig-cache && \
+ mkdir -p $BUN_RELEASE_DIR && \
+ make release copy-to-bun-release-dir && \
+ rm -rf $HOME/.cache zig-cache misctools package.json build-id completions build.zig
-FROM build_dependencies as build_release
+FROM bunbunbunbun/bun-base-with-zig-and-webkit:latest as bun.devcontainer
-WORKDIR /home/ubuntu/bun
-
-ENV BUN_RELEASE_DIR /home/ubuntu/bun-release
-
-RUN mkdir -p $BUN_RELEASE_DIR; make release \
- copy-to-bun-release-dir
+ARG DEBIAN_FRONTEND=noninteractive
+ARG GITHUB_WORKSPACE=/workspaces
+ARG ZIG_PATH=${GITHUB_WORKSPACE}/zig
+# Directory extracts to "bun-webkit"
+ARG WEBKIT_DIR=${GITHUB_WORKSPACE}/bun-webkit
+ARG BUN_RELEASE_DIR=${GITHUB_WORKSPACE}/bun-release
+ARG BUN_DEPS_OUT_DIR=${GITHUB_WORKSPACE}/bun-deps
+ARG BUN_DIR=${GITHUB_WORKSPACE}/bun
-FROM base_with_zig_and_webkit as bun.devcontainer
-ENV WEBKIT_OUT_DIR /home/ubuntu/bun-webkit
-ENV PATH "/home/ubuntu/zig:$PATH"
+ENV WEBKIT_OUT_DIR ${WEBKIT_DIR}
+ENV PATH "$ZIG_PATH:$PATH"
ENV JSC_BASE_DIR $WEBKIT_OUT_DIR
ENV LIB_ICU_PATH /home/ubuntu/icu/source/lib
-ENV BUN_RELEASE_DIR /home/ubuntu/bun-release
+ENV BUN_RELEASE_DIR ${BUN_RELEASE_DIR}
ENV PATH "/workspaces/bun/packages/bun-linux-x64:/workspaces/bun/packages/bun-linux-aarch64:/workspaces/bun/packages/debug-bun-linux-x64:/workspaces/bun/packages/debug-bun-linux-aarch64:$PATH"
ENV PATH "/home/ubuntu/zls/zig-out/bin:$PATH"
@@ -202,91 +202,74 @@ COPY .devcontainer/zls.json /workspaces/workspace.code-workspace
COPY .devcontainer/limits.conf /etc/security/limits.conf
COPY ".devcontainer/scripts/" /scripts/
COPY ".devcontainer/scripts/getting-started.sh" /workspaces/getting-started.sh
-RUN mkdir -p /home/ubuntu/.bun /home/ubuntu/.config /workspaces/bun && bash /scripts/common-debian.sh && bash /scripts/github.sh && bash /scripts/nice.sh && bash /scripts/zig-env.sh
+RUN mkdir -p /home/ubuntu/.bun /home/ubuntu/.config /workspaces/bun && \
+ bash /scripts/common-debian.sh && \
+ bash /scripts/github.sh && \
+ bash /scripts/nice.sh && \
+ bash /scripts/zig-env.sh
COPY .devcontainer/zls.json /home/ubuntu/.config/zls.json
-FROM ubuntu:20.04 as test_base
+FROM ubuntu:20.04 as release
ARG DEBIAN_FRONTEND=noninteractive
-ENV DEBIAN_FRONTEND=noninteractive
-
-ENV CI 1
-ENV NPM_CLIENT bun
-ENV PATH "/home/ubuntu/bun/packages/bun-linux-x64:/home/ubuntu/bun/packages/bun-linux-aarch64:$PATH"
-
-# All this is necessary because Ubuntu decided to use snap for their Chromium packages
-# Which breaks using Chrome in the container on aarch64
-RUN apt-get update && \
- apt-get install -y wget gnupg2 curl make git unzip nodejs npm psmisc && \
- apt-key adv --keyserver keyserver.ubuntu.com --recv-keys DCC9EFBF77E11517 && \
- apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 648ACFD622F3D138 && \
- apt-key adv --keyserver keyserver.ubuntu.com --recv-keys AA8E81B4331F7F50 && \
- apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 112695A0E562B32A
-
-COPY ./integration /home/ubuntu/bun/integration
-COPY Makefile /home/ubuntu/bun/Makefile
-COPY package.json /home/ubuntu/bun/package.json
-
-# We don't want to worry about architecture differences in this image
-COPY --from=release /opt/bun/bin/bun /home/ubuntu/bun/packages/bun-linux-aarch64/bun
-COPY --from=release /opt/bun/bin/bun /home/ubuntu/bun/packages/bun-linux-x64/bun
+ARG GITHUB_WORKSPACE=/build
+ARG ZIG_PATH=${GITHUB_WORKSPACE}/zig
+# Directory extracts to "bun-webkit"
+ARG WEBKIT_DIR=${GITHUB_WORKSPACE}/bun-webkit
+ARG BUN_RELEASE_DIR=${GITHUB_WORKSPACE}/bun-release
+ARG BUN_DEPS_OUT_DIR=${GITHUB_WORKSPACE}/bun-deps
+ARG BUN_DIR=${GITHUB_WORKSPACE}/bun
-FROM test_base as test_create_next
-
-WORKDIR /home/ubuntu/bun
-CMD make test-create-next
-
-FROM test_base as test_create_react
-
-WORKDIR /home/ubuntu/bun
-CMD make test-create-react
-
-
-FROM test_base as test_bun_run
-
-WORKDIR /home/ubuntu/bun
-CMD make test-bun-run
-
-FROM test_base as browser_test_base
-
-COPY .docker/chromium.pref /etc/apt/preferences.d/chromium.pref
-COPY .docker/debian.list /etc/apt/sources.list.d/debian.list
+COPY .devcontainer/limits.conf /etc/security/limits.conf
-RUN apt-get update && \
- apt-get install -y --no-install-recommends chromium
+ENV BUN_INSTALL /opt/bun
+ENV PATH "/opt/bun/bin:$PATH"
+ARG BUILDARCH=amd64
+LABEL org.opencontainers.image.title="Bun ${BUILDARCH} (glibc)"
+LABEL org.opencontainers.image.source=https://github.com/jarred-sumner/bun
+COPY --from=build_release ${BUN_RELEASE_DIR}/bun /opt/bun/bin/bun
+WORKDIR /opt/bun
+ENTRYPOINT [ "/opt/bun/bin/bun" ]
-WORKDIR /home/ubuntu/bun
-RUN mkdir -p /var/run/dbus && ln -s /usr/bin/chromium /usr/bin/chromium-browser
-RUN apt-get install -y make fonts-ipafont-gothic fonts-wqy-zenhei fonts-thai-tlwg fonts-kacst fonts-freefont-ttf libxss1 xvfb ca-certificates fonts-liberation libappindicator3-1 libasound2 libatk-bridge2.0-0 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgbm1 libgcc1 libglib2.0-0 libgtk-3-0 libnspr4 libnss3 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 lsb-release wget xdg-utils --no-install-recommends
+FROM bunbunbunbun/bun-test-base as test_base
+ARG DEBIAN_FRONTEND=noninteractive
+ARG GITHUB_WORKSPACE=/build
+ARG ZIG_PATH=${GITHUB_WORKSPACE}/zig
+# Directory extracts to "bun-webkit"
+ARG WEBKIT_DIR=${GITHUB_WORKSPACE}/bun-webkit
+ARG BUN_RELEASE_DIR=${GITHUB_WORKSPACE}/bun-release
+ARG BUN_DEPS_OUT_DIR=${GITHUB_WORKSPACE}/bun-deps
+ARG BUN_DIR=${GITHUB_WORKSPACE}/bun
-FROM browser_test_base as test_hmr
+ARG BUILDARCH=amd64
+RUN groupadd -r chromium && useradd -d ${BUN_DIR} -M -r -g chromium -G audio,video chromium \
+ && mkdir -p /home/chromium/Downloads && chown -R chromium:chromium /home/chromium
-WORKDIR /home/ubuntu/bun
-CMD dbus-daemon --system &> /dev/null && \
- bun install --cwd /home/ubuntu/bun/integration/snippets && \
- bun install --cwd /home/ubuntu/bun/integration/scripts && \
- bun install && \
- make test-hmr-hmr
+USER chromium
+WORKDIR $BUN_DIR
-FROM browser_test_base as test_no_hmr
+ENV NPM_CLIENT bun
+ENV PATH "${BUN_DIR}/packages/bun-linux-x64:${BUN_DIR}/packages/bun-linux-aarch64:$PATH"
+ENV CI 1
+ENV BROWSER_EXECUTABLE /usr/bin/chromium
-WORKDIR /home/ubuntu/bun
-CMD dbus-daemon --system &> /dev/null && \
- bun install --cwd /home/ubuntu/bun/integration/snippets && \
- bun install --cwd /home/ubuntu/bun/integration/scripts && \
- bun install && \
- make test-no-hmr
+COPY ./integration ${BUN_DIR}/integration
+COPY Makefile ${BUN_DIR}/Makefile
+COPY package.json ${BUN_DIR}/package.json
+COPY .docker/run-test.sh ${BUN_DIR}/run-test.sh
+COPY ./bun.lockb ${BUN_DIR}/bun.lockb
-FROM ubuntu:20.04 as release
+# # We don't want to worry about architecture differences in this image
+COPY --from=release /opt/bun/bin/bun ${BUN_DIR}/packages/bun-linux-aarch64/bun
+COPY --from=release /opt/bun/bin/bun ${BUN_DIR}/packages/bun-linux-x64/bun
-COPY --from=build_release /home/ubuntu/bun-release/bun /opt/bun/bin/bun
-COPY .devcontainer/limits.conf /etc/security/limits.conf
+USER root
+RUN chgrp -R chromium ${BUN_DIR} && chmod g+rwx ${BUN_DIR} && chown -R chromium:chromium ${BUN_DIR}
+USER chromium
-ENV BUN_INSTALL /opt/bun
-ENV PATH "/opt/bun/bin:$PATH"
+CMD [ "bash", ".run-test.sh" ]
-LABEL org.opencontainers.image.title="Bun ${BUILDARCH} (glibc)"
-LABEL org.opencontainers.image.source=https://github.com/jarred-sumner/bun \ No newline at end of file
+FROM release \ No newline at end of file