From eeaa3b01d048c589cd91e986a4013b1047eb6e42 Mon Sep 17 00:00:00 2001 From: m1911star Date: Fri, 28 Apr 2023 13:56:53 +0800 Subject: [PATCH 1/4] feat: add mac release zip file and release info yml --- .github/workflows/release-desktop-app.yml | 21 +++++++- apps/electron/package.json | 2 + apps/electron/scripts/generate-yml.js | 66 +++++++++++++++++++++++ yarn.lock | 1 + 4 files changed, 88 insertions(+), 2 deletions(-) create mode 100644 apps/electron/scripts/generate-yml.js diff --git a/.github/workflows/release-desktop-app.yml b/.github/workflows/release-desktop-app.yml index 9d5e32719123..349135963471 100644 --- a/.github/workflows/release-desktop-app.yml +++ b/.github/workflows/release-desktop-app.yml @@ -76,6 +76,12 @@ jobs: name: before-make-electron-dist path: apps/electron/dist + - name: Upload YML Build Script + uses: actions/upload-artifact@v3 + with: + name: release-yml-build-script + path: apps/electron/scripts/generate-yml.js + make-distribution: environment: ${{ github.ref_name == 'master' && 'production' || 'development' }} strategy: @@ -122,7 +128,7 @@ jobs: run: | mkdir -p builds mv apps/electron/out/*/make/*.dmg ./builds/affine-${{ env.BUILD_TYPE }}-macos-${{ matrix.spec.arch }}.dmg - + mv apps/electron/out/*/make/zip/darwin/${{ matrix.spec.arch }}/*.zip ./builds/affine-${{ env.BUILD_TYPE }}-macos-${{ matrix.spec.arch }}.zip - name: Save artifacts (windows) if: ${{ matrix.spec.platform == 'windows' }} run: | @@ -169,7 +175,17 @@ jobs: with: name: affine-linux-x64-builds path: ./ - + - name: Download Artifacts + uses: actions/download-artifact@v3 + with: + name: release-yml-build-script + path: ./ + - uses: actions/setup-node@v3 + with: + node-version: 18 + - name: Generate Release yml + run: | + BUILD_TYPE=${{ env.BUILD_TYPE }} RELEASE_VERSION=${{ github.event.inputs.version }} node generate-yml.js - name: Create Release Draft uses: softprops/action-gh-release@v1 env: @@ -188,3 +204,4 @@ jobs: ./RELEASES ./*.AppImage ./*.apk + ./*.yml diff --git a/apps/electron/package.json b/apps/electron/package.json index 3b6a20c4b3e2..6f43fffef875 100644 --- a/apps/electron/package.json +++ b/apps/electron/package.json @@ -15,6 +15,7 @@ "make-macos-x64": "electron-forge make --platform=darwin --arch=x64", "make-windows-x64": "electron-forge make --platform=win32 --arch=x64", "make-linux-x64": "electron-forge make --platform=linux --arch=x64", + "generate-release-yml": "zx scripts/generate-yml.mjs", "rebuild:for-test": "yarn rebuild better-sqlite3", "rebuild:for-electron": "yarn electron-rebuild", "test": "playwright test" @@ -44,6 +45,7 @@ "electron-window-state": "^5.0.3", "esbuild": "^0.17.18", "fs-extra": "^11.1.1", + "js-yaml": "^4.1.0", "playwright": "^1.33.0", "ts-node": "^10.9.1", "undici": "^5.22.0", diff --git a/apps/electron/scripts/generate-yml.js b/apps/electron/scripts/generate-yml.js new file mode 100644 index 000000000000..bfe1ee101cf9 --- /dev/null +++ b/apps/electron/scripts/generate-yml.js @@ -0,0 +1,66 @@ +// do not run in your local machine +/* eslint-disable */ +const fs = require('fs'); +const path = require('path'); +const crypto = require('crypto'); +/* eslint-enable */ + +const yml = { + version: process.env.RELEASE_VERSION ?? '0.0.0', + files: [], +}; + +let fileList = []; +// TODO: maybe add `beta` and `stable` +const BUILD_TYPE = process.env.BUILD_TYPE || 'canary'; + +const generateYml = async () => { + fileList = [ + `affine-${BUILD_TYPE}-macos-arm64.dmg`, + `affine-${BUILD_TYPE}-macos-arm64.zip`, + `affine-${BUILD_TYPE}-macos-x64.zip`, + `affine-${BUILD_TYPE}-macos-x64.dmg`, + ]; + fileList.forEach(fileName => { + const filePath = path.join(__dirname, './', fileName); + try { + const fileData = fs.readFileSync(filePath); + const hash = crypto + .createHash('sha512') + .update(fileData) + .digest('base64'); + const size = fs.statSync(filePath).size; + + yml.files.push({ + url: fileName, + sha512: hash, + size: size, + }); + } catch (e) {} + }); + yml.path = yml.files[0].url; + yml.sha512 = yml.files[0].sha512; + yml.releaseDate = new Date().toISOString(); + + const ymlStr = + `version: ${yml.version}\n` + + `files:\n` + + yml.files + .map(file => { + return ( + ` - url: ${file.url}\n` + + ` sha512: ${file.sha512}\n` + + ` size: ${file.size}\n` + ); + }) + .join('') + + `path: ${yml.path}\n` + + `sha512: ${yml.sha512}\n` + + `releaseDate: ${yml.releaseDate}\n`; + + fs.writeFileSync( + `./${BUILD_TYPE === 'canary' ? BUILD_TYPE : 'latest'}-mac.yml`, + ymlStr + ); +}; +generateYml(); diff --git a/yarn.lock b/yarn.lock index 1929861b2912..2b0e93449ac4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -148,6 +148,7 @@ __metadata: electron-window-state: ^5.0.3 esbuild: ^0.17.18 fs-extra: ^11.1.1 + js-yaml: ^4.1.0 playwright: ^1.33.0 ts-node: ^10.9.1 undici: ^5.22.0 From a2a6fca17ad31c452d21c73518e8c4335528e146 Mon Sep 17 00:00:00 2001 From: m1911star Date: Sat, 29 Apr 2023 12:17:50 +0800 Subject: [PATCH 2/4] fix yml name --- apps/electron/scripts/generate-yml.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/apps/electron/scripts/generate-yml.js b/apps/electron/scripts/generate-yml.js index bfe1ee101cf9..13bdb70aa66b 100644 --- a/apps/electron/scripts/generate-yml.js +++ b/apps/electron/scripts/generate-yml.js @@ -58,9 +58,6 @@ const generateYml = async () => { `sha512: ${yml.sha512}\n` + `releaseDate: ${yml.releaseDate}\n`; - fs.writeFileSync( - `./${BUILD_TYPE === 'canary' ? BUILD_TYPE : 'latest'}-mac.yml`, - ymlStr - ); + fs.writeFileSync(`./latest-mac.yml`, ymlStr); }; generateYml(); From 073a59eace96674e58d7da1124472fd33bf76bb1 Mon Sep 17 00:00:00 2001 From: m1911star Date: Wed, 3 May 2023 09:02:46 +0800 Subject: [PATCH 3/4] fix scripts --- apps/electron/package.json | 2 -- yarn.lock | 1 - 2 files changed, 3 deletions(-) diff --git a/apps/electron/package.json b/apps/electron/package.json index cfecad0481e9..18534736622e 100644 --- a/apps/electron/package.json +++ b/apps/electron/package.json @@ -15,7 +15,6 @@ "make-macos-x64": "electron-forge make --platform=darwin --arch=x64", "make-windows-x64": "electron-forge make --platform=win32 --arch=x64", "make-linux-x64": "electron-forge make --platform=linux --arch=x64", - "generate-release-yml": "zx scripts/generate-yml.mjs", "rebuild:for-test": "yarn rebuild better-sqlite3", "rebuild:for-electron": "yarn electron-rebuild", "test": "playwright test" @@ -45,7 +44,6 @@ "electron-window-state": "^5.0.3", "esbuild": "^0.17.18", "fs-extra": "^11.1.1", - "js-yaml": "^4.1.0", "playwright": "^1.33.0", "ts-node": "^10.9.1", "undici": "^5.22.0", diff --git a/yarn.lock b/yarn.lock index b79042fc5bb9..05ddafa79f6a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -148,7 +148,6 @@ __metadata: electron-window-state: ^5.0.3 esbuild: ^0.17.18 fs-extra: ^11.1.1 - js-yaml: ^4.1.0 playwright: ^1.33.0 ts-node: ^10.9.1 undici: ^5.22.0 From f084602c265eca88563f3c42a5cb3ce67b37e5dd Mon Sep 17 00:00:00 2001 From: m1911star Date: Wed, 3 May 2023 09:39:35 +0800 Subject: [PATCH 4/4] remove duplicate env --- .github/workflows/release-desktop-app.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-desktop-app.yml b/.github/workflows/release-desktop-app.yml index 349135963471..c8cd109dd729 100644 --- a/.github/workflows/release-desktop-app.yml +++ b/.github/workflows/release-desktop-app.yml @@ -185,7 +185,7 @@ jobs: node-version: 18 - name: Generate Release yml run: | - BUILD_TYPE=${{ env.BUILD_TYPE }} RELEASE_VERSION=${{ github.event.inputs.version }} node generate-yml.js + RELEASE_VERSION=${{ github.event.inputs.version }} node generate-yml.js - name: Create Release Draft uses: softprops/action-gh-release@v1 env: