Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 19 additions & 5 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -9,25 +9,39 @@ RUN useradd --uid $USER_UID --gid $USER_GID --shell /bin/bash --create-home deve

# Install sudo first
RUN apt-get update
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends sudo
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends ca-certificates curl git git-restore-mtime sudo xz-utils

# No Sudo Prompt - thanks Electron for this
RUN echo 'developer ALL=NOPASSWD: ALL' >> /etc/sudoers.d/developer
RUN echo 'Defaults env_keep += "DEBIAN_FRONTEND"' >> /etc/sudoers.d/env_keep

ENV DEBIAN_FRONTEND=1
ENV PATH=/usr/lib/ccache:$PATH

# Copy scripts and make them executable by both root and developer
COPY --chown=root:developer --chmod=0755 ./scripts/ /home/developer/scripts/
RUN /home/developer/scripts/install.sh
RUN /home/developer/scripts/ccache.sh

USER developer
RUN /home/developer/scripts/clone.sh

# Installing Nix and Cachix
RUN curl -L "https://github.com/$(sed -nE 's#.*(cachix/install-nix-action)@([a-f0-9]+).*#\1/raw/\2#p' /home/developer/nodejs/node/.github/workflows/test-shared.yml)/install-nix.sh" | \
USER=developer \
INPUT_SET_AS_TRUSTED_USER=true \
INPUT_ENABLE_KVM=true \
INPUT_EXTRA_NIX_CONFIG= \
INPUT_INSTALL_OPTIONS= \
RUNNER_TEMP=$(mktemp -d) GITHUB_ENV=/dev/null GITHUB_PATH=/dev/null bash
ENV NIX_PROFILES="/nix/var/nix/profiles/default /home/developer/.nix-profile"
ENV NIX_SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt
ENV PATH="/home/developer/.nix-profile/bin:${PATH}"
RUN nix-env -iA cachix -f https://cachix.org/api/v1/install
RUN USER=developer cachix use nodejs

RUN /home/developer/scripts/build.sh

ENV PATH=/home/developer/.local/bin:$PATH
WORKDIR /home/developer/nodejs/node
RUN /home/developer/scripts/install-node.sh
RUN /home/developer/scripts/ncu.sh

# We pass `--impure` so the locally installed `node` build is available on the PATH.
ENTRYPOINT ["/home/developer/.nix-profile/bin/nix-shell", "--impure", "-I", "nixpkgs=/home/developer/nodejs/node/tools/nix/pkgs.nix"]
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ Do this from your local system, not in the container. The `git` configuration wi
Some useful commands:
- `docker build .` - build the current Dockerfile
- `docker image ls` - list the images and IDs
- `docker run -it <image id> /bin/bash` - run a container and shell into it
- `docker run -it <image id>` - run a container and shell into it
- `docker tag <image id> devcontainer:nightly` - run to tag an image as `nightly`


Expand Down
7 changes: 4 additions & 3 deletions scripts/build.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#!/usr/bin/env bash
#!/usr/bin/env nix-shell
#! nix-shell --pure -i bash -I nixpkgs=/home/developer/nodejs/node/tools/nix/pkgs.nix /home/developer/nodejs/node/shell.nix

set -e # Exit with nonzero exit code if anything fails
set -xe

/home/developer/nodejs/node/configure --ninja && make -C /home/developer/nodejs/node
make -C /home/developer/nodejs/node build-ci
6 changes: 0 additions & 6 deletions scripts/ccache.sh

This file was deleted.

13 changes: 7 additions & 6 deletions scripts/clone.sh
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
#!/usr/bin/env bash

set -e # Exit with nonzero exit code if anything fails
set -xe

mkdir -p /home/developer/nodejs
cd /home/developer/nodejs
git clone https://github.com/nodejs/node.git --single-branch --branch main --depth 1
cd /home/developer/nodejs/node
git remote add upstream https://github.com/nodejs/node.git
git restore-mtime # Restore file modification times to commit times for build cache to match.
git clone https://github.com/nodejs/node.git --depth 1 /home/developer/nodejs/node
(
cd /home/developer/nodejs/node
git remote add upstream https://github.com/nodejs/node.git
git restore-mtime # Restore file modification times to commit times for build cache to match.
)
12 changes: 8 additions & 4 deletions scripts/install-node.sh
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
#!/usr/bin/env bash
#!/usr/bin/env nix-shell
#! nix-shell --pure -i bash -I nixpkgs=/home/developer/nodejs/node/tools/nix/pkgs.nix /home/developer/nodejs/node/shell.nix

set -e # Exit with nonzero exit code if anything fails
set -xe

make install PREFIX=/home/developer/.local -C /home/developer/nodejs/node
echo '' >> /home/developer/.bashrc
echo 'export PATH=/home/developer/.local/bin:$PATH' >> /home/developer/.bashrc
{
echo ''
# Expose the PATH generated by Nix + the recently built `node` installation
echo "export PATH=/home/developer/.local/bin:$PATH"
} >> /home/developer/.bashrc
35 changes: 0 additions & 35 deletions scripts/install.sh

This file was deleted.

7 changes: 3 additions & 4 deletions scripts/ncu.sh
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
#!/usr/bin/env bash
#!/usr/bin/env nix-shell
#! nix-shell --pure -i bash -I nixpkgs=/home/developer/nodejs/node/tools/nix/pkgs.nix /home/developer/nodejs/node/shell.nix

set -e # Exit with nonzero exit code if anything fails

npm install -g @node-core/utils
set -xe

ncu-config set upstream upstream
ncu-config set branch main
10 changes: 0 additions & 10 deletions scripts/setup-origin.sh

This file was deleted.