Skip to content

Commit 846c5cc

Browse files
authored
Merge pull request #10490 from ipfs/release-v0.30.0
Release: v0.30.0 [skip changelog]
2 parents 3f0947b + aa355da commit 846c5cc

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

72 files changed

+2934
-1416
lines changed

.github/workflows/docker-image.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ jobs:
7272
# builds, only one platform is being loaded into the cache. This would
7373
# prevent us from testing the other platforms.
7474
- name: Build Docker image (linux/amd64)
75-
uses: docker/build-push-action@v5
75+
uses: docker/build-push-action@v6
7676
with:
7777
platforms: linux/amd64
7878
context: .
@@ -84,7 +84,7 @@ jobs:
8484
cache-to: type=local,dest=/tmp/.buildx-cache-new
8585

8686
- name: Build Docker image (linux/arm/v7)
87-
uses: docker/build-push-action@v5
87+
uses: docker/build-push-action@v6
8888
with:
8989
platforms: linux/arm/v7
9090
context: .
@@ -96,7 +96,7 @@ jobs:
9696
cache-to: type=local,dest=/tmp/.buildx-cache-new
9797

9898
- name: Build Docker image (linux/arm64/v8)
99-
uses: docker/build-push-action@v5
99+
uses: docker/build-push-action@v6
100100
with:
101101
platforms: linux/arm64/v8
102102
context: .
@@ -116,7 +116,7 @@ jobs:
116116
# This will only push the previously built images.
117117
- if: github.event_name != 'workflow_dispatch' || github.event.inputs.push == 'true'
118118
name: Publish to Docker Hub
119-
uses: docker/build-push-action@v5
119+
uses: docker/build-push-action@v6
120120
with:
121121
platforms: linux/amd64,linux/arm/v7,linux/arm64/v8
122122
context: .

.github/workflows/gateway-conformance.yml

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ jobs:
4141
steps:
4242
# 1. Download the gateway-conformance fixtures
4343
- name: Download gateway-conformance fixtures
44-
uses: ipfs/gateway-conformance/.github/actions/extract-fixtures@v0.5
44+
uses: ipfs/gateway-conformance/.github/actions/extract-fixtures@v0.6
4545
with:
4646
output: fixtures
4747

@@ -84,9 +84,7 @@ jobs:
8484
8585
# Import dnslink records
8686
# the IPFS_NS_MAP env will be used by the daemon
87-
export IPFS_NS_MAP=$(cat "./fixtures/dnslinks.json" | jq -r '.subdomains | to_entries | map("\(.key).example.com:\(.value)") | join(",")')
88-
export IPFS_NS_MAP="$(cat "./fixtures/dnslinks.json" | jq -r '.domains | to_entries | map("\(.key):\(.value)") | join(",")'),${IPFS_NS_MAP}"
89-
echo "IPFS_NS_MAP=${IPFS_NS_MAP}" >> $GITHUB_ENV
87+
echo "IPFS_NS_MAP=$(cat ./fixtures/dnslinks.IPFS_NS_MAP)" >> $GITHUB_ENV
9088
9189
# 5. Start the kubo-gateway
9290
- name: Start kubo-gateway
@@ -96,14 +94,15 @@ jobs:
9694

9795
# 6. Run the gateway-conformance tests
9896
- name: Run gateway-conformance tests
99-
uses: ipfs/gateway-conformance/.github/actions/test@v0.5
97+
uses: ipfs/gateway-conformance/.github/actions/test@v0.6
10098
with:
10199
gateway-url: http://127.0.0.1:8080
100+
subdomain-url: http://localhost:8080
101+
args: -skip 'TestGatewayCar/GET_response_for_application/vnd.ipld.car/Header_Content-Length'
102102
json: output.json
103103
xml: output.xml
104104
html: output.html
105105
markdown: output.md
106-
args: -skip 'TestGatewayCar/GET_response_for_application/vnd.ipld.car/Header_Content-Length'
107106

108107
# 7. Upload the results
109108
- name: Upload MD summary
@@ -129,7 +128,7 @@ jobs:
129128
steps:
130129
# 1. Download the gateway-conformance fixtures
131130
- name: Download gateway-conformance fixtures
132-
uses: ipfs/gateway-conformance/.github/actions/extract-fixtures@v0.5
131+
uses: ipfs/gateway-conformance/.github/actions/extract-fixtures@v0.6
133132
with:
134133
output: fixtures
135134

@@ -202,14 +201,14 @@ jobs:
202201

