Deploy to ipfs (#2778)

* Deploy to ipfs

* PINATA secrets

* Make <hash>.ipfs

* Use pinata sdk

* pin.json
This commit is contained in:
Jaco Greeff 2020-05-20 11:49:37 +02:00 committed by GitHub
parent 4b0bcefd83
commit b220fc3a50
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 542 additions and 268 deletions

View File

@ -8,7 +8,7 @@ jobs:
master:
strategy:
matrix:
step: ['build:release:www', 'build:release:electron', 'build:release:ipfs']
step: ['build:release:www', 'build:release:electron']
name: ${{ matrix.step }}
if: "! contains(github.event.head_commit.message, '[CI Skip]') && github.repository == 'polkadot-js/apps'"
runs-on: ubuntu-latest
@ -22,6 +22,8 @@ jobs:
GH_PAGES_SRC: packages/apps/build
GH_PAT: ${{ secrets.GH_PAT }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
PINATA_API_KEY: ${{ secrets.PINATA_API_KEY }}
PINATA_SECRET_KEY: ${{ secrets.PINATA_SECRET_KEY }}
run: |
yarn install --immutable | grep -v 'YN0013'
yarn ${{ matrix.step }}

View File

@ -8,7 +8,7 @@
A Portal into the Polkadot and Substrate networks. Provides a view and interaction layer from a browser.
This can be accessed as a hosted application via [https://polkadot.js.org/apps/](https://polkadot.js.org/apps/) to explorer any of the supported Polkadot and Substrate chains
This can be accessed as a hosted application via [https://polkadot.js.org/apps/](https://polkadot.js.org/apps/) or you can access the [IPFS hosted version](https://polkadot.js.org/apps/ipfs) to explore any of the supported Polkadot and Substrate chains
**Important** If you are a chain developer and would like to add support for your chain to the UI, all the local configuration (API types, settings, logos) can be customized in [the apps-config package](packages/apps-config#README.md), complete with instructions of what goes where.

View File

@ -23,8 +23,9 @@
"build:electron": "echo \"Dummy\"",
"build:i18n": "i18next-scanner --config i18next-scanner.config.js && node ./scripts/i18nSort.js",
"build:release:electron": "echo \"Dummy\"",
"build:release:ipfs": "echo \"Dummy\"",
"build:release:www": "yarn polkadot-ci-ghact-build && yarn polkadot-ci-ghact-docs",
"build:release:ipfs": "node scripts/ipfsUpload.js",
"build:release:ghpages": "yarn polkadot-ci-ghact-docs",
"build:release:www": "yarn polkadot-ci-ghact-build && yarn build:release:ipfs && yarn build:release:ghpages",
"build:www": "rm -rf packages/apps/build && mkdir -p packages/apps/build && yarn run build:i18n && cd packages/apps && NODE_ENV=production webpack --config webpack.config.js",
"docs": "echo \"skipping docs\"",
"clean": "polkadot-dev-clean-build",
@ -40,6 +41,7 @@
"@babel/core": "^7.9.6",
"@babel/register": "^7.9.0",
"@babel/runtime": "^7.9.6",
"@pinata/sdk": "^1.1.9",
"@polkadot/dev": "^0.53.5",
"@polkadot/ts": "^0.3.22",
"@types/bn.js": "^4.11.6",

View File

@ -0,0 +1,10 @@
<!DOCTYPE html>
<html>
<head>
<title>Redirecting to latest deployed IPFS instance</title>
<meta http-equiv="refresh" content="2; url=${url}" />
</head>
<body>
<p>Redirecting you to <a href="${url}">${url}</a></p>
</body>
</html>

35
scripts/ipfsUpload.js Normal file
View File

@ -0,0 +1,35 @@
// Copyright 2017-2020 @polkadot/apps authors & contributors
// This software may be modified and distributed under the terms
// of the Apache-2.0 license. See the LICENSE file for details.
const fs = require('fs');
const pinataSDK = require('@pinata/sdk');
const ROOT = 'packages/apps/build';
const pinata = pinataSDK(process.env.PINATA_API_KEY, process.env.PINATA_SECRET_KEY);
async function main () {
const result = await pinata.pinFromFS(ROOT);
const url = `https://ipfs.io/ipfs/${result.IpfsHash}/`; // `https://gateway.pinata.cloud/ipfs/${pinnedHash}/`;
const html = `<!DOCTYPE html>
<html>
<head>
<title>Redirecting to latest deployed IPFS instance</title>
<meta http-equiv="refresh" content="2; url=${url}" />
</head>
<body>
<p>Redirecting you to <a href="${url}">${url}</a></p>
</body>
</html>`;
fs.writeFileSync(`${ROOT}/ipfs/index.html`, html);
fs.writeFileSync(`${ROOT}/ipfs/pin.json`, JSON.stringify(result));
fs.writeFileSync(`${ROOT}/ipfs/${result.IpfsHash}.ipfs`, result.IpfsHash);
console.log(`Deployed to ${url}`);
}
main()
.catch(console.error)
.finally(() => process.exit());

753
yarn.lock

File diff suppressed because it is too large Load Diff