Add async-graphql integration #548
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: pr | |
on: | |
pull_request: | |
paths: | |
- 'packages/libraries/router/**' | |
- 'docker/router.dockerfile' | |
- 'scripts/compress/**' | |
- 'configs/cargo/Cargo.lock' | |
- 'Cargo.lock' | |
- 'Cargo.toml' | |
env: | |
HIVE_TOKEN: ${{ secrets.HIVE_TOKEN }} | |
jobs: | |
# Builds Rust crates, and creates Docker images | |
build-rust: | |
name: build_rust | |
uses: ./.github/workflows/build-and-dockerize.yaml | |
with: | |
dockerize: ${{ !github.event.pull_request.head.repo.fork }} | |
imageTag: ${{ github.event.pull_request.head.sha }} | |
publishLatest: false | |
targets: 'rust' | |
build: false | |
publishPrComment: false | |
uploadJavaScriptArtifacts: false | |
secrets: inherit | |
# Run Docker image | |
run-docker: | |
name: run-docker | |
runs-on: ubuntu-22.04 | |
needs: build-rust | |
if: ${{ !github.event.pull_request.head.repo.fork }} | |
steps: | |
- name: Run Docker image | |
run: | | |
# Create router.yaml | |
cat << EOF > router.yaml | |
supergraph: | |
listen: 0.0.0.0:4000 | |
health_check: | |
listen: 0.0.0.0:8088 | |
enabled: true | |
path: /health | |
plugins: | |
hive.usage: | |
enabled: false | |
EOF | |
# Download supergraph | |
curl -sSL https://supergraph.demo.starstuff.dev/ > ./supergraph.graphql | |
# Run Docker image | |
docker run -p 4000:4000 -p 8088:8088 --name apollo_router_test -d \ | |
--env HIVE_TOKEN="fake" \ | |
--mount "type=bind,source=/$(pwd)/router.yaml,target=/dist/config/router.yaml" \ | |
--mount "type=bind,source=/$(pwd)/supergraph.graphql,target=/dist/config/supergraph.graphql" \ | |
ghcr.io/kamilkisiela/graphql-hive/apollo-router:${{ github.event.pull_request.head.sha }} \ | |
--log debug \ | |
--supergraph /dist/config/supergraph.graphql \ | |
--config /dist/config/router.yaml | |
# Wait for the container to be ready | |
echo "Waiting for the container to be ready..." | |
sleep 20 | |
HTTP_RESPONSE=$(curl --retry 5 --retry-delay 5 --max-time 30 --write-out "%{http_code}" --silent --output /dev/null "http://127.0.0.1:8088/health") | |
# Check if the HTTP response code is 200 (OK) | |
if [ $HTTP_RESPONSE -eq 200 ]; then | |
echo "Health check successful." | |
docker stop apollo_router_test | |
docker rm apollo_router_test | |
exit 0 | |
else | |
echo "Health check failed with HTTP status code $HTTP_RESPONSE." | |
docker stop apollo_router_test | |
docker rm apollo_router_test | |
exit 1 | |
fi | |
# Builds binaries from Rust crates | |
build-rust-binaries: | |
name: build-rust-binaries | |
uses: ./.github/workflows/publish-rust.yaml | |
with: | |
publish: false | |
secrets: inherit |