Skip to content

Commit

Permalink
ci(github): add gateway conformance test workflow
Browse files Browse the repository at this point in the history
  • Loading branch information
hannahhoward committed Oct 12, 2023
1 parent 2cf1121 commit 2c7fb51
Showing 1 changed file with 103 additions and 0 deletions.
103 changes: 103 additions & 0 deletions .github/workflows/gateway-conformance.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
name: Gateway Conformance

on:
push:
branches:
- main
pull_request:

env:
LASSIE_ADDRESS: 127.0.0.1
LASSIE_PORT: 8888

jobs:
gateway-conformance:
runs-on: ubuntu-latest
steps:
# 1. Start the Kubo gateway
- name: Download Kubo gateway
uses: ipfs/download-ipfs-distribution-action@v1
- name: Start Kubo gateway
uses: ipfs/start-ipfs-daemon-action@v1

# 2. Download the gateway-conformance fixtures
- name: Download gateway-conformance fixtures
uses: ipfs/gateway-conformance/.github/actions/[email protected]
with:
output: fixtures

# 3. Populate the Kubo gateway with the gateway-conformance fixtures
- name: Import fixtures
run: |
find fixtures -name '*.car' -exec ipfs dag import --pin-roots=false {} \;
sudo rm -rf fixtures
# 4. Build the L1
- name: Checkout repository
uses: actions/checkout@v3

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2

- name: Build local Docker image
uses: docker/build-push-action@v3
with:
context: .
tags: lassie
cache-from: type=gha
cache-to: type=gha,mode=max
load: true

# 5. Start the L1
- name: Start L1
run: |
# Configure lassie to fetch only from the localhost kubo
export LASSIE_ALLOW_PROVIDERS=$(ipfs id | jq --raw-output '.Addresses | @csv | sub("\"";"";"g") ')
export DOCKER_NETWORK=host
export LASSIE_PORT=${{ env.LASSIE_PORT }}
export LASSIE_ADDRESS=${{ env.LASSIE_ADDRESS}}
docker run --name lassie --rm \
--network=$DOCKER_NETWORK \
-e "LASSIE_ALLOW_PPROVIDERS=$LASSIE_ALLOW_PROVIDERS" \
-e "LASSIE_PORT=$LASSIE_PORT" \
-e "LASSIE_ADDRESS=$LASSIE_ADDRESS" lassie daemon &
num_attempts=0
max_attempts=5
url=http://${{ env.LASSIE_ADDRESS }}:${{ env.LASSIE_PORT }}
# wait for the container to be up
until curl -s "$url" -o /dev/null; do
if [ ${num_attempts} -eq ${max_attempts} ];then
echo "Max attempts reached"
exit 1
fi
num_attempts=$(($num_attempts+1))
sleep 5;
done
# 6. Run the gateway-conformance tests
- name: Run gateway-conformance tests
# Wait for release that contains "trustless-car-gateway" specs
uses: ipfs/gateway-conformance/.github/actions/[email protected]
with:
gateway-url: http://${{ env.LASSIE_ADDRESS }}:${{ env.LASSIE_PORT }}
specs: trustless-car-gateway
json: output.json
xml: output.xml
html: output.html
markdown: output.md
args: -skip 'TestGatewayCar/GET_response_for_application/vnd.ipld.car/Header_Content-Length'

# 7. Upload the results
- name: Upload Markdown summary
if: "!cancelled()"
run: cat output.md >> $GITHUB_STEP_SUMMARY
- name: Upload HTML report
if: "!cancelled()"
uses: actions/upload-artifact@v3
with:
name: gateway-conformance.html
path: output.html

0 comments on commit 2c7fb51

Please sign in to comment.