diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c42d233b..512918a9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -88,6 +88,7 @@ jobs: CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }} CSC_INSTALLER_LINK: ${{ secrets.CSC_INSTALLER_LINK }} CSC_INSTALLER_KEY_PASSWORD: ${{ secrets.CSC_INSTALLER_KEY_PASSWORD }} + APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} APPSTORE_USERNAME: ${{ secrets.APPSTORE_USERNAME }} APPSTORE_PASSWORD: ${{ secrets.APPSTORE_PASSWORD }} USE_HARD_LINKS: false diff --git a/build/mac/afterBuildHook.cjs b/build/mac/afterBuildHook.cjs deleted file mode 100644 index a306e784..00000000 --- a/build/mac/afterBuildHook.cjs +++ /dev/null @@ -1,16 +0,0 @@ -const fs = require('fs') -const signHook = require('./afterSignHook.cjs') - -module.exports = async function (params) { - // notarize the app on Mac OS only. - if (process.platform !== 'darwin' || !process.env.GITHUB_REF || !process.env.GITHUB_REF.startsWith('refs/tags/')) { - return - } - console.log('afterBuild hook triggered') - - let pkgName = fs.readdirSync('dist').find(x => x.endsWith('.pkg')) - signHook({ - appOutDir: 'dist', - _pathOverride: pkgName, - }) -} diff --git a/build/mac/afterSignHook.cjs b/build/mac/afterSignHook.cjs deleted file mode 100644 index 0eb03546..00000000 --- a/build/mac/afterSignHook.cjs +++ /dev/null @@ -1,35 +0,0 @@ -// See: https://medium.com/@TwitterArchiveEraser/notarize-electron-apps-7a5f988406db - -const fs = require('fs') -const path = require('path') -const notarizer = require('@electron/notarize') - -module.exports = async function (params) { - // notarize the app on Mac OS only. - if (process.platform !== 'darwin' || !process.env.GITHUB_REF || !process.env.GITHUB_REF.startsWith('refs/tags/')) { - return - } - console.log('afterSign hook triggered', params) - - let appId = 'org.tabby' - - let appPath = path.join(params.appOutDir, params._pathOverride || `${params.packager.appInfo.productFilename}.app`) - if (!fs.existsSync(appPath)) { - throw new Error(`Cannot find application at: ${appPath}`) - } - - console.log(`Notarizing ${appId} found at ${appPath}`) - - try { - await notarizer.notarize({ - appBundleId: appId, - appPath: appPath, - appleId: process.env.APPSTORE_USERNAME, - appleIdPassword: process.env.APPSTORE_PASSWORD, - }) - } catch (error) { - console.error(error) - } - - console.log(`Done notarizing ${appId}`) -} diff --git a/electron-builder.yml b/electron-builder.yml index 914147dc..d39f3c29 100644 --- a/electron-builder.yml +++ b/electron-builder.yml @@ -3,8 +3,6 @@ appId: org.tabby productName: Tabby compression: normal npmRebuild: false -afterSign: "./build/mac/afterSignHook.cjs" -afterAllArtifactBuild: "./build/mac/afterBuildHook.cjs" files: - '**/*' - dist diff --git a/scripts/build-macos.mjs b/scripts/build-macos.mjs index 1e80a78c..9b304ed3 100755 --- a/scripts/build-macos.mjs +++ b/scripts/build-macos.mjs @@ -13,6 +13,9 @@ if (process.env.GITHUB_HEAD_REF) { process.env.CSC_IDENTITY_AUTO_DISCOVERY = 'false' } +process.env.APPLE_ID ??= process.env.APPSTORE_USERNAME +process.env.APPLE_APP_SPECIFIC_PASSWORD ??= process.env.APPSTORE_PASSWORD + builder({ dir: true, mac: ['pkg', 'zip'], @@ -24,6 +27,13 @@ builder({ }, mac: { identity: !process.env.CI || process.env.CSC_LINK ? undefined : null, + notarize: process.env.APPLE_TEAM_ID ? { + appBundleId: 'org.tabby', + teamId: process.env.APPLE_TEAM_ID, + } : false, + }, + pkg: { + identity: !process.env.CI || process.env.CSC_INSTALLER_LINK ? undefined : null, }, npmRebuild: process.env.ARCH !== 'arm64', publish: process.env.KEYGEN_TOKEN ? [