ipshipyard/Deploy to IPFS

Merkleize a static site into a CAR file (IPFS DAG). Optionally pin to your own Kubo or IPFS Cluster. Compose with any third-party pinning service via its own action or CLI.

View on GitHub

Trust Signals

Scorecard Score
not yet scored
Maintenance Recency
Activelast commit Jul 9, 2026
License
None

Pinned Snippet

workflow.ymlSHA-pinned
uses: ipshipyard/ipfs-deploy-action@a18ef08993e485391c5879770d9bc9f1143653ce # v2.0.0

tags can be moved; commit SHAs can't. why a SHA?

namedescriptionrequireddefault
kubo-versionKubo version used to merkleize, create CAR file, and pin https://dist.ipfs.tech/kubo/versionsnov0.42.0
path-to-deployPath to the directory containing the frontend build to merkleize into a CAR file and deploy to IPFSyes
cid-profileKubo CID profile applied before merkleizing. Controls default CID version, chunker, raw leaves, and HAMT settings. Valid values: `unixfs-v1-2025` (recommended, follows IPIP-0499) or `unixfs-v0-2015` (legacy 2015 defaults). Pass an empty string to skip applying any profile and rely on Kubo built-in defaults.nounixfs-v1-2025
ipfs-add-optionsExtra options to pass to Kubo `ipfs add`. Default is empty so the chosen `cid-profile` governs CID version, chunker, raw-leaves, and link fanout. Override only when you need to deviate from the profile. See https://docs.ipfs.tech/reference/kubo/cli/#ipfs-add.no""
kubo-api-urlKubo RPC API URL to pass to `ipfs --api`, e.g. `/dns/YOUR_DOMAIN/tcp/443/https`no
kubo-api-authKubo RPC API auth secret to pass to `ipfs --api-auth`, e.g. `basic:hello:world` (defined as `AuthSecret` in `API.Authorizations` Kubo config)no
cluster-urlIPFS Cluster URL to pass to ipfs-cluster-ctl --host, e.g. /dnsaddr/...no
cluster-userIPFS Cluster username used for basic http authno
cluster-passwordIPFS Cluster password used for basic http authno
cluster-retry-attemptsNumber of retry attempts for IPFS Cluster uploads. Must be a positive integer.no3
cluster-timeout-minutesTimeout in minutes for each IPFS Cluster upload attemptno5
ipfs-cluster-ctl-versionIPFS Cluster CLI version to usenov1.1.6
cluster-pin-expire-inTime duration after which the pin will expire in IPFS Cluster (e.g. 720h for 30 days). Only supported by IPFS Cluster.no
pin-nameCustom name for the IPFS Cluster pin. If unset, defaults to "{repo-name}-{commit-sha-short}"no
github-tokenGitHub token for updating commit status and PR commentsyes
set-github-statusSet GitHub commit status with build CID. Use "true" or "false" (as strings). If unset, the status is set only when a Kubo or IPFS Cluster pin is configured.no""
github-status-gwGateway URL to use for the commit status target_url. Defaults to `inbrowser.link`noinbrowser.link
set-pr-commentSet PR comments with IPFS deployment information. Use "true" or "false" (as strings). If unset, the comment is posted only when a Kubo or IPFS Cluster pin is configured.no""
upload-car-artifactUpload the CAR file as a GitHub artifactnotrue
car-file-nameLocal filename for the produced CAR. Useful when running this action more than once in the same job, or when downstream steps expect a specific filename. Exposed via the `car-path` output.nobuild.car
pinata-jwt-token[REMOVED in v2] Native Pinata pinning was removed. See ./docs/recipes/pinata.mdno
pinata-pinning-url[REMOVED in v2] Native Pinata pinning was removed. See ./docs/recipes/pinata.mdno
filebase-access-key[REMOVED in v2] Native Filebase upload was removed. See ./docs/recipes/filebase.mdno
filebase-secret-key[REMOVED in v2] Native Filebase upload was removed. See ./docs/recipes/filebase.mdno
filebase-bucket[REMOVED in v2] Native Filebase upload was removed. See ./docs/recipes/filebase.mdno
storacha-key[REMOVED in v2] Storacha service was sunset on 2026-04-15. Pick another service from ./docs/recipes/no
storacha-proof[REMOVED in v2] Storacha service was sunset on 2026-04-15. Pick another service from ./docs/recipes/no
namedescription
cidRoot CID of the produced CAR
car-pathWorkspace-relative path to the produced CAR file. Follow-up steps can read it directly without assuming the filename.
car-artifact-nameName under which the CAR was uploaded as a GitHub workflow artifact. Empty when `upload-car-artifact` is `false`.