/ jenkins / upload.js
upload.js
 1  const path = require('path');
 2  const { writeFileSync } = require('fs');
 3  
 4  const {
 5    VERSION,
 6    FLAVOR,
 7    GIT_COMMIT,
 8    GIT_COMMIT_SHORT,
 9    LINUX_FILES,
10    WINDOWS_FILES,
11    OSX_FILES,
12    S3_BUCKET,
13    JENKINS_BUILD_ID,
14    ETH_SIGNING_KEY,
15    IS_CODE_SIGNING
16  } = require('./constants');
17  
18  const {
19    genSha512,
20    genFileList,
21    genCommitFilename,
22    genS3Url,
23    genManifest,
24    genManifestFile,
25    genManifestFilename,
26    genSignatureFile,
27    genSignatureFilename,
28    uploadToS3
29  } = require('./lib');
30  
31  const fileList = genFileList(WINDOWS_FILES, LINUX_FILES, OSX_FILES);
32  
33  const manifest = genManifest(
34    fileList,
35    VERSION,
36    JENKINS_BUILD_ID,
37    GIT_COMMIT,
38    GIT_COMMIT_SHORT,
39    S3_BUCKET,
40    IS_CODE_SIGNING
41  );
42  
43  const manifestFile = genManifestFile(manifest);
44  const manifestFilename = genManifestFilename(FLAVOR, VERSION, GIT_COMMIT_SHORT, JENKINS_BUILD_ID);
45  const manifestFilePath = path.resolve(`./${manifestFilename}`);
46  const manifestS3Url = genS3Url(manifestFilename, GIT_COMMIT, S3_BUCKET);
47  
48  // write manifest file
49  writeFileSync(manifestFilename, JSON.stringify(manifestFile, null, 2), 'utf8');
50  
51  const manifestHash = genSha512(manifestFilePath);
52  
53  const signatureFile = genSignatureFile(manifestHash, ETH_SIGNING_KEY);
54  const signatureFilename = genSignatureFilename(FLAVOR, VERSION, GIT_COMMIT_SHORT, JENKINS_BUILD_ID);
55  const signatureFilePath = path.resolve(`./${signatureFilename}`);
56  const signatureS3Url = genS3Url(signatureFilename, GIT_COMMIT, S3_BUCKET);
57  
58  // write signature file
59  writeFileSync(signatureFilePath, signatureFile, 'utf8');
60  
61  // upload all the things to S3
62  (async () => {
63    for (let fileInfo of manifest) {
64      const { fullPath, s3Url } = fileInfo;
65      await uploadToS3(fullPath, s3Url);
66    }
67  
68    await uploadToS3(manifestFilePath, manifestS3Url);
69    await uploadToS3(signatureFilePath, signatureS3Url);
70  })();