203202
# 9. Run the gateway-conformance tests over libp2p
204203
- name: Run gateway-conformance tests over libp2p
205-
uses: ipfs/gateway-conformance/.github/actions/test@v0.5
204+
uses: ipfs/gateway-conformance/.github/actions/test@v0.6
206205
with:
207206
gateway-url: http://127.0.0.1:8092
207+
args: --specs "trustless-gateway,-trustless-ipns-gateway" -skip 'TestGatewayCar/GET_response_for_application/vnd.ipld.car/Header_Content-Length'
208208
json: output.json
209209
xml: output.xml
210210
html: output.html
211211
markdown: output.md
212-
args: --specs "trustless-gateway,-trustless-ipns-gateway" -skip 'TestGatewayCar/GET_response_for_application/vnd.ipld.car/Header_Content-Length'
213212

214213
# 10. Upload the results
215214
- name: Upload MD summary
Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,9 +70,27 @@ jobs:
7070
restore-keys: ${{ runner.os }}-${{ github.job }}-helia-
7171
- run: sudo apt update
7272
- run: sudo apt install -y libxkbcommon0 libxdamage1 libgbm1 libpango-1.0-0 libcairo2 # dependencies for playwright
73-
- run: npx --package @helia/interop helia-interop
73+
74+
# TODO: for now run against version from https://github.com/ipfs/helia/pull/584
75+
- name: Checkout helia-interop with provisional fix
76+
uses: actions/checkout@v4
77+
with:
78+
repository: ipfs/helia
79+
ref: ab6b385787075ad9932f24362293b3bb82ff1d96
80+
path: helia
81+
- name: Run provisional build of helia
82+
run: npm i && npm run build
83+
working-directory: helia
84+
- name: Run provisional build of helia-interop
85+
run: npm i && npm run build && npx .
86+
working-directory: helia/packages/interop
7487
env:
7588
KUBO_BINARY: ${{ github.workspace }}/cmd/ipfs/ipfs
89+
90+
# TODO: switch back to release once https://github.com/ipfs/helia/pull/584 ships
91+
#- run: npx --package @helia/interop helia-interop
92+
# env:
93+
# KUBO_BINARY: ${{ github.workspace }}/cmd/ipfs/ipfs
7694
ipfs-webui:
7795
needs: [interop-prep]
7896
runs-on: ${{ fromJSON(github.repository == 'ipfs/kubo' && '["self-hosted", "linux", "x64", "2xlarge"]' || '"ubuntu-latest"') }}

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# Kubo Changelogs
22

3+
- [v0.30](docs/changelogs/v0.30.md)
34
- [v0.29](docs/changelogs/v0.29.md)
45
- [v0.28](docs/changelogs/v0.28.md)
56
- [v0.27](docs/changelogs/v0.27.md)

README.md

