mirror of
https://github.com/ipfs/kubo.git
synced 2026-02-21 10:27:46 +08:00
Merge branch 'master' into dependabot/go_modules/github.com/caddyserver/certmagic-0.25.1
This commit is contained in:
commit
c363c09d32
92
.github/workflows/interop.yml
vendored
92
.github/workflows/interop.yml
vendored
@ -1,3 +1,17 @@
|
|||||||
|
# Interoperability Tests
|
||||||
|
#
|
||||||
|
# This workflow ensures Kubo remains compatible with the broader IPFS ecosystem.
|
||||||
|
# It builds Kubo from source, then runs:
|
||||||
|
#
|
||||||
|
# 1. helia-interop: Tests compatibility with Helia (JavaScript IPFS implementation)
|
||||||
|
# using Playwright-based tests from @helia/interop package.
|
||||||
|
#
|
||||||
|
# 2. ipfs-webui: Runs E2E tests from ipfs/ipfs-webui repository to verify
|
||||||
|
# the web interface works correctly with the locally built Kubo binary.
|
||||||
|
#
|
||||||
|
# Both jobs use caching to speed up repeated runs (npm dependencies, Playwright
|
||||||
|
# browsers, and webui build artifacts).
|
||||||
|
|
||||||
name: Interop
|
name: Interop
|
||||||
|
|
||||||
on:
|
on:
|
||||||
@ -84,9 +98,6 @@ jobs:
|
|||||||
run:
|
run:
|
||||||
shell: bash
|
shell: bash
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/setup-node@v6
|
|
||||||
with:
|
|
||||||
node-version: 20.x
|
|
||||||
- uses: actions/download-artifact@v7
|
- uses: actions/download-artifact@v7
|
||||||
with:
|
with:
|
||||||
name: kubo
|
name: kubo
|
||||||
@ -96,36 +107,73 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
repository: ipfs/ipfs-webui
|
repository: ipfs/ipfs-webui
|
||||||
path: ipfs-webui
|
path: ipfs-webui
|
||||||
- run: |
|
- uses: actions/setup-node@v6
|
||||||
echo "dir=$(npm config get cache)" >> $GITHUB_OUTPUT
|
|
||||||
id: npm-cache-dir
|
|
||||||
- uses: actions/cache@v5
|
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.npm-cache-dir.outputs.dir }}
|
node-version-file: 'ipfs-webui/.tool-versions'
|
||||||
key: ${{ runner.os }}-${{ github.job }}-${{ hashFiles('**/package-lock.json') }}
|
- id: webui-ref
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-${{ github.job }}-
|
|
||||||
- env:
|
|
||||||
NPM_CACHE_DIR: ${{ steps.npm-cache-dir.outputs.dir }}
|
|
||||||
run: |
|
|
||||||
npm ci --prefer-offline --no-audit --progress=false --cache "$NPM_CACHE_DIR"
|
|
||||||
npx playwright install --with-deps
|
|
||||||
working-directory: ipfs-webui
|
|
||||||
- id: ref
|
|
||||||
run: echo "ref=$(git rev-parse --short HEAD)" | tee -a $GITHUB_OUTPUT
|
run: echo "ref=$(git rev-parse --short HEAD)" | tee -a $GITHUB_OUTPUT
|
||||||
working-directory: ipfs-webui
|
working-directory: ipfs-webui
|
||||||
- id: state
|
- id: webui-state
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ github.token }}
|
GITHUB_TOKEN: ${{ github.token }}
|
||||||
ENDPOINT: repos/ipfs/ipfs-webui/commits/${{ steps.ref.outputs.ref }}/status
|
ENDPOINT: repos/ipfs/ipfs-webui/commits/${{ steps.webui-ref.outputs.ref }}/status
|
||||||
SELECTOR: .state
|
SELECTOR: .state
|
||||||
KEY: state
|
KEY: state
|
||||||
run: gh api "$ENDPOINT" --jq "$SELECTOR" | xargs -I{} echo "$KEY={}" | tee -a $GITHUB_OUTPUT
|
run: gh api "$ENDPOINT" --jq "$SELECTOR" | xargs -I{} echo "$KEY={}" | tee -a $GITHUB_OUTPUT
|
||||||
- name: Build ipfs-webui@main (state=${{ steps.state.outputs.state }})
|
# Cache node_modules based on package-lock.json
|
||||||
|
- name: Cache node_modules
|
||||||
|
uses: actions/cache@v5
|
||||||
|
id: node-modules-cache
|
||||||
|
with:
|
||||||
|
path: ipfs-webui/node_modules
|
||||||
|
key: ${{ runner.os }}-webui-node-modules-${{ hashFiles('ipfs-webui/package-lock.json') }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-webui-node-modules-
|
||||||
|
- name: Install dependencies
|
||||||
|
if: steps.node-modules-cache.outputs.cache-hit != 'true'
|
||||||
|
run: npm ci --prefer-offline --no-audit --progress=false
|
||||||
|
working-directory: ipfs-webui
|
||||||
|
# Cache Playwright browsers
|
||||||
|
- name: Cache Playwright browsers
|
||||||
|
uses: actions/cache@v5
|
||||||
|
id: playwright-cache
|
||||||
|
with:
|
||||||
|
path: ~/.cache/ms-playwright
|
||||||
|
key: ${{ runner.os }}-playwright-${{ hashFiles('ipfs-webui/package-lock.json') }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-playwright-
|
||||||
|
# On cache miss: download browsers and install OS dependencies
|
||||||
|
- name: Install Playwright with dependencies
|
||||||
|
if: steps.playwright-cache.outputs.cache-hit != 'true'
|
||||||
|
run: npx playwright install --with-deps
|
||||||
|
working-directory: ipfs-webui
|
||||||
|
# On cache hit: only ensure OS dependencies are present (fast, idempotent)
|
||||||
|
- name: Install Playwright OS dependencies
|
||||||
|
if: steps.playwright-cache.outputs.cache-hit == 'true'
|
||||||
|
run: npx playwright install-deps
|
||||||
|
working-directory: ipfs-webui
|
||||||
|
# Cache test build output
|
||||||
|
- name: Cache test build
|
||||||
|
uses: actions/cache@v5
|
||||||
|
id: test-build-cache
|
||||||
|
with:
|
||||||
|
path: ipfs-webui/build
|
||||||
|
key: ${{ runner.os }}-webui-build-${{ hashFiles('ipfs-webui/package-lock.json', 'ipfs-webui/src/**', 'ipfs-webui/public/**') }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-webui-build-
|
||||||
|
- name: Build ipfs-webui@${{ steps.webui-ref.outputs.ref }} (state=${{ steps.webui-state.outputs.state }})
|
||||||
|
if: steps.test-build-cache.outputs.cache-hit != 'true'
|
||||||
run: npm run test:build
|
run: npm run test:build
|
||||||
working-directory: ipfs-webui
|
working-directory: ipfs-webui
|
||||||
- name: Test ipfs-webui@main (state=${{ steps.state.outputs.state }}) E2E against the locally built Kubo binary
|
- name: Test ipfs-webui@${{ steps.webui-ref.outputs.ref }} (state=${{ steps.webui-state.outputs.state }}) E2E against the locally built Kubo binary
|
||||||
run: npm run test:e2e
|
run: npm run test:e2e
|
||||||
env:
|
env:
|
||||||
IPFS_GO_EXEC: ${{ github.workspace }}/cmd/ipfs/ipfs
|
IPFS_GO_EXEC: ${{ github.workspace }}/cmd/ipfs/ipfs
|
||||||
working-directory: ipfs-webui
|
working-directory: ipfs-webui
|
||||||
|
- name: Upload test artifacts on failure
|
||||||
|
if: failure()
|
||||||
|
uses: actions/upload-artifact@v6
|
||||||
|
with:
|
||||||
|
name: webui-test-results
|
||||||
|
path: ipfs-webui/test-results/
|
||||||
|
retention-days: 7
|
||||||
|
|||||||
2
go.mod
2
go.mod
@ -72,7 +72,7 @@ require (
|
|||||||
github.com/prometheus/client_golang v1.23.2
|
github.com/prometheus/client_golang v1.23.2
|
||||||
github.com/stretchr/testify v1.11.1
|
github.com/stretchr/testify v1.11.1
|
||||||
github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d
|
github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d
|
||||||
github.com/tidwall/gjson v1.16.0
|
github.com/tidwall/gjson v1.18.0
|
||||||
github.com/tidwall/sjson v1.2.5
|
github.com/tidwall/sjson v1.2.5
|
||||||
github.com/whyrusleeping/go-sysinfo v0.0.0-20190219211824-4a357d4b90b1
|
github.com/whyrusleeping/go-sysinfo v0.0.0-20190219211824-4a357d4b90b1
|
||||||
github.com/whyrusleeping/multiaddr-filter v0.0.0-20160516205228-e903e4adabd7
|
github.com/whyrusleeping/multiaddr-filter v0.0.0-20160516205228-e903e4adabd7
|
||||||
|
|||||||
4
go.sum
4
go.sum
@ -809,8 +809,8 @@ github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d/go.mod h1:RRCYJ
|
|||||||
github.com/texttheater/golang-levenshtein v1.0.1 h1:+cRNoVrfiwufQPhoMzB6N0Yf/Mqajr6t1lOv8GyGE2U=
|
github.com/texttheater/golang-levenshtein v1.0.1 h1:+cRNoVrfiwufQPhoMzB6N0Yf/Mqajr6t1lOv8GyGE2U=
|
||||||
github.com/texttheater/golang-levenshtein v1.0.1/go.mod h1:PYAKrbF5sAiq9wd+H82hs7gNaen0CplQ9uvm6+enD/8=
|
github.com/texttheater/golang-levenshtein v1.0.1/go.mod h1:PYAKrbF5sAiq9wd+H82hs7gNaen0CplQ9uvm6+enD/8=
|
||||||
github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
|
github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
|
||||||
github.com/tidwall/gjson v1.16.0 h1:SyXa+dsSPpUlcwEDuKuEBJEz5vzTvOea+9rjyYodQFg=
|
github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY=
|
||||||
github.com/tidwall/gjson v1.16.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
|
github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
|
||||||
github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA=
|
github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA=
|
||||||
github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=
|
github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=
|
||||||
github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=
|
github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user