From 7731f3601b840aed6d7d1ecb1a61eea21a08281c Mon Sep 17 00:00:00 2001 From: Bhoomi Joshi Date: Wed, 25 Oct 2023 14:56:47 +0530 Subject: [PATCH 1/5] remove custom bfx mac updater --- public/lib/app.js | 30 +-- scripts/auto-updater/bfx.mac.updater.js | 174 --------------- .../change-loading-win-visibility-state.js | 207 ------------------ scripts/enforce-macos-app-location.js | 63 ------ scripts/helpers/manage-window.js | 86 -------- scripts/window-creators.js | 168 -------------- scripts/windows.js | 7 - 7 files changed, 1 insertion(+), 734 deletions(-) delete mode 100644 scripts/auto-updater/bfx.mac.updater.js delete mode 100644 scripts/change-loading-win-visibility-state.js delete mode 100644 scripts/enforce-macos-app-location.js delete mode 100644 scripts/helpers/manage-window.js delete mode 100644 scripts/window-creators.js delete mode 100644 scripts/windows.js diff --git a/public/lib/app.js b/public/lib/app.js index feee9e4c0..b0ad051ef 100644 --- a/public/lib/app.js +++ b/public/lib/app.js @@ -14,12 +14,6 @@ const windowStateKeeper = require('electron-window-state') const os = require('os') const { appendFile, mkdir } = require('fs/promises') const { existsSync } = require('fs') -const enforceMacOSAppLocation = require('../../scripts/enforce-macos-app-location') -const BfxMacUpdater = require('../../scripts/auto-updater/bfx.mac.updater') -const { - showLoadingWindow, - hideLoadingWindow, -} = require('../../scripts/change-loading-win-visibility-state') const { createAppMenu } = require('../utils/appMenu') const { createAppTray } = require('../utils/tray') const syncReadUserSettings = require('../utils/syncReadUserSettings') @@ -29,19 +23,7 @@ const { ELECTRON_CONTEXT_ALLOWED_URLS } = require('../constants') const LOG_DIR_PATH = `${os.tmpdir()}/bfx-hf-ui-logs` const APP_LOG_PATH = `${LOG_DIR_PATH}/app.log` -const isElectronDebugMode = process.env.REACT_APP_ELECTRON_DEBUG === 'true' - -let autoUpdater = _autoUpdater - -if (process.platform === 'darwin') { - autoUpdater = new BfxMacUpdater() - autoUpdater.addInstallingUpdateEventHandler(() => { - return showLoadingWindow({ - description: 'Updating...', - isRequiredToCloseAllWins: true, - }) - }) -} +const autoUpdater = _autoUpdater autoUpdater.allowPrerelease = false autoUpdater.logger = logger @@ -269,11 +251,6 @@ module.exports = class HFUIApplication { }) autoUpdater.on('update-downloaded', (info) => { - const { downloadedFile } = { ...info } - if (autoUpdater instanceof BfxMacUpdater) { - autoUpdater.setDownloadedFilePath(downloadedFile) - } - this.mainWindow.webContents.send('update_downloaded', info) }) @@ -289,7 +266,6 @@ module.exports = class HFUIApplication { } this.mainWindow.webContents.send('update_error') - await hideLoadingWindow({ isRequiredToShowMainWin: false }) } catch (_err) { logger.error('autoUpdater error: ', _err) } @@ -319,10 +295,6 @@ module.exports = class HFUIApplication { }, ) - if (!isElectronDebugMode) { - await enforceMacOSAppLocation() - } - createAppMenu({ app: this.app, sendOpenSettingsModalMessage: this.sendOpenSettingsModalMessage, diff --git a/scripts/auto-updater/bfx.mac.updater.js b/scripts/auto-updater/bfx.mac.updater.js deleted file mode 100644 index 4e98fb6d1..000000000 --- a/scripts/auto-updater/bfx.mac.updater.js +++ /dev/null @@ -1,174 +0,0 @@ -'use strict' - -const path = require('path') -const fs = require('fs') -const { spawn } = require('child_process') -const { MacUpdater } = require('electron-updater') -const extract = require('extract-zip') - -const { rootPath: appDir } = require('electron-root-path') -const logger = require('electron-log') - -class BfxMacUpdater extends MacUpdater { - constructor(...args) { - super(...args) - - this.quitAndInstallCalled = false - this.quitHandlerAdded = false - - this.EVENT_INSTALLING_UPDATE = 'EVENT_INSTALLING_UPDATE' - - this.installingUpdateEventHandlers = [] - // eslint-disable-next-line no-unused-expressions - this._logger === logger - } - - setDownloadedFilePath(downloadedFilePath) { - this.downloadedFilePath = downloadedFilePath - } - - getDownloadedFilePath() { - return this.downloadedFilePath - } - - addInstallingUpdateEventHandler(handler) { - this.installingUpdateEventHandlers.push(handler) - } - - async install(isSilent, isForceRunAfter) { - try { - if (this.quitAndInstallCalled) { - return false - } - - this.quitAndInstallCalled = true - - if (!isSilent) { - await this.dispatchInstallingUpdate() - } - - const downloadedFilePath = this.getDownloadedFilePath() - - const root = path.join(appDir, '../../..') - const dist = path.join(root, '..') - const productName = 'Bitfinex Honey' - const exec = path.join(root, `Contents/MacOS/${productName}`) - - await fs.promises.rmdir(root, { recursive: true, force: true }) - - await extract( - downloadedFilePath, - { - dir: dist, - defaultDirMode: '0o744', - defaultFileMode: '0o744', - }, - ) - - if (!isForceRunAfter) { - return true - } - - spawn(exec, [], { - detached: true, - stdio: 'ignore', - env: { - ...process.env, - }, - }).unref() - return true - } catch (err) { - // this.dispatchError(err) - this._logger.error(err) - - return false - } - } - - async asyncQuitAndInstall(isSilent, isForceRunAfter) { - const isInstalled = await this.install( - isSilent, - isSilent - ? isForceRunAfter - : true, - ) - - if (isInstalled) { - setImmediate(() => this.app.quit()) - - return - } - - this.quitAndInstallCalled = false - } - - quitAndInstall(...args) { - const downloadedFilePath = this.getDownloadedFilePath() - - if (!fs.existsSync(downloadedFilePath)) { - return - } - if (path.extname(downloadedFilePath) !== '.zip') { - return super.quitAndInstall(...args) - } - - return this.asyncQuitAndInstall(...args) - } - - async dispatchInstallingUpdate() { - this.emit(this.EVENT_INSTALLING_UPDATE) - - // eslint-disable-next-line no-restricted-syntax - for (const handler of this.installingUpdateEventHandlers) { - if (typeof handler !== 'function') { - return - } - - // eslint-disable-next-line no-await-in-loop - await handler() - } - } - - dispatchUpdateDownloaded(...args) { - super.dispatchUpdateDownloaded(...args) - - this.addQuitHandler() - } - - addQuitHandler() { - if ( - this.quitHandlerAdded - || !this.autoInstallOnAppQuit - ) { - return - } - - this.quitHandlerAdded = true - - // this.app.onQuit((exitCode) => { - // if (exitCode === 0) { - - // } - // }) - - // Need to use this.app.app prop due this.app is ElectronAppAdapter - this.app.app.once('will-quit', (e) => { - if (this.quitAndInstallCalled) { - return - } - - e.preventDefault() - this.install(true, true).then((isInstalled) => { - if (isInstalled) { - setImmediate(() => this.app.quit()) - - return - } - - setImmediate(() => this.app.app.exit(1)) - }) - }) - } -} - -module.exports = BfxMacUpdater diff --git a/scripts/change-loading-win-visibility-state.js b/scripts/change-loading-win-visibility-state.js deleted file mode 100644 index baf825660..000000000 --- a/scripts/change-loading-win-visibility-state.js +++ /dev/null @@ -1,207 +0,0 @@ -const { BrowserWindow, ipcMain } = require('electron') -const logger = require('electron-log') - -const wins = require('./windows') -const { - hideWindow, - showWindow, - centerWindow, -} = require('./helpers/manage-window') -const windowCreators = require('./window-creators') - -let intervalMarker - -const _closeAllWindows = () => { - const _wins = BrowserWindow.getAllWindows() - .filter((win) => win !== wins.loadingWindow) - - const promises = _wins.map((win) => hideWindow(win)) - - return Promise.all(promises) -} - -const _setParentWindow = (noParent) => { - if (wins.loadingWindow.isFocused()) { - return - } - - const win = BrowserWindow.getFocusedWindow() - - if ( - noParent - || Object.values(wins).every((w) => w !== win) - ) { - wins.loadingWindow.setParentWindow(null) - - return - } - - wins.loadingWindow.setParentWindow(win) -} - -const _runProgressLoader = (opts = {}) => { - const { - win = wins.loadingWindow, - isIndeterminateMode = false, - } = { ...opts } - - if ( - !win - || typeof win !== 'object' - || win.isDestroyed() - ) { - return - } - if (isIndeterminateMode) { - // Change to indeterminate mode when progress > 1 - win.setProgressBar(2) - - return - } - - const fps = 50 - const duration = 3000 // ms - const interval = duration / fps // ms - const step = 1 / (duration / interval) - let progress = 0 - - intervalMarker = setInterval(() => { - if (progress >= 1) { - progress = 0 - } - - progress += step - - if ( - !win - || typeof win !== 'object' - || win.isDestroyed() - ) { - clearInterval(intervalMarker) - - return - } - - win.setProgressBar(progress) - }, interval).unref() -} - -const _stopProgressLoader = ( - win = wins.loadingWindow, -) => { - clearInterval(intervalMarker) - - if ( - !win - || typeof win !== 'object' - || win.isDestroyed() - ) { - return - } - - // Remove progress bar when progress < 0 - win.setProgressBar(-1) -} - -const _setLoadingDescription = (win, description) => { - return new Promise((resolve) => { - try { - if ( - !win - || typeof win !== 'object' - || win.isDestroyed() - || typeof description !== 'string' - ) { - resolve() - - return - } - - ipcMain.once('loading:description-ready', (event, err) => { - if (err) { - logger.error('loading:description-ready error: ', err) - } - - resolve() - }) - - win.webContents.send( - 'loading:description', - description, - ) - } catch (err) { - logger.error('_setLoadingDescription error: ', err) - - resolve() - } - }) -} - -const showLoadingWindow = async (opts = {}) => { - try { - const { - description = '', - isRequiredToCloseAllWins = false, - isNotRunProgressLoaderRequired = false, - isIndeterminateMode = false, - noParent = false, - } = { ...opts } - - if (isRequiredToCloseAllWins) { - _closeAllWindows() - } - - if ( - !wins.loadingWindow - || typeof wins.loadingWindow !== 'object' - || wins.loadingWindow.isDestroyed() - ) { - await windowCreators.createLoadingWindow() - } - - _setParentWindow(isRequiredToCloseAllWins || noParent) - - if (!isNotRunProgressLoaderRequired) { - _runProgressLoader({ isIndeterminateMode }) - } - - await _setLoadingDescription( - wins.loadingWindow, - description, - ) - - if (wins.loadingWindow.isVisible()) { - return - } - - centerWindow(wins.loadingWindow) - - return showWindow(wins.loadingWindow) - } catch (err) { - logger.error('showLoadingWindow error: ', err) - } -} - -const hideLoadingWindow = async (opts = {}) => { - const { - isRequiredToShowMainWin = false, - } = { ...opts } - - if (isRequiredToShowMainWin) { - await showWindow(wins.mainWindow) - } - - // need to empty description - await _setLoadingDescription( - wins.loadingWindow, - '', - ) - _stopProgressLoader() - - return hideWindow(wins.loadingWindow) -} - -module.exports = { - showLoadingWindow, - hideLoadingWindow, -} diff --git a/scripts/enforce-macos-app-location.js b/scripts/enforce-macos-app-location.js deleted file mode 100644 index a4e7a1d60..000000000 --- a/scripts/enforce-macos-app-location.js +++ /dev/null @@ -1,63 +0,0 @@ -const { app, dialog } = require('electron') - -const productName = 'Bitfinex Honey' -const { - showLoadingWindow, - hideLoadingWindow, -} = require('./change-loading-win-visibility-state') - -module.exports = async () => { - if ( - process.env.NODE_ENV === 'development1' - || process.platform !== 'darwin' - ) { - return - } - if (app.isInApplicationsFolder()) { - return - } - - const clickedButtonIndex = dialog.showMessageBoxSync({ - type: 'error', - message: 'Move to Applications folder?', - detail: `${productName} must live in the Applications folder to be able to run correctly.`, - buttons: [ - 'Move to Applications folder', - `Quit ${productName}`, - ], - defaultId: 0, - cancelId: 1, - }) - - if (clickedButtonIndex === 1) { - app.quit() - - return - } - - await showLoadingWindow({ - description: 'Moving the app...', - isRequiredToCloseAllWins: true, - isIndeterminateMode: true, - }) - - app.moveToApplicationsFolder({ - conflictHandler: (conflict) => { - if (conflict === 'existsAndRunning') { - dialog.showMessageBoxSync({ - type: 'error', - message: `Another version of ${productName} is currently running. Quit it, then launch this version of the app again.`, - buttons: [ - 'OK', - ], - }) - - app.quit() - } - - return true - }, - }) - - await hideLoadingWindow() -} diff --git a/scripts/helpers/manage-window.js b/scripts/helpers/manage-window.js deleted file mode 100644 index f31dbfa4e..000000000 --- a/scripts/helpers/manage-window.js +++ /dev/null @@ -1,86 +0,0 @@ -'use strict' - -const electron = require('electron') - -const hideWindow = (win) => { - return new Promise((resolve, reject) => { - try { - if ( - !win - || typeof win !== 'object' - || win.isDestroyed() - || !win.isVisible() - ) { - resolve() - - return - } - - win.once('hide', resolve) - - win.hide() - } catch (err) { - reject(err) - } - }) -} - -const showWindow = (win) => { - return new Promise((resolve, reject) => { - try { - if ( - !win - || typeof win !== 'object' - || win.isDestroyed() - || win.isVisible() - ) { - resolve() - - return - } - - win.once('show', resolve) - - win.show() - } catch (err) { - reject(err) - } - }) -} - -const centerWindow = (win, workArea) => { - const screen = electron.screen || electron.remote.screen - const { getCursorScreenPoint, getDisplayNearestPoint } = screen - - // doesn't center the window on mac - // https://github.com/electron/electron/issues/26362 - // https://github.com/electron/electron/issues/22324 - win.center() - - const _workArea = workArea - && typeof workArea === 'object' - && Number.isFinite(workArea.width) - && Number.isFinite(workArea.height) - && Number.isFinite(workArea.x) - && Number.isFinite(workArea.y) - ? workArea - : getDisplayNearestPoint(getCursorScreenPoint()).workArea - - const { width, height } = win.getContentBounds() - const { - width: screenWidth, height: screenHeight, x, y, - } = _workArea - - const boundsOpts = { - x: Math.round(x + (screenWidth - width) / 2), - y: Math.round(y + (screenHeight - height) / 2), - } - - win.setBounds(boundsOpts) -} - -module.exports = { - hideWindow, - showWindow, - centerWindow, -} diff --git a/scripts/window-creators.js b/scripts/window-creators.js deleted file mode 100644 index 8dd4657ef..000000000 --- a/scripts/window-creators.js +++ /dev/null @@ -1,168 +0,0 @@ -'use strict' - -const electron = require('electron') -// const serve = require('electron-serve') -const path = require('path') -const url = require('url') -// const logger = require('electron-log') - -const { BrowserWindow } = electron -// const isDevEnv = process.env.NODE_ENV === 'development' - -const wins = require('./windows') -const ipcs = require('./ipcs') -const { - showLoadingWindow, - // hideLoadingWindow, -} = require('./change-loading-win-visibility-state') -const { showWindow, centerWindow } = require('./helpers/manage-window') - -const pathToLayoutAppInit = path.join('', 'app_init.html') - -const _createWindow = async ( - { pathname = null, winName = 'mainWindow' } = {}, - props = {}, -) => { - const point = electron.screen.getCursorScreenPoint() - const { bounds, workAreaSize } = electron.screen.getDisplayNearestPoint(point) - const { width: defaultWidth, height: defaultHeight } = workAreaSize - const isMainWindow = winName === 'mainWindow' - const { - width = defaultWidth, - height = defaultHeight, - x, - y, - isMaximized, - manage, - } = {} - const _props = { - autoHideMenuBar: true, - width, - height, - minWidth: 1000, - minHeight: 650, - x: !x ? bounds.x : x, - y: !y ? bounds.y : y, - icon: path.join(__dirname, '../build/icon.png'), - backgroundColor: '#172d3e', - show: true, - // webPreferences: { - // preload: path.join(__dirname, '../build/preload.js'), - // }, - ...props, - } - - wins[winName] = new BrowserWindow(_props) - - const startUrl = pathname - ? url.format({ - pathname, - protocol: 'file:', - slashes: true, - }) - : 'app://-' - - if (!pathname) { - // eslint-disable-next-line no-undef - await loadURL(wins[winName]) - } - - wins[winName].on('closed', () => { - wins[winName] = null - - if (ipcs.serverIpc && typeof ipcs.serverIpc === 'object') { - ipcs.serverIpc.kill('SIGINT') - } - }) - - await wins[winName].loadURL(startUrl) - - const res = { - isMaximized, - isMainWindow, - manage, - win: wins[winName], - } - - if (!pathname) { - // eslint-disable-next-line no-use-before-define - await createLoadingWindow() - - return res - } - if (_props.center) { - centerWindow(wins[winName]) - } - - await showWindow(wins[winName]) - - return res -} - -const _createChildWindow = async (pathname, winName, opts = {}) => { - const { width = 500, height = 500 } = { ...opts } - - const point = electron.screen.getCursorScreenPoint() - const { bounds } = electron.screen.getDisplayNearestPoint(point) - const x = Math.ceil(bounds.x + (bounds.width - width) / 2) - const y = Math.ceil(bounds.y + (bounds.height - height) / 2) - - const winProps = await _createWindow( - { - pathname, - winName, - }, - { - minWidth: width, - minHeight: height, - x, - y, - resizable: false, - center: true, - parent: wins.mainWindow, - frame: false, - ...opts, - }, - ) - - winProps.win.on('closed', () => { - if (wins.mainWindow) { - wins.mainWindow.close() - } - - wins.mainWindow = null - }) - - return winProps -} - -const createLoadingWindow = async () => { - if ( - wins.loadingWindow - && typeof wins.loadingWindow === 'object' - && !wins.loadingWindow.isDestroyed() - && !wins.loadingWindow.isVisible() - ) { - await showLoadingWindow() - - return {} - } - - const winProps = await _createChildWindow( - pathToLayoutAppInit, - 'loadingWindow', - { - width: 350, - height: 350, - webPreferences: { - nodeIntegration: true, - contextIsolation: false, - }, - }, - ) - - return winProps -} -module.exports = { - createLoadingWindow, -} diff --git a/scripts/windows.js b/scripts/windows.js deleted file mode 100644 index 00673539c..000000000 --- a/scripts/windows.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict' - -module.exports = { - mainWindow: null, - loadingWindow: null, - errorWindow: null, -} From 8f8a641eafc63774eeefab4de9a38ebd6feab7d9 Mon Sep 17 00:00:00 2001 From: Bhoomi Joshi Date: Wed, 25 Oct 2023 15:06:42 +0530 Subject: [PATCH 2/5] add code signing config --- package.json | 16 ++++++++++------ public/entitlements.mac.plist | 19 +++---------------- 2 files changed, 13 insertions(+), 22 deletions(-) diff --git a/package.json b/package.json index aa1b1f9c4..0a32a0622 100644 --- a/package.json +++ b/package.json @@ -24,16 +24,19 @@ "buildResources": "public" }, "mac": { - "type": "development", "icon": "build/icon.png", + "category": "public.app-category.productivity", "hardenedRuntime": true, "gatekeeperAssess": false, + "entitlements": "build/entitlements.mac.plist", + "entitlementsInherit": "build/entitlements.mac.plist", "artifactName": "${productName}-${version}-${arch}-${os}.${ext}", - "category": "public.app-category.productivity", - "target": [ - "dir", - "zip" - ] + "target": { + "target": "default", + "arch": [ + "x64" + ] + } }, "win": { "icon": "build/icon.png", @@ -127,6 +130,7 @@ "browserslist": "^4.22.0", "electron": "^26.2.3", "electron-builder": "^24.6.4", + "electron-notarize": "^1.2.2", "electron-packager": "17.1.2", "eslint": "^8.50.0", "eslint-config-airbnb-base": "^15.0.0", diff --git a/public/entitlements.mac.plist b/public/entitlements.mac.plist index ac5427653..a06663bbc 100644 --- a/public/entitlements.mac.plist +++ b/public/entitlements.mac.plist @@ -1,24 +1,11 @@ + - com.apple.security.app-sandbox - - com.apple.security.network.client - - com.apple.security.network.server - - com.apple.security.files.user-selected.read-only - - com.apple.security.files.user-selected.read-write - - com.apple.security.files.user-selected.executable - - com.apple.security.device.audio-video-bridging - - com.apple.security.personal-information.location - com.apple.security.cs.allow-unsigned-executable-memory + com.apple.security.cs.allow-jit + com.apple.security.cs.disable-library-validation From d58572c79a105c83bd31610335c51db4ffdff9b3 Mon Sep 17 00:00:00 2001 From: Bhoomi Joshi Date: Wed, 25 Oct 2023 15:06:59 +0530 Subject: [PATCH 3/5] add notarize step --- package.json | 1 + scripts/notarize.js | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 scripts/notarize.js diff --git a/package.json b/package.json index 0a32a0622..d0a3fffe0 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,7 @@ "directories": { "buildResources": "public" }, + "afterSign": "scripts/notarize.js", "mac": { "icon": "build/icon.png", "category": "public.app-category.productivity", diff --git a/scripts/notarize.js b/scripts/notarize.js new file mode 100644 index 000000000..5aa6e0e07 --- /dev/null +++ b/scripts/notarize.js @@ -0,0 +1,21 @@ +/* Based on https://kilianvalkhof.com/2019/electron/notarizing-your-electron-application/ */ + +// eslint-disable-next-line import/no-extraneous-dependencies +const { notarize } = require('electron-notarize') + +exports.default = async function notarizing(context) { + const { electronPlatformName, appOutDir } = context + if (electronPlatformName !== 'darwin') { + return + } + + const appName = context.packager.appInfo.productFilename + + // eslint-disable-next-line no-return-await + return await notarize({ + appBundleId: 'com.bitfinex.honey', + appPath: `${appOutDir}/${appName}.app`, + appleId: process.env.APPLEID, + appleIdPassword: process.env.APPLEIDPASS, + }) +} From 698faec8d57490a85ee20d2cce6d62f21daa5065 Mon Sep 17 00:00:00 2001 From: Bhoomi Joshi Date: Wed, 24 Jan 2024 11:18:35 +0000 Subject: [PATCH 4/5] add release wf --- .github/workflows/release.yml | 45 +++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 000000000..b73a0aaee --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,45 @@ +name: Github release workflow + +on: workflow_dispatch + +jobs: + checks: + runs-on: macos-latest + env: + # dont treat warning as error + CI: false + + strategy: + matrix: + node-version: [18.18.x] + + steps: + - name: Install sha256sum + run: brew install coreutils + + - name: Checkout Repository + uses: actions/checkout@v3 + with: + persist-credentials: false + + - name: Setup Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + + - name: Pull bfx-hf-ui-core + run: npm run fetch-core + + - name: Install + run: npm install + + - name: Build for linux/mac/windows + env: + CSC_KEY_PASSWORD: ${{ secrets.BFX_APPLE_KEYCHAIN_PASSWORD }} + CSC_LINK: ${{ secrets.BFX_APPLE_BUILD_CERTIFICATE_B64 }} + APPLEID: ${{ secrets.BFX_APPLE_ID_USERNAME }} + APPLEIDPASS: ${{ secrets.BFX_APPLE_ID_HONEY_PASSWORD }} + run: npm run deploy + + - name: Results + run: ls -l dist From d0b7b191ecff3545f9c5825f63774df23c03e7a5 Mon Sep 17 00:00:00 2001 From: Bhoomi Joshi Date: Wed, 24 Jan 2024 18:07:49 +0530 Subject: [PATCH 5/5] update var --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b73a0aaee..d64ebbaff 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -35,7 +35,7 @@ jobs: - name: Build for linux/mac/windows env: - CSC_KEY_PASSWORD: ${{ secrets.BFX_APPLE_KEYCHAIN_PASSWORD }} + CSC_KEY_PASSWORD: ${{ secrets.BFX_APPLE_BUILD_CERTIFICATE_B64 }} CSC_LINK: ${{ secrets.BFX_APPLE_BUILD_CERTIFICATE_B64 }} APPLEID: ${{ secrets.BFX_APPLE_ID_USERNAME }} APPLEIDPASS: ${{ secrets.BFX_APPLE_ID_HONEY_PASSWORD }}