diff --git a/.github/styles/Vocab/ipfs-docs-vocab/accept.txt b/.github/styles/Vocab/ipfs-docs-vocab/accept.txt index a107355ab..417757bc0 100644 --- a/.github/styles/Vocab/ipfs-docs-vocab/accept.txt +++ b/.github/styles/Vocab/ipfs-docs-vocab/accept.txt @@ -7,20 +7,21 @@ atcute (?i)DNSLink (?i)FQDNs? (?i)IPFS -(?i)JavaScript (?i)JS-IPFS -(?i)json -(?i)libp2p +(?i)JavaScript (?i)Merkle -(?i)Netlify (?i)NFTs? +(?i)NPM +(?i)Netlify (?i)Nginx (?i)NodeJS -(?i)NPM +(?i)OAuth (?i)PowerShell (?i)URIs? (?i)VPNs? (?i)VSCode +(?i)json +(?i)libp2p [Bb]it[Ss]wap [Bb]lockchains? [Bb]ool(ean)? diff --git a/.github/styles/pln-ignore.txt b/.github/styles/pln-ignore.txt index 7b6525df9..e03cb1771 100644 --- a/.github/styles/pln-ignore.txt +++ b/.github/styles/pln-ignore.txt @@ -1,3 +1,32 @@ +Bacalhau +Bluesky +Bootstrappers +CDN's +Caddyfile +DHT's +DNSimple +Datastores +Denylist +Filebase's +Fleek's +Gandi +IPFS's +IPIP +IPIPs +Kubo's +Lakhani +NFT's +OAuth +ORCESTRA's +PLNSpelling +SDKs +Someguy +Storacha's +Vuepress +WASM +Yamux +Zeeshan +Zelenka _redirects aave accessor @@ -17,7 +46,6 @@ atcute auditable audius auspinner -Bacalhau benchmarked bioimaging bit[ss]wap @@ -25,22 +53,18 @@ bitswap blockchain blockchains blockstore -Bluesky bool bool(ean) boolean bootstrapper bootstrappers -Bootstrappers boxo browserify buzhash caddy -Caddyfile callout callouts cas -CDN's cdn('s) cdns certbot @@ -63,18 +87,16 @@ cpu cpus crowdsourcing crypto(currencies) +dClimate daos dapps dask data('s) datastore datastores -Datastores -dClimate deduplicate deduplication denylist -Denylist dep deps deserialization @@ -82,7 +104,6 @@ deserialized devs dheeraj dht -DHT's dht('s) dhts dialable @@ -91,7 +112,6 @@ discoverability dns('s) dnsaddr dnscontrol -DNSimple dnslink dotgraph dups @@ -106,7 +126,6 @@ fabien facto failovers filebase -Filebase's filecoin filecorgi filesizes @@ -114,11 +133,9 @@ filestore flatf[ss] flatfs fleek -Fleek's fleek('s) fqdns fsspec -Gandi gasless geospatial gif @@ -142,11 +159,8 @@ infura intercomparison interop ipfs -IPFS's ipfsspec ipget -IPIP -IPIPs iroh jakub javascript @@ -163,10 +177,8 @@ keepalive keypair keystores kubo -Kubo's kubuxu laika -Lakhani lan lastalive lastbootstrap @@ -221,7 +233,6 @@ nats neocities netlify next.js -NFT's nft('s) nfts nginx @@ -230,7 +241,6 @@ npm octodns onboarding orcestra -ORCESTRA's orcestras packfile parallelizable @@ -243,7 +253,6 @@ pinset pinsets pipeable plaintext -PLNSpelling pluggable powergate powershell @@ -280,7 +289,6 @@ runtime's sandboxed satoshi satoshi nakamoto -SDKs se serverless sharded @@ -289,11 +297,9 @@ snapshotted sneakernet sneakernets someguy -Someguy stackparse stdout storacha -Storacha's storj subcommand subsetting @@ -327,11 +333,9 @@ userspace vpns vscode vue -Vuepress walkthrough wantlist wantlists -WASM web webpack webpages @@ -347,8 +351,5 @@ wifi ws wss xarray -Yamux youtube zarr -Zeeshan -Zelenka diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js index 775624d62..c7d00767b 100644 --- a/docs/.vuepress/config.js +++ b/docs/.vuepress/config.js @@ -110,6 +110,7 @@ module.exports = { ['/quickstart/pin','Pin (Browser)'], ['/quickstart/pin-cli','Pin (CLI)'], ['/how-to/websites-on-ipfs/deploy-github-action', 'Deploy to IPFS with GitHub Actions' ], + ['/how-to/websites-on-ipfs/pinion-build-github-app', 'Deploy to IPFS with the Pinion Build GitHub App' ], ] }, { @@ -130,7 +131,8 @@ module.exports = { ['/quickstart/pin','Pin (Browser)'], ['/quickstart/pin-cli','Pin (CLI)'], ['/how-to/websites-on-ipfs/deploy-github-action', 'Deploy to IPFS with GitHub Actions' ], - + ['/how-to/websites-on-ipfs/pinion-build-github-app', 'Deploy to IPFS with the Pinion Build GitHub App' ], + ] }, { @@ -266,6 +268,7 @@ module.exports = { '/how-to/websites-on-ipfs/redirects-and-custom-404s', '/how-to/websites-on-ipfs/custom-domains', '/how-to/websites-on-ipfs/deploy-github-action', + '/how-to/websites-on-ipfs/pinion-build-github-app', '/how-to/websites-on-ipfs/dnslink-action', '/how-to/websites-on-ipfs/dnslink-gateway', ] diff --git a/docs/README.md b/docs/README.md index c4cd7220d..bcc4fd930 100644 --- a/docs/README.md +++ b/docs/README.md @@ -40,6 +40,7 @@ Provide data to the IPFS network with IPFS Desktop or a pinning service: IPFS is a great fit for deploying static sites and dapps, check out the following guides to get started: - [Deploy static sites to the IPFS network with a GitHub Action](./how-to/websites-on-ipfs/deploy-github-action.md). +- [Deploy to IPFS with the Pinion Build GitHub App](./how-to/websites-on-ipfs/pinion-build-github-app.md). - [Set up a DNSLink gateway to serve your site via a custom domain](./how-to/websites-on-ipfs/dnslink-gateway.md). - [Configure static site generators for publishing to IPFS](./how-to/websites-on-ipfs/static-site-generators.md). diff --git a/docs/how-to/websites-on-ipfs/pinion-build-github-app.md b/docs/how-to/websites-on-ipfs/pinion-build-github-app.md new file mode 100644 index 000000000..765b0d456 --- /dev/null +++ b/docs/how-to/websites-on-ipfs/pinion-build-github-app.md @@ -0,0 +1,104 @@ +--- +title: Deploy to IPFS with the Pinion Build GitHub App +description: Guide on how to install and configure the Pinion Build GitHub App to automatically pin websites, releases, and build artifacts to IPFS. +--- + +# Deploy to IPFS with the Pinion Build GitHub App + +[Pinion Build](https://pinion.build) offers a [GitHub App](https://github.com/settings/apps/pinion-build) that automatically pins your repository content — websites, release assets, and build artifacts — to IPFS. It is an alternative to the [IPFS Deploy Action](./deploy-github-action.md) and operates as an external service that reacts to GitHub events. No workflow file is required. + +## When to use the GitHub App + +The GitHub App may be a good fit if any of the following apply: + +- **OAuth authentication**: The app authenticates via OAuth. No long-lived API tokens need to be created or stored as repository secrets, reducing the risk of credential exposure. +- **CI status checks**: The app posts a commit status check under the `pinion/ipfs` context, which appears as a green checkmark in the GitHub UI alongside your other checks. +- **CID visibility**: The pinned CID is shown directly in the commit status area of the GitHub interface, making it accessible to contributors without inspecting workflow logs. +- **Release and artifact pinning**: The app can pin GitHub release assets using glob pattern filters, in addition to website directories. + +## Prerequisites + +- A GitHub repository +- A [Pinion Build](https://pinion.build) account + +## Step 1: Install the GitHub App + +1. Sign in to your [Pinion Build dashboard](https://pinion.build). +2. Navigate to your profile page. +3. Click **Install the GitHub App** and follow the GitHub OAuth flow to grant Pinion Build access to the repositories you want to enable. + +Alternatively, you can initiate the installation directly from [github.com/settings/apps/pinion-build](https://github.com/settings/apps/pinion-build). + +During installation, you can choose to grant access to all repositories or only specific ones. + +## Step 2: Add a configuration file + +Add a `pinion.build.yaml` file to the root of your repository. This file tells the app what to pin. + +```yaml +version: 1 + +# Pin subdirectories on push to a branch +subdirectories: + enabled: true + branch: "main" # Branch to watch + paths: + - "dist/" # Build output directory + - "docs/" # Documentation directory + +# Pin release assets when a GitHub release is published +release_assets: + enabled: true + patterns: + - "*.tar.gz" + - "*.zip" + include_source_code: true +``` + +Commit and push this file to your repository. The app will begin reacting to events immediately. + +### Configuration reference + +#### `subdirectories` + +Pins one or more directories from your repository on every push to the configured branch. + +| Field | Type | Description | +|---|---|---| +| `enabled` | bool | Enable or disable subdirectory pinning | +| `branch` | string | The branch to watch (default: `"main"`) | +| `paths` | list of strings | Repository paths to pin independently | + +Each path is pinned as a separate IPFS object and gets its own CID. If your site is built in CI and committed to the repository (e.g. a `dist/` or `_site/` directory), this is how you pin it automatically on every push. + +#### `release_assets` + +Pins assets attached to GitHub releases. + +| Field | Type | Description | +|---|---|---| +| `enabled` | bool | Enable or disable release asset pinning | +| `patterns` | list of glob strings | Only pin assets whose filenames match these patterns | +| `include_source_code` | bool | Whether to include the auto-generated source code archives (`Source code (zip)`, `Source code (tar.gz)`) that GitHub attaches to every release | + +## Step 3: Verify the integration + +After pushing your `pinion.build.yaml` file: + +1. Open your repository on GitHub and navigate to a recent commit. +2. Click the status check indicator (the circle next to the commit hash) to expand the checks panel. +3. Look for the `pinion/ipfs` check. Once content is pinned, the check will show a green checkmark and the resulting CID. + +You can also view webhook delivery logs from the GitHub Events page in your Pinion Build dashboard to diagnose any issues. + +## Accessing your pinned content + +Once a pin is complete, you can access the content through any IPFS gateway using the CID shown in the commit status check: + +- **Public Good Gateway**: `https://.ipfs.dweb.link` +- **Service Worker Gateway**: `https://.ipfs.inbrowser.link` + +## Next steps + +- **Add a custom domain**: Use [DNSLink](./dnslink-action.md) to point a human-readable domain name at your latest pinned CID. +- **Set up a DNSLink gateway**: Serve your site over HTTPS from your own domain with a [DNSLink gateway](./dnslink-gateway.md). diff --git a/docs/install/README.md b/docs/install/README.md index 9a49751b0..be29767c8 100644 --- a/docs/install/README.md +++ b/docs/install/README.md @@ -32,6 +32,8 @@ Do you want to quickly and easily publish content with IPFS without complex tool Do you want to quickly and easily automate the deployment of static websites to the IPFS network? See the [Deploy static sites to the IPFS network with GitHub Actions](../how-to/websites-on-ipfs/deploy-github-action.md), where you'll learn how to use [GitHub Actions](https://github.com/ipshipyard/ipfs-deploy-action) to automatically deploy static websites to the IPFS network. +Alternatively, the [Pinion Build GitHub App](../how-to/websites-on-ipfs/pinion-build-github-app.md) provides OAuth-based pinning without requiring a workflow file or long-lived tokens in your repository. + ## Infrastructure Tools ### Kubo