mirror of
https://github.com/hasura/graphql-engine.git
synced 2024-12-15 09:22:43 +03:00
6fa4d03f3b
### What We now support cloud-only crates, which are not open-sourced. ### How Anything in `crates/cloud` will not be synced with the _graphql-engine_ repository. In order to facilitate this, we generate and commit a Cargo.toml/Cargo.lock pair with the cloud-only sections removed. We also transform the justfile to remove this code. This includes only a test repository, to ensure that nothing private is synced. When this is merged, it should not result in a commit to the _graphql-engine_ repository. V3_GIT_ORIGIN_REV_ID: 038839acdf3a97da05bbd4b6278171cc12e7cd71
149 lines
5.0 KiB
Makefile
149 lines
5.0 KiB
Makefile
set positional-arguments
|
|
|
|
set shell := ["bash", "-c"]
|
|
|
|
default:
|
|
just --list
|
|
|
|
build:
|
|
cargo build --release --all-targets
|
|
|
|
format:
|
|
cargo fmt --check
|
|
prettier --check .
|
|
! command -v nix || nix fmt -- --check .
|
|
alias fmt := format
|
|
|
|
fix:
|
|
cargo clippy --all-targets --no-deps --fix --allow-no-vcs
|
|
cargo fmt
|
|
just fix-format
|
|
! command -v nix || nix fmt
|
|
|
|
fix-format:
|
|
prettier --write .
|
|
|
|
run-local-with-shell:
|
|
#!/usr/bin/env bash
|
|
cargo run --bin custom-connector | ts "custom-connector:" &
|
|
OTLP_ENDPOINT=http://localhost:4317 \
|
|
cargo run --bin dev-auth-webhook | ts "dev-auth-webhook:" &
|
|
RUST_LOG=DEBUG cargo run --bin engine -- \
|
|
--otlp-endpoint http://localhost:4317 \
|
|
--authn-config-path static/auth/auth_config.json \
|
|
--metadata-path crates/engine/tests/schema.json \
|
|
--expose-internal-errors | ts "engine: " &
|
|
wait
|
|
|
|
# start all the docker deps for running tests (not engine)
|
|
start-docker-test-deps:
|
|
# start connectors and wait for health
|
|
docker compose -f ci.docker-compose.yaml up --wait postgres postgres_connector custom_connector custom_connector_ndc_v01
|
|
|
|
# start all the docker run time deps for the engine
|
|
start-docker-run-deps:
|
|
# start auth_hook and jaeger
|
|
docker compose up --wait auth_hook jaeger
|
|
|
|
# pull / build all docker deps
|
|
docker-refresh:
|
|
docker compose -f ci.docker-compose.yaml pull postgres_connector
|
|
docker compose -f ci.docker-compose.yaml build custom_connector
|
|
|
|
# stop all the docker deps
|
|
stop-docker:
|
|
docker compose -f ci.docker-compose.yaml down -v
|
|
docker compose down -v
|
|
|
|
# run the tests using local engine (once)
|
|
test *ARGS: start-docker-test-deps
|
|
#!/usr/bin/env bash
|
|
if command -v cargo-nextest; then
|
|
COMMAND=(cargo nextest run)
|
|
else
|
|
COMMAND=(cargo test)
|
|
fi
|
|
COMMAND+=(--no-fail-fast "$@")
|
|
echo "${COMMAND[*]}"
|
|
"${COMMAND[@]}"
|
|
|
|
# run a watch process that runs the tests locally
|
|
watch: start-docker-test-deps start-docker-run-deps
|
|
RUST_LOG=DEBUG \
|
|
cargo watch -i "**/*.snap.new" \
|
|
-x test \
|
|
-x 'clippy --no-deps' \
|
|
-x 'run --bin engine -- \
|
|
--otlp-endpoint http://localhost:4317 \
|
|
--authn-config-path static/auth/auth_config.json \
|
|
--metadata-path crates/engine/tests/schema.json \
|
|
--expose-internal-errors'
|
|
|
|
# check the code is fine
|
|
lint:
|
|
cargo clippy --all-targets --no-deps
|
|
! command -v nix || nix flake check
|
|
|
|
# ensure we don't have unused dependencies:
|
|
machete:
|
|
cargo machete --with-metadata
|
|
|
|
# update golden tests
|
|
update-golden-files: start-docker-test-deps
|
|
UPDATE_GOLDENFILES=1 cargo test
|
|
just fix-format
|
|
|
|
update-custom-connector-schema-in-test-metadata: && fix-format
|
|
#!/usr/bin/env bash
|
|
set -e
|
|
docker compose -f ci.docker-compose.yaml up --build --wait custom_connector
|
|
|
|
new_capabilities=$(curl http://localhost:8102/capabilities | jq)
|
|
new_schema=$(curl http://localhost:8102/schema | jq)
|
|
ndc_version="v0.2"
|
|
|
|
# Should only be tests that actually talk to the running connector and therefore must be up to date
|
|
test_directories=(./crates/engine/tests/execute)
|
|
|
|
find "${test_directories[@]}" -name '*.json' -print0 |
|
|
while IFS= read -r -d '' file; do
|
|
# Check if the file actually contains a custom connector DataConnectorLink
|
|
if jq -e '
|
|
(. | type == "object") and has("subgraphs") and (.subgraphs | length > 0) and (.subgraphs[] | has("objects") and (.objects | length > 0))
|
|
and any(.subgraphs[].objects[]; .kind == "DataConnectorLink" and .definition.url.singleUrl.value == "http://localhost:8102")' "$file" >/dev/null; then
|
|
|
|
# Update its schema, capabilities and version
|
|
jq --argjson newCapabilities "$new_capabilities" --argjson newSchema "$new_schema" --arg ndcVersion "$ndc_version" '
|
|
(.subgraphs[].objects[] | select(.kind == "DataConnectorLink" and .definition.url.singleUrl.value == "http://localhost:8102").definition.schema)
|
|
|= (.capabilities = $newCapabilities | .schema = $newSchema | .version = $ndcVersion)
|
|
' $file \
|
|
| sponge $file
|
|
|
|
echo "Updated $file"
|
|
else
|
|
echo "Skipping $file: Does not appear to be a metadata file with a custom connector"
|
|
fi
|
|
done
|
|
|
|
docker compose -f ci.docker-compose.yaml down
|
|
|
|
# run the engine using schema from tests
|
|
run: start-docker-test-deps start-docker-run-deps
|
|
RUST_LOG=DEBUG cargo run --bin engine -- \
|
|
--otlp-endpoint http://localhost:4317 \
|
|
--authn-config-path static/auth/auth_config.json \
|
|
--metadata-path crates/engine/tests/schema.json \
|
|
--expose-internal-errors
|
|
|
|
# check the docker build works
|
|
build-docker-with-nix binary="engine":
|
|
#!/usr/bin/env bash
|
|
echo "$(tput bold)nix build .#{{ binary }}-docker | gunzip | docker load$(tput sgr0)"
|
|
gunzip < "$(nix build --no-warn-dirty --no-link --print-out-paths '.#{{ binary }}-docker')" | docker load
|
|
|
|
# check the arm64 docker build works
|
|
build-aarch64-docker-with-nix binary="engine":
|
|
#!/usr/bin/env bash
|
|
echo "$(tput bold)nix build .#{{ binary }}-docker-aarch64-linux | gunzip | docker load$(tput sgr0)"
|
|
gunzip < "$(nix build --no-warn-dirty --no-link --print-out-paths --system aarch64-linux '.#{{ binary }}-docker-aarch64-linux')" | docker load
|