diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index db99f49..29fb051 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -55,12 +55,19 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ macOS-latest, ubuntu-latest, windows-latest ] + os: [ macOS-13-xlarge, macOS-latest, ubuntu-latest, windows-latest ] arch: [ x64, arm64 ] - # Exclude platforms we don't support + # Publishing artifacts for multiple Windows architectures has + # a bug which can cause the wrong architecture to be downloaded + # for an update, so until that is fixed, only build Windows x64 exclude: - os: windows-latest arch: arm64 + # Only build arm64 builds on M1 and x86 builds on Intel Mac + - os: macOS-latest + arch: arm64 + - os: macOS-13-xlarge + arch: x64 steps: - uses: actions/checkout@v3 diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 9931aad..ead4920 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -10,7 +10,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ macOS-latest, ubuntu-latest, windows-latest ] + os: [ macOS-13-xlarge, macOS-latest, ubuntu-latest, windows-latest ] arch: [ x64, arm64 ] # Publishing artifacts for multiple Windows architectures has # a bug which can cause the wrong architecture to be downloaded @@ -18,6 +18,11 @@ jobs: exclude: - os: windows-latest arch: arm64 + # Only build arm64 builds on M1 and x86 builds on Intel Mac + - os: macOS-latest + arch: arm64 + - os: macOS-13-xlarge + arch: x64 steps: - uses: actions/checkout@v3 diff --git a/forge.config.js b/forge.config.js index 69fd98e..50bed35 100644 --- a/forge.config.js +++ b/forge.config.js @@ -13,6 +13,7 @@ const osxNotarize = const osxSign = osxNotarize ? {} : undefined; if (!osxNotarize) { + // eslint-disable-next-line no-console console.log( 'Notarytool credentials not passed, skipping sign and notarize step for OSX.', ); @@ -45,6 +46,7 @@ module.exports = { // node_modules are necessary, but we have to strip binaries if (path.includes('node_modules')) { const ignoreNodeBinaries = '/node_modules/\\.bin($|/)'; + return path.match(ignoreNodeBinaries); } @@ -81,7 +83,9 @@ module.exports = { config: { name: 'Replit', icon: './assets/logo.icns', - overwrite: true, + overwrite: false, + // Set a different path for each architecture to avoid conflicts when uploading + dmgPath: process.arch === 'arm64' ? 'Replit.dmg' : 'Replit-Intel.dmg', additionalDMGOptions: { 'background-color': '#0E1525', },