Skip to content
Draft
Show file tree
Hide file tree
Changes from all 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
38 changes: 38 additions & 0 deletions r/build
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
#!/bin/bash
set -e

TREE=$(git write-tree)
COMMIT=$(echo "WIP" | git commit-tree $TREE)
git update-ref R_HEAD $COMMIT

git diff --stat HEAD..R_HEAD

josh-filter :+r/$1:/build --update refs/r/$1/build R_HEAD
josh-filter :+r/$1:/run --update refs/r/$1/run R_HEAD

IMAGE_NAME=r-image:$(git rev-parse refs/r/$1/build^{tree})
if docker image inspect $IMAGE_NAME >/dev/null 2>&1; then
echo "Image exists locally"
else
echo "Image does not exist locally"
git archive --format=tar $(git rev-parse refs/r/$1/build^{tree}) | docker buildx build \
--target=dev-local \
--build-arg USER_UID=$(id -u) \
--build-arg USER_GID=$(id -g) \
-t $IMAGE_NAME -
fi

vol=$1_snapshot
docker volume remove "$vol" || true
docker volume create "$vol"
docker run --rm -v "$vol":/data busybox sh -c "chown -R $(id -u):$(id -g) /data"

git archive $(git rev-parse refs/r/$1/run^{tree}) | docker run --rm --user $(id -u):$(id -g) -i -v "$vol":/dst busybox tar -xC /dst

docker run -it --rm \
-v "$vol":$PWD \
-v "$PWD/tests:$PWD/tests" \
-v rcache:/opt/cache \
-w $PWD \
--user $(id -u):$(id -g) \
$IMAGE_NAME sh -c "bash run.sh ${*:2}"
23 changes: 23 additions & 0 deletions r/josh.josh
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
build = :[
::Dockerfile
::docker/
::lfs-test-server/
]
run = :[
:/r::run.sh
::run-tests.sh
::**/*.toml
::*.toml
::hyper-reverse-proxy/
::hyper_cgi/
::josh-cli/
::josh-core/
::josh-filter/
::josh-graphql/
::josh-proxy/
::josh-rpc/
::josh-ssh-dev-server/
::josh-ssh-shell/
::josh-templates/
::josh-ui/
]
12 changes: 12 additions & 0 deletions r/run.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
set -e

if [[ ! -v CARGO_TARGET_DIR ]]; then
echo "CARGO_TARGET_DIR not set"
exit 1
fi

export RUSTFLAGS="-D warnings"
rustc -vV
cargo build --workspace --exclude josh-ui --features hyper_cgi/test-server -v
( cd josh-ssh-dev-server ; go build -o "\${CARGO_TARGET_DIR}/josh-ssh-dev-server" )
sh run-tests.sh ${@:1:99}