ci: switch from testing against js-ipfs to helia #1676
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: Interop | |
on: | |
workflow_dispatch: | |
pull_request: | |
paths-ignore: | |
- '**/*.md' | |
push: | |
branches: | |
- 'master' | |
env: | |
GO_VERSION: 1.19.x | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.event_name == 'push' && github.sha || github.ref }} | |
cancel-in-progress: true | |
defaults: | |
run: | |
shell: bash | |
jobs: | |
interop-prep: | |
if: github.repository == 'ipfs/kubo' || github.event_name == 'workflow_dispatch' | |
runs-on: ubuntu-latest | |
timeout-minutes: 5 | |
env: | |
TEST_DOCKER: 0 | |
TEST_FUSE: 0 | |
TEST_VERBOSE: 1 | |
TRAVIS: 1 | |
GIT_PAGER: cat | |
IPFS_CHECK_RCMGR_DEFAULTS: 1 | |
defaults: | |
run: | |
shell: bash | |
steps: | |
- uses: actions/setup-go@v3 | |
with: | |
go-version: ${{ env.GO_VERSION }} | |
- uses: actions/checkout@v3 | |
- uses: protocol/cache-go-action@v1 | |
with: | |
name: ${{ github.job }} | |
- run: make build | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: kubo | |
path: cmd/ipfs/ipfs | |
helia-interop: | |
needs: [interop-prep] | |
runs-on: ${{ fromJSON(github.repository == 'ipfs/kubo' && '["self-hosted", "linux", "x64", "2xlarge"]' || '"ubuntu-latest"') }} | |
timeout-minutes: 20 | |
defaults: | |
run: | |
shell: bash | |
strategy: | |
matrix: | |
repo-to-test-against: ["helia", "helia-ipns", "helia-unixfs"] # this needs to be manually kept in sync as new helia tests are written | |
steps: | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: lts/* | |
- uses: actions/download-artifact@v3 | |
with: | |
name: kubo | |
path: cmd/ipfs | |
- run: chmod +x cmd/ipfs/ipfs | |
- run: echo "dir=$(npm config get cache)" >> $GITHUB_OUTPUT | |
id: npm-cache-dir | |
- uses: actions/cache@v3 | |
with: | |
path: ${{ steps.npm-cache-dir.outputs.dir }} | |
key: ${{ runner.os }}-${{ github.job }}-${{ matrix.repo-to-test-against }}-${{ hashFiles('**/package-lock.json') }} | |
restore-keys: ${{ runner.os }}-${{ github.job }}-${{ matrix.repo-to-test-against }}- | |
- run: sudo apt update | |
- run: sudo apt install -y libxkbcommon0 libxdamage1 libgbm1 libpango-1.0-0 libcairo2 # dependencies for playwright | |
- uses: actions/checkout@v3 | |
with: | |
repository: ipfs/${{ matrix.repo-to-test-against }} | |
fetch-depth: 0 | |
path: interop | |
- name: Checkout latest tag | |
run: | | |
exit 0 # temporary while theses pull requests are released: | |
# https://github.com/ipfs/helia/pull/200 | |
# https://github.com/ipfs/helia-unixfs/pull/68 | |
# https://github.com/ipfs/helia-ipns/pull/72 | |
export TAG="$(git describe --tags --abbrev=0)" | |
echo "Running tests against: $TAG" | |
git checkout "$TAG" | |
working-directory: interop | |
- run: npm install | |
working-directory: interop | |
- run: npm run build | |
working-directory: interop | |
- run: npm install | |
working-directory: interop/packages/interop | |
- run: npm install --ignore-scripts --save "ipfs/npm-go-ipfs#4441b8a60f1cfee3035a9e4bb824dfcca08e9b01" # temporary while https://github.com/ipfs/npm-go-ipfs/pull/62 is being bubbled | |
working-directory: interop/packages/interop | |
- run: npm test | |
working-directory: interop/packages/interop | |
env: | |
KUBO_BINARY: ${{ github.workspace }}/cmd/ipfs/ipfs | |
go-ipfs-api: | |
needs: [interop-prep] | |
runs-on: ubuntu-latest | |
timeout-minutes: 5 | |
env: | |
TEST_DOCKER: 0 | |
TEST_FUSE: 0 | |
TEST_VERBOSE: 1 | |
TRAVIS: 1 | |
GIT_PAGER: cat | |
IPFS_CHECK_RCMGR_DEFAULTS: 1 | |
defaults: | |
run: | |
shell: bash | |
steps: | |
- uses: actions/setup-go@v3 | |
with: | |
go-version: ${{ env.GO_VERSION }} | |
- uses: actions/download-artifact@v3 | |
with: | |
name: kubo | |
path: cmd/ipfs | |
- run: chmod +x cmd/ipfs/ipfs | |
- uses: actions/checkout@v3 | |
with: | |
repository: ipfs/go-ipfs-api | |
path: go-ipfs-api | |
- run: cmd/ipfs/ipfs daemon --init --enable-namesys-pubsub & | |
- run: | | |
while ! cmd/ipfs/ipfs id --api=/ip4/127.0.0.1/tcp/5001 2>/dev/null; do | |
sleep 1 | |
done | |
timeout-minutes: 5 | |
- uses: protocol/cache-go-action@v1 | |
with: | |
name: ${{ github.job }} | |
- run: go test -count=1 -v ./... | |
working-directory: go-ipfs-api | |
- run: cmd/ipfs/ipfs shutdown | |
if: always() | |
ipfs-webui: | |
needs: [interop-prep] | |
runs-on: ${{ fromJSON(github.repository == 'ipfs/kubo' && '["self-hosted", "linux", "x64", "2xlarge"]' || '"ubuntu-latest"') }} | |
timeout-minutes: 20 | |
env: | |
NO_SANDBOX: true | |
LIBP2P_TCP_REUSEPORT: false | |
LIBP2P_ALLOW_WEAK_RSA_KEYS: 1 | |
E2E_IPFSD_TYPE: go | |
TRAVIS: 1 | |
GIT_PAGER: cat | |
IPFS_CHECK_RCMGR_DEFAULTS: 1 | |
defaults: | |
run: | |
shell: bash | |
steps: | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: 18.14.0 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: kubo | |
path: cmd/ipfs | |
- run: chmod +x cmd/ipfs/ipfs | |
- uses: actions/checkout@v3 | |
with: | |
repository: ipfs/ipfs-webui | |
path: ipfs-webui | |
- run: | | |
echo "dir=$(npm config get cache)" >> $GITHUB_OUTPUT | |
id: npm-cache-dir | |
- uses: actions/cache@v3 | |
with: | |
path: ${{ steps.npm-cache-dir.outputs.dir }} | |
key: ${{ runner.os }}-${{ github.job }}-${{ hashFiles('**/package-lock.json') }} | |
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 | |
working-directory: ipfs-webui | |
- id: state | |
env: | |
GITHUB_TOKEN: ${{ github.token }} | |
ENDPOINT: repos/ipfs/ipfs-webui/commits/${{ steps.ref.outputs.ref }}/status | |
SELECTOR: .state | |
KEY: state | |
run: gh api "$ENDPOINT" --jq "$SELECTOR" | xargs -I{} echo "$KEY={}" | tee -a $GITHUB_OUTPUT | |
- name: Build ipfs-webui@main (state=${{ steps.state.outputs.state }}) | |
run: npm run test:build | |
working-directory: ipfs-webui | |
- name: Test ipfs-webui@main (state=${{ steps.state.outputs.state }}) E2E against the locally built Kubo binary | |
run: npm run test:e2e | |
env: | |
IPFS_GO_EXEC: ${{ github.workspace }}/cmd/ipfs/ipfs | |
working-directory: ipfs-webui |