Lines changed: 44 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,11 +73,13 @@ Before opening an issue, consider using one of the following locations to ensure
7373
- [Downloading builds using IPFS](#downloading-builds-using-ipfs)
7474
- [Unofficial Linux packages](#unofficial-linux-packages)
7575
- [ArchLinux](#arch-linux)
76+
- [Gentoo Linux](#gentoo-linux)
7677
- [Nix](#nix)
7778
- [Solus](#solus)
7879
- [openSUSE](#opensuse)
7980
- [Guix](#guix)
8081
- [Snap](#snap)
82+
- [Ubuntu PPA](#ubuntu-ppa)
8183
- [Unofficial Windows packages](#unofficial-windows-packages)
8284
- [Chocolatey](#chocolatey)
8385
- [Scoop](#scoop)
@@ -198,11 +200,13 @@ $ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_windows-amd64.zip
198200
</a>
199201

200202
- [ArchLinux](#arch-linux)
203+
- [Gentoo Linux](#gentoo-linux)
201204
- [Nix](#nix-linux)
202205
- [Solus](#solus)
203206
- [openSUSE](#opensuse)
204207
- [Guix](#guix)
205208
- [Snap](#snap)
209+
- [Ubuntu PPA](#ubuntu-ppa)
206210

207211
#### Arch Linux
208212

@@ -214,6 +218,16 @@ $ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_windows-amd64.zip
214218

215219
[![kubo-git via AUR](https://img.shields.io/static/v1?label=kubo-git&message=latest%40master&color=1793d1&logo=arch-linux&style=flat-square&cacheSeconds=3600)](https://aur.archlinux.org/packages/kubo/)
216220

221+
#### <a name="gentoo-linux">Gentoo Linux</a>
222+
223+
https://wiki.gentoo.org/wiki/Kubo
224+
225+
```bash
226+
# emerge -a net-p2p/kubo
227+
```
228+
229+
https://packages.gentoo.org/packages/net-p2p/kubo
230+
217231
#### <a name="nix-linux">Nix</a>
218232

219233
With the purely functional package manager [Nix](https://nixos.org/nix/) you can install kubo (go-ipfs) like this:
@@ -246,6 +260,31 @@ You can also install it through the Solus software center.
246260

247261
No longer supported, see rationale in [kubo#8688](https://github.com/ipfs/kubo/issues/8688).
248262

263+
#### Ubuntu PPA
264+
265+
[PPA homepage](https://launchpad.net/~twdragon/+archive/ubuntu/ipfs) on Launchpad.
266+
267+
##### Latest Ubuntu (>= 20.04 LTS)
268+
```sh
269+
sudo add-apt-repository ppa:twdragon/ipfs
270+
sudo apt update
271+
sudo apt install ipfs-kubo
272+
```
273+
274+
##### Any Ubuntu version
275+
276+
```sh
277+
sudo su
278+
echo 'deb https://ppa.launchpadcontent.net/twdragon/ipfs/ubuntu <<DISTRO>> main' >> /etc/apt/sources.list.d/ipfs
279+
echo 'deb-src https://ppa.launchpadcontent.net/twdragon/ipfs/ubuntu <<DISTRO>> main' >> /etc/apt/sources.list.d/ipfs
280+
exit
281+
sudo apt update
282+
sudo apt install ipfs-kubo
283+
```
284+
where `<<DISTRO>>` is the codename of your Ubuntu distribution (for example, `jammy` for 22.04 LTS). During the first installation the package maintenance script may automatically ask you about which networking profile, CPU accounting model, and/or existing node configuration file you want to use.
285+
286+
**NOTE**: this method also may work with any compatible Debian-based distro which has `libc6` inside, and APT as a package manager.
287+
249288
### Unofficial Windows packages
250289

251290
- [Chocolatey](#chocolatey)
@@ -432,9 +471,11 @@ If you make changes to the protocol buffers, you will need to install the [proto
432471
Find more documentation for developers on [docs](./docs)
433472

434473
## Maintainer Info
435-
* [Project Board for active and upcoming work](https://pl-strflt.notion.site/Kubo-GitHub-Project-Board-c68f9192e48e4e9eba185fa697bf0570)
436-
* [Release Process](https://pl-strflt.notion.site/Kubo-Release-Process-5a5d066264704009a28a79cff93062c4)
437-
* [Additional PL EngRes Kubo maintainer info](https://pl-strflt.notion.site/Kubo-go-ipfs-4a484aeeaa974dcf918027c300426c05)
474+
475+
Kubo is maintained by [Shipyard](https://ipshipyard.com/).
476+
477+
* This repository is part of [Shipyard's GO Triage triage](https://ipshipyard.notion.site/IPFS-Go-Triage-Boxo-Kubo-Rainbow-0ddee6b7f28d412da7dabe4f9107c29a).
478+
* [Release Process](https://ipshipyard.notion.site/Kubo-Release-Process-6dba4f5755c9458ab5685eeb28173778)
438479

439480

440481
## Contributing

Rules.mk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ help:
123123
@echo ' build - Build binary at ./cmd/ipfs/ipfs'
124124
@echo ' nofuse - Build binary with no fuse support'
125125
@echo ' install - Build binary and install into $$GOBIN'
126-
@echo ' mod_tidy - Remove unused dependencis from go.mod files'
126+
@echo ' mod_tidy - Remove unused dependencies from go.mod files'
127127
# @echo ' dist_install - TODO: c.f. ./cmd/ipfs/dist/README.md'
128128
@echo ''
129129
@echo 'CLEANING TARGETS:'

client/rpc/api.go

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"encoding/json"
66
"errors"
77
"fmt"
8+
"net"
89
"net/http"
910
"os"
1011
"path/filepath"
@@ -98,11 +99,29 @@ func ApiAddr(ipfspath string) (ma.Multiaddr, error) {
9899

99100
// NewApi constructs HttpApi with specified endpoint.
100101
func NewApi(a ma.Multiaddr) (*HttpApi, error) {
102+
transport := &http.Transport{
103+
Proxy: http.ProxyFromEnvironment,
104+
DisableKeepAlives: true,
105+
}
106+
107+
network, address, err := manet.DialArgs(a)
108+
if err != nil {
109+
return nil, err
110+
}
111+
if network == "unix" {
112+
transport.DialContext = func(_ context.Context, _, _ string) (net.Conn, error) {
113+
return net.Dial("unix", address)
114+
}
115+
c := &http.Client{
116+
Transport: transport,
117+
}
118+
// This will create an API client which
119+
// makes requests to `http://unix`.
120+
return NewURLApiWithClient(network, c)
121+
}
122+
101123
c := &http.Client{
102-
Transport: &http.Transport{
103-
Proxy: http.ProxyFromEnvironment,
104-
DisableKeepAlives: true,
105-
},
124+
Transport: transport,
106125
}
107126

108127
return NewApiWithClient(a, c)

0 commit comments

Comments
 (0)