-101
.github/deploy/deploy.js
-101
.github/deploy/deploy.js
···
1
-
const {
2
-
PINATA_API_KEY,
3
-
PINATA_API_SECRET,
4
-
5
-
CLOUDFLARE_TOKEN,
6
-
CLOUDFLARE_DNS_ZONE_ID,
7
-
CLOUDFLARE_DNS_IDENTIFIER,
8
-
9
-
GITHUB_RUN_ID,
10
-
} = process.env
11
-
12
-
const buildURL = `https://www.github.com/jphastings/miriscient.org/actions/runs/${GITHUB_RUN_ID}`
13
-
const pinataPinName = 'miriscient.org'
14
-
const domain = 'www.miriscient.org'
15
-
16
-
const path = require('path')
17
-
const pinata = require('@pinata/sdk')(PINATA_API_KEY, PINATA_API_SECRET)
18
-
const cloudflare = require('cloudflare')({ token: CLOUDFLARE_TOKEN })
19
-
20
-
build().then(pinataPin).then(cloudflareUpdate).then(pinataUnpinPrevious).catch(console.error)
21
-
22
-
async function build() {
23
-
return path.join(__dirname, '..', '..', 'public')
24
-
}
25
-
26
-
async function pinataPin(rootPath) {
27
-
console.log(`Pinning new version:`)
28
-
const response = await pinata.pinFromFS(rootPath, {
29
-
pinataMetadata: {
30
-
name: pinataPinName,
31
-
keyvalues: { buildURL }
32
-
},
33
-
pinataOptions: {
34
-
cidVerson: 1,
35
-
wrapWithDirectory: false,
36
-
customPinPolicy: {
37
-
regions: [
38
-
{
39
-
id: 'FRA1',
40
-
desiredReplicationCount: 1
41
-
},
42
-
{
43
-
id: 'NYC1',
44
-
desiredReplicationCount: 1
45
-
}
46
-
]
47
-
}
48
-
}
49
-
})
50
-
51
-
console.log(` ✅ ${response.IpfsHash}`)
52
-
53
-
return response.IpfsHash
54
-
}
55
-
56
-
async function cloudflareUpdate(rootHash) {
57
-
const txtRecord = `dnslink=/ipfs/${rootHash}`
58
-
59
-
const opts = {
60
-
type: 'TXT',
61
-
name: `_dnslink.${domain}`,
62
-
content: `dnslink=/ipfs/${rootHash}`,
63
-
ttl: 1,
64
-
}
65
-
66
-
67
-
const response = await cloudflare.dnsRecords.edit(
68
-
CLOUDFLARE_DNS_ZONE_ID,
69
-
CLOUDFLARE_DNS_IDENTIFIER,
70
-
opts
71
-
)
72
-
73
-
if (!response.success) {
74
-
throw new Error("Failed to update Cloudflare: " + response.errors)
75
-
}
76
-
77
-
return rootHash
78
-
}
79
-
80
-
async function pinataUnpinPrevious(rootHash) {
81
-
console.log("Finding old versions to unpin:")
82
-
const response = await pinata.pinList({
83
-
metadata: { name: pinataPinName }
84
-
})
85
-
86
-
const deletes = []
87
-
88
-
response.rows.forEach((pin) => {
89
-
if (pin.ipfs_pin_hash == rootHash) {
90
-
return
91
-
}
92
-
93
-
deletes.push(
94
-
pinata.unpin(pin.ipfs_pin_hash)
95
-
.then(() => console.log(` 👍 Unpinned ${pin.ipfs_pin_hash}`))
96
-
.catch(() => console.log(` 👍 Already unpinned ${pin.ipfs_pin_hash}`))
97
-
)
98
-
})
99
-
100
-
return Promise.all(deletes)
101
-
}
-521
.github/deploy/package-lock.json
-521
.github/deploy/package-lock.json
···
1
-
{
2
-
"name": "deploy",
3
-
"requires": true,
4
-
"lockfileVersion": 1,
5
-
"dependencies": {
6
-
"@pinata/sdk": {
7
-
"version": "1.1.10",
8
-
"resolved": "https://registry.npmjs.org/@pinata/sdk/-/sdk-1.1.10.tgz",
9
-
"integrity": "sha512-9obonY9Hu9VI8Dhkz4GM9rFaPoaOdhnLM63vB4DbwY6EUQL/QBmXF6G6i8PLJNHggz6ucxGeynsSXjEgB4psSQ==",
10
-
"dev": true,
11
-
"requires": {
12
-
"axios": "^0.18.1",
13
-
"base-path-converter": "^1.0.2",
14
-
"form-data": "^2.3.3",
15
-
"is-ipfs": "^0.6.0",
16
-
"recursive-fs": "^1.1.2"
17
-
}
18
-
},
19
-
"agent-base": {
20
-
"version": "4.3.0",
21
-
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz",
22
-
"integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==",
23
-
"dev": true,
24
-
"requires": {
25
-
"es6-promisify": "^5.0.0"
26
-
}
27
-
},
28
-
"asynckit": {
29
-
"version": "0.4.0",
30
-
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
31
-
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
32
-
"dev": true
33
-
},
34
-
"autocreate": {
35
-
"version": "1.2.0",
36
-
"resolved": "https://registry.npmjs.org/autocreate/-/autocreate-1.2.0.tgz",
37
-
"integrity": "sha1-UiFnmSxBcsFUeeX4jzSGpFKkDLo=",
38
-
"dev": true
39
-
},
40
-
"axios": {
41
-
"version": "0.18.1",
42
-
"resolved": "https://registry.npmjs.org/axios/-/axios-0.18.1.tgz",
43
-
"integrity": "sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g==",
44
-
"dev": true,
45
-
"requires": {
46
-
"follow-redirects": "1.5.10",
47
-
"is-buffer": "^2.0.2"
48
-
}
49
-
},
50
-
"base-path-converter": {
51
-
"version": "1.0.2",
52
-
"resolved": "https://registry.npmjs.org/base-path-converter/-/base-path-converter-1.0.2.tgz",
53
-
"integrity": "sha512-51R8JiuXadknn6ouVUteOhDpmI3G5u5GqjruL7bPJpfxUHVgosaO5uPAvRP4FeR4VyyH4sSvsN78Ci6ouoRYqQ==",
54
-
"dev": true
55
-
},
56
-
"base-x": {
57
-
"version": "3.0.8",
58
-
"resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.8.tgz",
59
-
"integrity": "sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA==",
60
-
"dev": true,
61
-
"requires": {
62
-
"safe-buffer": "^5.0.1"
63
-
}
64
-
},
65
-
"base64-js": {
66
-
"version": "1.3.1",
67
-
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz",
68
-
"integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==",
69
-
"dev": true
70
-
},
71
-
"bs58": {
72
-
"version": "4.0.1",
73
-
"resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz",
74
-
"integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=",
75
-
"dev": true,
76
-
"requires": {
77
-
"base-x": "^3.0.2"
78
-
}
79
-
},
80
-
"buffer": {
81
-
"version": "5.6.0",
82
-
"resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz",
83
-
"integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==",
84
-
"dev": true,
85
-
"requires": {
86
-
"base64-js": "^1.0.2",
87
-
"ieee754": "^1.1.4"
88
-
}
89
-
},
90
-
"capture-stack-trace": {
91
-
"version": "1.0.1",
92
-
"resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz",
93
-
"integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==",
94
-
"dev": true
95
-
},
96
-
"cids": {
97
-
"version": "0.7.5",
98
-
"resolved": "https://registry.npmjs.org/cids/-/cids-0.7.5.tgz",
99
-
"integrity": "sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA==",
100
-
"dev": true,
101
-
"requires": {
102
-
"buffer": "^5.5.0",
103
-
"class-is": "^1.1.0",
104
-
"multibase": "~0.6.0",
105
-
"multicodec": "^1.0.0",
106
-
"multihashes": "~0.4.15"
107
-
}
108
-
},
109
-
"class-is": {
110
-
"version": "1.1.0",
111
-
"resolved": "https://registry.npmjs.org/class-is/-/class-is-1.1.0.tgz",
112
-
"integrity": "sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==",
113
-
"dev": true
114
-
},
115
-
"cloudflare": {
116
-
"version": "2.7.0",
117
-
"resolved": "https://registry.npmjs.org/cloudflare/-/cloudflare-2.7.0.tgz",
118
-
"integrity": "sha512-yhroBpn2VBczFwiRLpyUc431XiWE+xNs8YvtjAsj1vEA1pVwhpje6BzgLW5iZbulmCuPX48lvX8HizeMWk713g==",
119
-
"dev": true,
120
-
"requires": {
121
-
"autocreate": "^1.1.0",
122
-
"es-class": "^2.1.1",
123
-
"got": "^6.3.0",
124
-
"https-proxy-agent": "^2.1.1",
125
-
"object-assign": "^4.1.0",
126
-
"should-proxy": "^1.0.4",
127
-
"url-pattern": "^1.0.3"
128
-
}
129
-
},
130
-
"combined-stream": {
131
-
"version": "1.0.8",
132
-
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
133
-
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
134
-
"dev": true,
135
-
"requires": {
136
-
"delayed-stream": "~1.0.0"
137
-
}
138
-
},
139
-
"create-error-class": {
140
-
"version": "3.0.2",
141
-
"resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz",
142
-
"integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=",
143
-
"dev": true,
144
-
"requires": {
145
-
"capture-stack-trace": "^1.0.0"
146
-
}
147
-
},
148
-
"debug": {
149
-
"version": "3.1.0",
150
-
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
151
-
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
152
-
"dev": true,
153
-
"requires": {
154
-
"ms": "2.0.0"
155
-
}
156
-
},
157
-
"delayed-stream": {
158
-
"version": "1.0.0",
159
-
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
160
-
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
161
-
"dev": true
162
-
},
163
-
"duplexer3": {
164
-
"version": "0.1.4",
165
-
"resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
166
-
"integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=",
167
-
"dev": true
168
-
},
169
-
"es-class": {
170
-
"version": "2.1.1",
171
-
"resolved": "https://registry.npmjs.org/es-class/-/es-class-2.1.1.tgz",
172
-
"integrity": "sha1-bsIkO1oeNYHAt+7O4BMMnA1vsrc=",
173
-
"dev": true
174
-
},
175
-
"es6-promise": {
176
-
"version": "4.2.8",
177
-
"resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz",
178
-
"integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==",
179
-
"dev": true
180
-
},
181
-
"es6-promisify": {
182
-
"version": "5.0.0",
183
-
"resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz",
184
-
"integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=",
185
-
"dev": true,
186
-
"requires": {
187
-
"es6-promise": "^4.0.3"
188
-
}
189
-
},
190
-
"follow-redirects": {
191
-
"version": "1.5.10",
192
-
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
193
-
"integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
194
-
"dev": true,
195
-
"requires": {
196
-
"debug": "=3.1.0"
197
-
}
198
-
},
199
-
"form-data": {
200
-
"version": "2.5.1",
201
-
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz",
202
-
"integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==",
203
-
"dev": true,
204
-
"requires": {
205
-
"asynckit": "^0.4.0",
206
-
"combined-stream": "^1.0.6",
207
-
"mime-types": "^2.1.12"
208
-
}
209
-
},
210
-
"get-stream": {
211
-
"version": "3.0.0",
212
-
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
213
-
"integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
214
-
"dev": true
215
-
},
216
-
"got": {
217
-
"version": "6.7.1",
218
-
"resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz",
219
-
"integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=",
220
-
"dev": true,
221
-
"requires": {
222
-
"create-error-class": "^3.0.0",
223
-
"duplexer3": "^0.1.4",
224
-
"get-stream": "^3.0.0",
225
-
"is-redirect": "^1.0.0",
226
-
"is-retry-allowed": "^1.0.0",
227
-
"is-stream": "^1.0.0",
228
-
"lowercase-keys": "^1.0.0",
229
-
"safe-buffer": "^5.0.1",
230
-
"timed-out": "^4.0.0",
231
-
"unzip-response": "^2.0.1",
232
-
"url-parse-lax": "^1.0.0"
233
-
}
234
-
},
235
-
"https-proxy-agent": {
236
-
"version": "2.2.4",
237
-
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz",
238
-
"integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==",
239
-
"dev": true,
240
-
"requires": {
241
-
"agent-base": "^4.3.0",
242
-
"debug": "^3.1.0"
243
-
}
244
-
},
245
-
"ieee754": {
246
-
"version": "1.1.13",
247
-
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz",
248
-
"integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==",
249
-
"dev": true
250
-
},
251
-
"ip-regex": {
252
-
"version": "4.1.0",
253
-
"resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.1.0.tgz",
254
-
"integrity": "sha512-pKnZpbgCTfH/1NLIlOduP/V+WRXzC2MOz3Qo8xmxk8C5GudJLgK5QyLVXOSWy3ParAH7Eemurl3xjv/WXYFvMA==",
255
-
"dev": true
256
-
},
257
-
"is-buffer": {
258
-
"version": "2.0.4",
259
-
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz",
260
-
"integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==",
261
-
"dev": true
262
-
},
263
-
"is-ip": {
264
-
"version": "3.1.0",
265
-
"resolved": "https://registry.npmjs.org/is-ip/-/is-ip-3.1.0.tgz",
266
-
"integrity": "sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==",
267
-
"dev": true,
268
-
"requires": {
269
-
"ip-regex": "^4.0.0"
270
-
}
271
-
},
272
-
"is-ipfs": {
273
-
"version": "0.6.3",
274
-
"resolved": "https://registry.npmjs.org/is-ipfs/-/is-ipfs-0.6.3.tgz",
275
-
"integrity": "sha512-HyRot1dvLcxImtDqPxAaY1miO6WsiP/z7Yxpg2qpaLWv5UdhAPtLvHJ4kMLM0w8GSl8AFsVF23PHe1LzuWrUlQ==",
276
-
"dev": true,
277
-
"requires": {
278
-
"bs58": "^4.0.1",
279
-
"cids": "~0.7.0",
280
-
"mafmt": "^7.0.0",
281
-
"multiaddr": "^7.2.1",
282
-
"multibase": "~0.6.0",
283
-
"multihashes": "~0.4.13"
284
-
}
285
-
},
286
-
"is-redirect": {
287
-
"version": "1.0.0",
288
-
"resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz",
289
-
"integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=",
290
-
"dev": true
291
-
},
292
-
"is-retry-allowed": {
293
-
"version": "1.2.0",
294
-
"resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz",
295
-
"integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==",
296
-
"dev": true
297
-
},
298
-
"is-stream": {
299
-
"version": "1.1.0",
300
-
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
301
-
"integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
302
-
"dev": true
303
-
},
304
-
"lowercase-keys": {
305
-
"version": "1.0.1",
306
-
"resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
307
-
"integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
308
-
"dev": true
309
-
},
310
-
"mafmt": {
311
-
"version": "7.1.0",
312
-
"resolved": "https://registry.npmjs.org/mafmt/-/mafmt-7.1.0.tgz",
313
-
"integrity": "sha512-vpeo9S+hepT3k2h5iFxzEHvvR0GPBx9uKaErmnRzYNcaKb03DgOArjEMlgG4a9LcuZZ89a3I8xbeto487n26eA==",
314
-
"dev": true,
315
-
"requires": {
316
-
"multiaddr": "^7.3.0"
317
-
}
318
-
},
319
-
"mime-db": {
320
-
"version": "1.44.0",
321
-
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz",
322
-
"integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==",
323
-
"dev": true
324
-
},
325
-
"mime-types": {
326
-
"version": "2.1.27",
327
-
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz",
328
-
"integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==",
329
-
"dev": true,
330
-
"requires": {
331
-
"mime-db": "1.44.0"
332
-
}
333
-
},
334
-
"ms": {
335
-
"version": "2.0.0",
336
-
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
337
-
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
338
-
"dev": true
339
-
},
340
-
"multiaddr": {
341
-
"version": "7.5.0",
342
-
"resolved": "https://registry.npmjs.org/multiaddr/-/multiaddr-7.5.0.tgz",
343
-
"integrity": "sha512-GvhHsIGDULh06jyb6ev+VfREH9evJCFIRnh3jUt9iEZ6XDbyoisZRFEI9bMvK/AiR6y66y6P+eoBw9mBYMhMvw==",
344
-
"dev": true,
345
-
"requires": {
346
-
"buffer": "^5.5.0",
347
-
"cids": "~0.8.0",
348
-
"class-is": "^1.1.0",
349
-
"is-ip": "^3.1.0",
350
-
"multibase": "^0.7.0",
351
-
"varint": "^5.0.0"
352
-
},
353
-
"dependencies": {
354
-
"cids": {
355
-
"version": "0.8.3",
356
-
"resolved": "https://registry.npmjs.org/cids/-/cids-0.8.3.tgz",
357
-
"integrity": "sha512-yoXTbV3llpm+EBGWKeL9xKtksPE/s6DPoDSY4fn8I8TEW1zehWXPSB0pwAXVDlLaOlrw+sNynj995uD9abmPhA==",
358
-
"dev": true,
359
-
"requires": {
360
-
"buffer": "^5.6.0",
361
-
"class-is": "^1.1.0",
362
-
"multibase": "^1.0.0",
363
-
"multicodec": "^1.0.1",
364
-
"multihashes": "^1.0.1"
365
-
},
366
-
"dependencies": {
367
-
"multibase": {
368
-
"version": "1.0.1",
369
-
"resolved": "https://registry.npmjs.org/multibase/-/multibase-1.0.1.tgz",
370
-
"integrity": "sha512-KcCxpBVY8fdVKu4dJMAahq4F/2Z/9xqEjIiR7PiMe7LRGeorFn2NLmicN6nLBCqQvft6MG2Lc9X5P0IdyvnxEw==",
371
-
"dev": true,
372
-
"requires": {
373
-
"base-x": "^3.0.8",
374
-
"buffer": "^5.5.0"
375
-
}
376
-
}
377
-
}
378
-
},
379
-
"multibase": {
380
-
"version": "0.7.0",
381
-
"resolved": "https://registry.npmjs.org/multibase/-/multibase-0.7.0.tgz",
382
-
"integrity": "sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg==",
383
-
"dev": true,
384
-
"requires": {
385
-
"base-x": "^3.0.8",
386
-
"buffer": "^5.5.0"
387
-
}
388
-
},
389
-
"multihashes": {
390
-
"version": "1.0.1",
391
-
"resolved": "https://registry.npmjs.org/multihashes/-/multihashes-1.0.1.tgz",
392
-
"integrity": "sha512-S27Tepg4i8atNiFaU5ZOm3+gl3KQlUanLs/jWcBxQHFttgq+5x1OgbQmf2d8axJ/48zYGBd/wT9d723USMFduw==",
393
-
"dev": true,
394
-
"requires": {
395
-
"buffer": "^5.6.0",
396
-
"multibase": "^1.0.1",
397
-
"varint": "^5.0.0"
398
-
},
399
-
"dependencies": {
400
-
"multibase": {
401
-
"version": "1.0.1",
402
-
"resolved": "https://registry.npmjs.org/multibase/-/multibase-1.0.1.tgz",
403
-
"integrity": "sha512-KcCxpBVY8fdVKu4dJMAahq4F/2Z/9xqEjIiR7PiMe7LRGeorFn2NLmicN6nLBCqQvft6MG2Lc9X5P0IdyvnxEw==",
404
-
"dev": true,
405
-
"requires": {
406
-
"base-x": "^3.0.8",
407
-
"buffer": "^5.5.0"
408
-
}
409
-
}
410
-
}
411
-
}
412
-
}
413
-
},
414
-
"multibase": {
415
-
"version": "0.6.1",
416
-
"resolved": "https://registry.npmjs.org/multibase/-/multibase-0.6.1.tgz",
417
-
"integrity": "sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw==",
418
-
"dev": true,
419
-
"requires": {
420
-
"base-x": "^3.0.8",
421
-
"buffer": "^5.5.0"
422
-
}
423
-
},
424
-
"multicodec": {
425
-
"version": "1.0.4",
426
-
"resolved": "https://registry.npmjs.org/multicodec/-/multicodec-1.0.4.tgz",
427
-
"integrity": "sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg==",
428
-
"dev": true,
429
-
"requires": {
430
-
"buffer": "^5.6.0",
431
-
"varint": "^5.0.0"
432
-
}
433
-
},
434
-
"multihashes": {
435
-
"version": "0.4.21",
436
-
"resolved": "https://registry.npmjs.org/multihashes/-/multihashes-0.4.21.tgz",
437
-
"integrity": "sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw==",
438
-
"dev": true,
439
-
"requires": {
440
-
"buffer": "^5.5.0",
441
-
"multibase": "^0.7.0",
442
-
"varint": "^5.0.0"
443
-
},
444
-
"dependencies": {
445
-
"multibase": {
446
-
"version": "0.7.0",
447
-
"resolved": "https://registry.npmjs.org/multibase/-/multibase-0.7.0.tgz",
448
-
"integrity": "sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg==",
449
-
"dev": true,
450
-
"requires": {
451
-
"base-x": "^3.0.8",
452
-
"buffer": "^5.5.0"
453
-
}
454
-
}
455
-
}
456
-
},
457
-
"object-assign": {
458
-
"version": "4.1.1",
459
-
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
460
-
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
461
-
"dev": true
462
-
},
463
-
"prepend-http": {
464
-
"version": "1.0.4",
465
-
"resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz",
466
-
"integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=",
467
-
"dev": true
468
-
},
469
-
"recursive-fs": {
470
-
"version": "1.1.2",
471
-
"resolved": "https://registry.npmjs.org/recursive-fs/-/recursive-fs-1.1.2.tgz",
472
-
"integrity": "sha512-QPFEt5EwzwlHoqYsZc+NkUSyDTQf1Hvq7c/kpQJHi77OSCAiDXI3wfB0J04ZG+ekGHmv37mdR8MDPEshD3/RlQ==",
473
-
"dev": true
474
-
},
475
-
"safe-buffer": {
476
-
"version": "5.2.1",
477
-
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
478
-
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
479
-
"dev": true
480
-
},
481
-
"should-proxy": {
482
-
"version": "1.0.4",
483
-
"resolved": "https://registry.npmjs.org/should-proxy/-/should-proxy-1.0.4.tgz",
484
-
"integrity": "sha1-yAWlAav2lTlgBjSAnmL78ji6NeQ=",
485
-
"dev": true
486
-
},
487
-
"timed-out": {
488
-
"version": "4.0.1",
489
-
"resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz",
490
-
"integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=",
491
-
"dev": true
492
-
},
493
-
"unzip-response": {
494
-
"version": "2.0.1",
495
-
"resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz",
496
-
"integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=",
497
-
"dev": true
498
-
},
499
-
"url-parse-lax": {
500
-
"version": "1.0.0",
501
-
"resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz",
502
-
"integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=",
503
-
"dev": true,
504
-
"requires": {
505
-
"prepend-http": "^1.0.1"
506
-
}
507
-
},
508
-
"url-pattern": {
509
-
"version": "1.0.3",
510
-
"resolved": "https://registry.npmjs.org/url-pattern/-/url-pattern-1.0.3.tgz",
511
-
"integrity": "sha1-BAkpJHGyTyPFDWWkeTF5PStaz8E=",
512
-
"dev": true
513
-
},
514
-
"varint": {
515
-
"version": "5.0.0",
516
-
"resolved": "https://registry.npmjs.org/varint/-/varint-5.0.0.tgz",
517
-
"integrity": "sha1-2Ca4n3SQcy+rwMDtaT7Uddyynr8=",
518
-
"dev": true
519
-
}
520
-
}
521
-
}
-9
.github/deploy/package.json
-9
.github/deploy/package.json
+24
-18
.github/workflows/deploy.yml
+24
-18
.github/workflows/deploy.yml
···
1
-
name: Deploy to IPFS
2
-
on:
3
-
push:
4
-
branches:
5
-
- main
1
+
name: Ship to IPFS
2
+
on: [push]
6
3
7
4
jobs:
8
-
tag:
5
+
Deploy:
9
6
runs-on: ubuntu-latest
10
7
steps:
11
-
- uses: actions/checkout@v2
12
-
- name: Use Node.js
13
-
uses: actions/setup-node@v1
14
-
with:
15
-
node-version: '12.x'
16
-
- run: cd .github/deploy && npm install --silent && node --no-warnings deploy.js
17
-
env:
18
-
PINATA_API_KEY: ${{ secrets.PINATA_API_KEY }}
19
-
PINATA_API_SECRET: ${{ secrets.PINATA_API_SECRET }}
20
-
CLOUDFLARE_TOKEN: ${{ secrets.CLOUDFLARE_TOKEN }}
21
-
CLOUDFLARE_DNS_ZONE_ID: ${{ secrets.CLOUDFLARE_DNS_ZONE_ID }}
22
-
CLOUDFLARE_DNS_IDENTIFIER: ${{ secrets.CLOUDFLARE_DNS_IDENTIFIER }}
8
+
- name: Check out repository code
9
+
uses: actions/checkout@v3
10
+
- name: Publish to IPFS
11
+
id: Publish
12
+
uses: aquiladev/ipfs-action@master
13
+
with:
14
+
path: ./public
15
+
service: filebase
16
+
pinName: ${{ github.event.repository.name }}
17
+
filebaseBucket: microsites
18
+
filebaseKey: ${{ secrets.FILEBASE_KEY }}
19
+
filebaseSecret: ${{ secrets.FILEBASE_SECRET }}
20
+
- name: Update DNSLink
21
+
env:
22
+
CLOUDFLARE_TOKEN: ${{ secrets.CLOUDFLARE_TOKEN }}
23
+
RECORD_DOMAIN: ${{ github.event.repository.name }}
24
+
CLOUDFLARE_ZONE_ID: ${{ secrets.CLOUDFLARE_ZONE_ID }}
25
+
id: dnslink
26
+
uses: GoodDollar/cloudflare-update-web3-hostname@v1.2
27
+
with:
28
+
cid: ${{ steps.Publish.outputs.cid }}