name: Build & Release on: push: branches: - master tags: - v* pull_request: jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Setup Node.js uses: actions/setup-node@v1 with: node-version: 15.x - name: Get yarn cache directory path id: yarn-cache-dir-path run: echo "::set-output name=dir::$(yarn cache dir)" - uses: actions/cache@v1 id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) with: path: ${{ steps.yarn-cache-dir-path.outputs.dir }} key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} restore-keys: | ${{ runner.os }}-yarn- - name: Install run: yarn - name: lint run: yarn lint build: needs: lint name: Build (${{ matrix.os }}) runs-on: ${{ matrix.os }} strategy: matrix: os: [ macOS-latest, ubuntu-latest, windows-latest ] steps: - uses: actions/checkout@v2 - name: Setup Node.js uses: actions/setup-node@v1 with: node-version: 12.x - name: Get yarn cache directory path id: yarn-cache-dir-path run: echo "::set-output name=dir::$(yarn cache dir)" - uses: actions/cache@v1 if: matrix.os != 'macOS-latest' id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) with: path: ${{ steps.yarn-cache-dir-path.outputs.dir }} key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} restore-keys: | ${{ runner.os }}-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: Download disk image (ps1) run: tools/download-disk.ps1 if: matrix.os == 'windows-latest' && startsWith(github.ref, 'refs/tags/') env: DISK_URL: ${{ secrets.DISK_URL }} - name: Download disk image (sh) run: chmod +x tools/download-disk.sh && ./tools/download-disk.sh if: matrix.os != 'windows-latest' && startsWith(github.ref, 'refs/tags/') env: DISK_URL: ${{ secrets.DISK_URL }} - name: Install run: yarn - name: Make if: startsWith(github.ref, 'refs/tags/') run: yarn make --arch=all env: APPLE_ID: ${{ secrets.APPLE_ID }} APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }} 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/**/*.rpm out/**/*.zip