name: Build & Release on: push: branches: - main tags: - v* pull_request: jobs: test: name: Test (${{ matrix.os }} - ${{ matrix.arch }}) runs-on: ${{ matrix.os }} strategy: matrix: os: [ macOS-latest, ubuntu-latest, windows-latest ] arch: [ x64 ] include: - os: macOS-latest arch: arm64 steps: - uses: actions/checkout@v3 - name: Setup Node.js uses: actions/setup-node@v3.5.0 with: node-version: 16.x cache: yarn - name: Install run: yarn --frozen-lockfile --network-timeout 100000 || yarn --frozen-lockfile --network-timeout 100000 || yarn --frozen-lockfile --network-timeout 100000 - name: Create fake contributors uses: 1arp/create-a-file-action@0.2 with: path: 'static' file: 'contributors.json' content: "[]" # - name: lint # run: yarn lint # - name: test # run: yarn test:ci # - name: Coveralls # if: matrix.os == 'ubuntu-latest' # uses: coverallsapp/github-action@1.1.3 # with: # github-token: ${{ secrets.GITHUB_TOKEN }} build: needs: test name: Build (${{ matrix.os }} - ${{ matrix.arch }}) runs-on: ${{ matrix.os }} strategy: matrix: # Build for supported platforms # https://github.com/electron/electron-packager/blob/ebcbd439ff3e0f6f92fa880ff28a8670a9bcf2ab/src/targets.js#L9 # 32-bit Linux unsupported as of 2019: https://www.electronjs.org/blog/linux-32bit-support os: [ macOS-latest, ubuntu-latest, windows-latest ] arch: [ x64, arm64 ] include: - os: windows-latest arch: ia32 - os: ubuntu-latest arch: armv7l # 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 steps: - uses: actions/checkout@v3 - name: Setup Node.js uses: actions/setup-node@v3.5.0 with: node-version: 16.x cache: yarn # - name: Set MacOS signing certs # if: matrix.os == 'macOS-latest' # run: chmod +x tools/add-macos-cert.sh && ./tools/add-macos-cert.sh # env: # MACOS_CERT_P12: ${{ secrets.MACOS_CERT_P12 }} # MACOS_CERT_PASSWORD: ${{ secrets.MACOS_CERT_PASSWORD }} # - name: Set Windows signing certificate # if: matrix.os == 'windows-latest' # continue-on-error: true # id: write_file # uses: timheuer/base64-to-file@v1 # with: # fileName: 'win-certificate.pfx' # encodedString: ${{ secrets.WINDOWS_CODESIGN_P12 }} - name: Install run: yarn --network-timeout 100000 || yarn --network-timeout 100000 || yarn --network-timeout 100000 - name: Make if: startsWith(github.ref, 'refs/tags/') run: yarn make --arch=${{ matrix.arch }} env: # APPLE_ID: ${{ secrets.APPLE_ID }} # APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # WINDOWS_CODESIGN_FILE: ${{ steps.write_file.outputs.filePath }} # WINDOWS_CODESIGN_PASSWORD: ${{ secrets.WINDOWS_CODESIGN_PASSWORD }} # - name: Archive production artifacts # uses: actions/upload-artifact@v2 # with: # name: ${{ matrix.os }} # path: out/make/**/* - name: Release uses: softprops/action-gh-release@v1 if: startsWith(github.ref, 'refs/tags/') env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: draft: true files: | out/**/*.deb out/**/*.dmg out/**/*setup*.exe out/**/*.nupkg out/**/*.rpm out/**/*.zip out/**/RELEASES out/**/*portable*.exe