mirror of
https://github.com/ipfs/kubo.git
synced 2026-02-22 10:57:42 +08:00
109 lines
3.3 KiB
YAML
109 lines
3.3 KiB
YAML
name: Gateway Conformance
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
pull_request:
|
|
paths-ignore:
|
|
- '**/*.md'
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.event_name == 'push' && github.sha || github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
|
|
jobs:
|
|
gateway-conformance:
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 10
|
|
steps:
|
|
# 1. Download the gateway-conformance fixtures
|
|
- name: Download gateway-conformance fixtures
|
|
uses: ipfs/gateway-conformance/.github/actions/extract-fixtures@v0.1
|
|
with:
|
|
output: fixtures
|
|
|
|
# 2. Build the kubo-gateway
|
|
- name: Setup Go
|
|
uses: actions/setup-go@v3
|
|
with:
|
|
go-version: 1.19.x
|
|
- name: Checkout kubo-gateway
|
|
uses: actions/checkout@v3
|
|
with:
|
|
path: kubo-gateway
|
|
- name: Build kubo-gateway
|
|
run: make build
|
|
working-directory: kubo-gateway
|
|
|
|
# 3. Init the kubo-gateway
|
|
- name: Init kubo-gateway
|
|
env:
|
|
GATEWAY_PUBLIC_GATEWAYS: |
|
|
{
|
|
"example.com": {
|
|
"UseSubdomains": true,
|
|
"Paths": ["/ipfs", "/ipns"]
|
|
},
|
|
"localhost": {
|
|
"UseSubdomains": true,
|
|
"InlineDNSLink": true,
|
|
"Paths": ["/ipfs", "/ipns"]
|
|
}
|
|
}
|
|
run: |
|
|
./ipfs init
|
|
./ipfs config --json Gateway.PublicGateways "$GATEWAY_PUBLIC_GATEWAYS"
|
|
working-directory: kubo-gateway/cmd/ipfs
|
|
|
|
# 4. Populate the Kubo gateway with the gateway-conformance fixtures
|
|
- name: Import fixtures
|
|
run: |
|
|
# Import car files
|
|
find ./fixtures -name '*.car' -exec kubo-gateway/cmd/ipfs/ipfs dag import --pin-roots=false {} \;
|
|
|
|
# Import ipns records
|
|
records=$(find ./fixtures -name '*.ipns-record')
|
|
for record in $records
|
|
do
|
|
key=$(basename -s .ipns-record "$record" | cut -d'_' -f1)
|
|
kubo-gateway/cmd/ipfs/ipfs routing put --allow-offline "/ipns/$key" "$record"
|
|
done
|
|
|
|
# Import dnslink records
|
|
# the IPFS_NS_MAP env will be used by the daemon
|
|
export IPFS_NS_MAP=$(cat ./fixtures/dnslinks.json | jq -r 'to_entries | map("\(.key).example.com:\(.value)") | join(",")')
|
|
echo "IPFS_NS_MAP=${IPFS_NS_MAP}" >> $GITHUB_ENV
|
|
|
|
# 5. Start the kubo-gateway
|
|
- name: Start kubo-gateway
|
|
run: |
|
|
./ipfs daemon --offline &
|
|
working-directory: kubo-gateway/cmd/ipfs
|
|
|
|
# 6. Run the gateway-conformance tests
|
|
- name: Run gateway-conformance tests
|
|
uses: ipfs/gateway-conformance/.github/actions/test@v0.1
|
|
with:
|
|
gateway-url: http://127.0.0.1:8080
|
|
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 MD summary
|
|
if: failure() || success()
|
|
run: cat output.md >> $GITHUB_STEP_SUMMARY
|
|
- name: Upload HTML report
|
|
if: failure() || success()
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: gateway-conformance.html
|
|
path: output.html
|