# Container for running E2E tests on macOS # # 1. docker build --tag gitbutler/e2e:latest # 2. docker run --name e2e-agent --detach -p 2222:22 -v $GITBUTLER_REPO:/root/gitbutler \ # -v /tmp/e2e-pnpm-store:/tmp/pnpm-store gitbutler/e2e:latest # 3. docker cp -a ~/.ssh/id_ed25519.pub e2e-agent:/root/.ssh/authorized_keys # 4. Ensure correct folder permissions in container /root/.ssh folder # 5. ssh -p 2222 -Y root@localhost # The rest is run inside the container in your SSH session: # 6. cd /root/gitbutler # 7. pnpm install && cargo build # 8. cargo build -p gitbutler-git && cargo build -p but # 9. pnpm build:test # 10. pnpm test:e2e:blackbox FROM ubuntu:24.04 RUN apt update && \ apt install -y \ build-essential \ curl \ git \ pkg-config \ psmisc \ vim \ # Required for release builds jq \ file && \ # Clean up apt -y autoremove && apt -y clean # Install Tauri dependencies # https://v2.tauri.app/start/prerequisites/#linux RUN apt install -y \ libwebkit2gtk-4.1-dev \ build-essential \ curl \ wget \ libssl-dev \ libgtk-3-dev \ libayatana-appindicator3-dev \ librsvg2-dev && \ # Clean up apt -y autoremove && apt -y clean # Install tauri-driver dependencies RUN apt install -y \ dbus-x11 \ webkit2gtk-driver \ xvfb && \ # Clean up apt -y autoremove && apt -y clean # Install ssh server for X11 forwarding RUN apt install -y openssh-server && \ # Needed for recording test execution. apt install -y ffmpeg && \ # Install gitbutler dependencies apt install -y cmake && \ # Clean up apt -y autoremove && apt -y clean # Needed by at least pnpm. ENV SHELL=bash # Install rust. RUN curl https://sh.rustup.rs -sSf | sh -s -- -y ENV PATH="/root/.cargo/bin:${PATH}" # Install pnpm and configure store directory. ENV PNPM_HOME=/tmp/.pnpm ENV PATH="${PNPM_HOME}/bin:${PATH}" RUN wget -qO- https://get.pnpm.io/install.sh | PNPM_VERSION=12.5.1 ENV="$HOME/.bashrc" SHELL="$(which bash)" bash - # Home/store dir should be mounted from the host. RUN pnpm config set store-dir /tmp/.pnpm RUN pnpm setup # Used to manage build dependencies between packages. RUN pnpm add --global turbo && \ # Used as a proxy for communicating with WebKitWebDriver. cargo install tauri-driver && \ # vi bindings on by default. echo "set -o vi" >> /root/.bashrc # Run SSH server in foreground. CMD ["service", "ssh", "start", "-D"]