Przeglądaj źródła

build workflow update

Eugene Pankov 4 lat temu
rodzic
commit
f4eacc1d66

+ 268 - 0
.github/workflows/build.yml

@@ -0,0 +1,268 @@
+name: Package-Build
+on: [push, pull_request]
+jobs:
+  macOS-Build:
+    runs-on: macos-11.0
+    strategy:
+      matrix:
+        include:
+          - arch: x86_64
+          - arch: arm64
+
+    steps:
+    - name: Checkout
+      uses: actions/[email protected]
+      with:
+        fetch-depth: 0
+
+    - name: Installing Node
+      uses: actions/[email protected]
+      with:
+        node-version: 14
+
+    - name: Install deps
+      run: |
+        sudo npm i -g [email protected]
+        cd app
+        yarn
+        cd ..
+        rm app/node_modules/.yarn-integrity
+        yarn
+
+    - name: Build native deps
+      run: scripts/build-native.js
+      env:
+        ARCH: ${{matrix.arch}}
+
+    - name: Build native deps
+      run: |
+        rm -rf app/node_modules/cpu-features
+        rm -rf app/node_modules/ssh2/crypto/build
+      if: ${{ matrix.arch == 'arm64' }}
+
+    - name: Webpack
+      run: yarn run build
+
+    - name: Prepackage plugins
+      run: scripts/prepackage-plugins.js
+      env:
+        ARCH: ${{matrix.arch}}
+
+    - run: sed -i '' 's/updateInfo = await/\/\/updateInfo = await/g' node_modules/app-builder-lib/out/targets/ArchiveTarget.js
+
+    - name: Build and sign packages
+      run: scripts/build-macos.js
+      if: github.repository == 'Eugeny/tabby' && github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags'))
+      env:
+        ARCH: ${{matrix.arch}}
+        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+        CSC_LINK: ${{ secrets.CSC_LINK }}
+        CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }}
+        APPSTORE_USERNAME: ${{ secrets.APPSTORE_USERNAME }}
+        APPSTORE_PASSWORD: ${{ secrets.APPSTORE_PASSWORD }}
+        USE_HARD_LINKS: false
+        # DEBUG: electron-builder,electron-builder:*
+
+    - name: Build packages without signing
+      run: scripts/build-macos.js
+      if: "! (github.repository == 'Eugeny/tabby' && github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags')))"
+      env:
+        ARCH: ${{matrix.arch}}
+        # DEBUG: electron-builder,electron-builder:*
+
+    - name: Upload symbols
+      run: |
+        sudo npm install -g @sentry/cli --unsafe-perm
+        ./scripts/sentry-upload.js
+      env:
+        SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
+        SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
+        SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}
+
+    - name: Package artifacts
+      run: |
+        mkdir artifact-pkg
+        mv dist/*.pkg artifact-pkg/
+        mkdir artifact-zip
+        mv dist/*.zip artifact-zip/
+
+    - uses: actions/upload-artifact@master
+      name: Upload PKG
+      with:
+        name: macOS .pkg (${{matrix.arch}})
+        path: artifact-pkg
+
+    - uses: actions/upload-artifact@master
+      name: Upload ZIP
+      with:
+        name: macOS .zip (${{matrix.arch}})
+        path: artifact-zip
+
+  Linux-Build:
+    runs-on: ubuntu-18.04
+
+    steps:
+    - name: Checkout
+      uses: actions/[email protected]
+      with:
+        fetch-depth: 0
+
+    - name: Install Node
+      uses: actions/[email protected]
+      with:
+        node-version: 14
+
+    - name: Install deps
+      run: |
+        sudo apt-get update
+        sudo apt-get install bsdtar zsh
+        npm i -g [email protected]
+        cd app
+        yarn
+        cd ..
+        rm app/node_modules/.yarn-integrity
+        yarn
+        npm run patch
+
+    - name: Build native deps
+      run: scripts/build-native.js
+
+    - name: Webpack
+      run: yarn run build
+
+    - name: Prepackage plugins
+      run: scripts/prepackage-plugins.js
+
+    - name: Build packages
+      run: scripts/build-linux.js
+      env:
+        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+        USE_HARD_LINKS: false
+        # DEBUG: electron-builder,electron-builder:*
+
+    - name: Build web resources
+      run: zsh -c 'tar czf tabby-web.tar.gz (tabby-*|web)/dist'
+
+    - name: Upload symbols
+      run: |
+        sudo npm install -g @sentry/cli --unsafe-perm
+        ./scripts/sentry-upload.js
+      env:
+        SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
+        SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
+        SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}
+
+    - name: Package artifacts
+      run: |
+        mkdir artifact-deb
+        mv dist/*.deb artifact-deb/ || true
+        mkdir artifact-rpm
+        mv dist/*.rpm artifact-rpm/ || true
+        mkdir artifact-pacman
+        mv dist/*.pacman artifact-pacman/ || true
+        mkdir artifact-snap
+        mv dist/*.snap artifact-snap/ || true
+        mkdir artifact-tar.gz
+        mv dist/*.tar.gz artifact-tar.gz/ || true
+        mkdir artifact-web
+        mv tabby-web.tar.gz artifact-web/ || true
+
+    - uses: actions/upload-artifact@master
+      name: Upload DEB
+      with:
+        name: Linux DEB
+        path: artifact-deb
+
+    - uses: actions/upload-artifact@master
+      name: Upload RPM
+      with:
+        name: Linux RPM
+        path: artifact-rpm
+
+    - uses: actions/upload-artifact@master
+      name: Upload Pacman Package
+      with:
+        name: Linux Pacman
+        path: artifact-pacman
+
+    - uses: actions/upload-artifact@master
+      name: Upload Snap
+      with:
+        name: Linux Snap
+        path: artifact-snap
+
+    - uses: actions/upload-artifact@master
+      name: Upload Linux tarball
+      with:
+        name: Linux tarball
+        path: artifact-tar.gz
+
+    - uses: actions/upload-artifact@master
+      name: Upload web tarball
+      with:
+        name: Web tarball
+        path: artifact-web
+
+  Windows-Build:
+    runs-on: windows-2016
+
+    steps:
+    - name: Checkout
+      uses: actions/[email protected]
+      with:
+        fetch-depth: 0
+
+    - name: Installing Node
+      uses: actions/[email protected]
+      with:
+        node-version: 14
+
+    - name: Build
+      shell: powershell
+      run: |
+        npm i -g [email protected]
+        yarn
+        node scripts/build-native.js
+        yarn run build
+        node scripts/prepackage-plugins.js
+
+    - name: Build and sign packages
+      run: node scripts/build-windows.js
+      if: github.repository == 'Eugeny/tabby' && github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags'))
+      env:
+        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+        WIN_CSC_LINK: ${{ secrets.WIN_CSC_LINK }}
+        WIN_CSC_KEY_PASSWORD: ${{ secrets.WIN_CSC_KEY_PASSWORD }}
+        # DEBUG: electron-builder,electron-builder:*
+
+    - name: Build packages without signing
+      run: node scripts/build-windows.js
+      if: "!(github.repository == 'Eugeny/tabby' && github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags')))"
+
+    - name: Upload symbols
+      run: |
+        npm install @sentry/cli
+        node scripts/sentry-upload.js
+      env:
+        SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
+        SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
+        SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}
+
+    - name: Package artifacts
+      run: |
+        mkdir artifact-setup
+        mv dist/*-setup.exe artifact-setup/
+        mkdir artifact-portable
+        mv dist/*-portable.zip artifact-portable/
+
+    - uses: actions/upload-artifact@master
+      name: Upload installer
+      with:
+        name: Installer
+        path: artifact-setup
+
+    - uses: actions/upload-artifact@master
+      name: Upload portable build
+      with:
+        name: Portable build
+        path: artifact-portable

+ 2 - 2
.github/workflows/lint.yml

@@ -1,8 +1,8 @@
 name: Lint
 on: [push, pull_request]
 jobs:
-  build:
-    runs-on: macOS-latest
+  Lint:
+    runs-on: macos-11.0
 
     steps:
     - name: Checkout

+ 0 - 107
.github/workflows/linux.yml

@@ -1,107 +0,0 @@
-name: Linux Build
-on: [push, pull_request]
-jobs:
-  build:
-    runs-on: ubuntu-18.04
-
-    steps:
-    - name: Checkout
-      uses: actions/[email protected]
-      with:
-        fetch-depth: 0
-
-    - name: Install Node
-      uses: actions/[email protected]
-      with:
-        node-version: 14
-
-    - name: Install deps
-      run: |
-        sudo apt-get update
-        sudo apt-get install bsdtar zsh
-        npm i -g [email protected]
-        cd app
-        yarn
-        cd ..
-        rm app/node_modules/.yarn-integrity
-        yarn
-        npm run patch
-
-    - name: Build native deps
-      run: scripts/build-native.js
-
-    - name: Webpack
-      run: yarn run build
-
-    - name: Prepackage plugins
-      run: scripts/prepackage-plugins.js
-
-    - name: Build packages
-      run: scripts/build-linux.js
-      env:
-        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-        USE_HARD_LINKS: false
-        # DEBUG: electron-builder,electron-builder:*
-
-    - name: Build web resources
-      run: zsh -c 'tar czf tabby-web.tar.gz (tabby-*|web)/dist'
-
-    - name: Upload symbols
-      run: |
-        sudo npm install -g @sentry/cli --unsafe-perm
-        ./scripts/sentry-upload.js
-      env:
-        SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
-        SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
-        SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}
-
-    - name: Package artifacts
-      run: |
-        mkdir artifact-deb
-        mv dist/*.deb artifact-deb/ || true
-        mkdir artifact-rpm
-        mv dist/*.rpm artifact-rpm/ || true
-        mkdir artifact-pacman
-        mv dist/*.pacman artifact-pacman/ || true
-        mkdir artifact-snap
-        mv dist/*.snap artifact-snap/ || true
-        mkdir artifact-tar.gz
-        mv dist/*.tar.gz artifact-tar.gz/ || true
-        mkdir artifact-web
-        mv tabby-web.tar.gz artifact-web/ || true
-
-    - uses: actions/upload-artifact@master
-      name: Upload DEB
-      with:
-        name: Linux DEB
-        path: artifact-deb
-
-    - uses: actions/upload-artifact@master
-      name: Upload RPM
-      with:
-        name: Linux RPM
-        path: artifact-rpm
-
-    - uses: actions/upload-artifact@master
-      name: Upload Pacman Package
-      with:
-        name: Linux Pacman
-        path: artifact-pacman
-
-    - uses: actions/upload-artifact@master
-      name: Upload Snap
-      with:
-        name: Linux Snap
-        path: artifact-snap
-
-    - uses: actions/upload-artifact@master
-      name: Upload Linux tarball
-      with:
-        name: Linux tarball
-        path: artifact-tar.gz
-
-    - uses: actions/upload-artifact@master
-      name: Upload web tarball
-      with:
-        name: Web tarball
-        path: artifact-web

+ 0 - 99
.github/workflows/macos.yml

@@ -1,99 +0,0 @@
-name: macOS Build
-on: [push, pull_request]
-jobs:
-  build:
-    runs-on: macos-11.0
-    strategy:
-      matrix:
-        include:
-          - arch: x86_64
-          - arch: arm64
-
-    steps:
-    - name: Checkout
-      uses: actions/[email protected]
-      with:
-        fetch-depth: 0
-
-    - name: Installing Node
-      uses: actions/[email protected]
-      with:
-        node-version: 14
-
-    - name: Install deps
-      run: |
-        sudo npm i -g [email protected]
-        cd app
-        yarn
-        cd ..
-        rm app/node_modules/.yarn-integrity
-        yarn
-
-    - name: Build native deps
-      run: scripts/build-native.js
-      env:
-        ARCH: ${{matrix.arch}}
-
-    - name: Build native deps
-      run: |
-        rm -rf app/node_modules/cpu-features
-        rm -rf app/node_modules/ssh2/crypto/build
-      if: ${{ matrix.arch == 'arm64' }}
-
-    - name: Webpack
-      run: yarn run build
-
-    - name: Prepackage plugins
-      run: scripts/prepackage-plugins.js
-      env:
-        ARCH: ${{matrix.arch}}
-
-    - run: sed -i '' 's/updateInfo = await/\/\/updateInfo = await/g' node_modules/app-builder-lib/out/targets/ArchiveTarget.js
-
-    - name: Build and sign packages
-      run: scripts/build-macos.js
-      if: github.repository == 'Eugeny/tabby' && github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags'))
-      env:
-        ARCH: ${{matrix.arch}}
-        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-        CSC_LINK: ${{ secrets.CSC_LINK }}
-        CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }}
-        APPSTORE_USERNAME: ${{ secrets.APPSTORE_USERNAME }}
-        APPSTORE_PASSWORD: ${{ secrets.APPSTORE_PASSWORD }}
-        USE_HARD_LINKS: false
-        # DEBUG: electron-builder,electron-builder:*
-
-    - name: Build packages without signing
-      run: scripts/build-macos.js
-      if: "! (github.repository == 'Eugeny/tabby' && github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags')))"
-      env:
-        ARCH: ${{matrix.arch}}
-        # DEBUG: electron-builder,electron-builder:*
-
-    - name: Upload symbols
-      run: |
-        sudo npm install -g @sentry/cli --unsafe-perm
-        ./scripts/sentry-upload.js
-      env:
-        SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
-        SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
-        SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}
-
-    - name: Package artifacts
-      run: |
-        mkdir artifact-pkg
-        mv dist/*.pkg artifact-pkg/
-        mkdir artifact-zip
-        mv dist/*.zip artifact-zip/
-
-    - uses: actions/upload-artifact@master
-      name: Upload PKG
-      with:
-        name: macOS .pkg (${{matrix.arch}})
-        path: artifact-pkg
-
-    - uses: actions/upload-artifact@master
-      name: Upload ZIP
-      with:
-        name: macOS .zip (${{matrix.arch}})
-        path: artifact-zip

+ 0 - 66
.github/workflows/windows.yml

@@ -1,66 +0,0 @@
-name: Windows Build
-on: [push, pull_request]
-jobs:
-  build:
-    runs-on: windows-2016
-
-    steps:
-    - name: Checkout
-      uses: actions/[email protected]
-      with:
-        fetch-depth: 0
-
-    - name: Installing Node
-      uses: actions/[email protected]
-      with:
-        node-version: 14
-
-    - name: Build
-      shell: powershell
-      run: |
-        npm i -g [email protected]
-        yarn
-        node scripts/build-native.js
-        yarn run build
-        node scripts/prepackage-plugins.js
-
-    - name: Build and sign packages
-      run: node scripts/build-windows.js
-      if: github.repository == 'Eugeny/tabby' && github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags'))
-      env:
-        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-        WIN_CSC_LINK: ${{ secrets.WIN_CSC_LINK }}
-        WIN_CSC_KEY_PASSWORD: ${{ secrets.WIN_CSC_KEY_PASSWORD }}
-        # DEBUG: electron-builder,electron-builder:*
-
-    - name: Build packages without signing
-      run: node scripts/build-windows.js
-      if: "!(github.repository == 'Eugeny/tabby' && github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags')))"
-
-    - name: Upload symbols
-      run: |
-        npm install @sentry/cli
-        node scripts/sentry-upload.js
-      env:
-        SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
-        SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
-        SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}
-
-    - name: Package artifacts
-      run: |
-        mkdir artifact-setup
-        mv dist/*-setup.exe artifact-setup/
-        mkdir artifact-portable
-        mv dist/*-portable.zip artifact-portable/
-
-    - uses: actions/upload-artifact@master
-      name: Upload installer
-      with:
-        name: Installer
-        path: artifact-setup
-
-    - uses: actions/upload-artifact@master
-      name: Upload portable build
-      with:
-        name: Portable build
-        path: artifact-portable

+ 1 - 1
package.json

@@ -67,7 +67,7 @@
     "**/graceful-fs": "^4.2.4"
   },
   "scripts": {
-    "build": "npm run build:typings && webpack --color --config app/webpack.main.config.js && webpack --color --config app/webpack.config.js && webpack --color --config tabby-core/webpack.config.js && webpack --color --config tabby-settings/webpack.config.js && webpack --color --config tabby-terminal/webpack.config.js && webpack --color --config tabby-local/webpack.config.js && webpack --color --config tabby-plugin-manager/webpack.config.js && webpack --color --config tabby-community-color-schemes/webpack.config.js && webpack --color --config tabby-ssh/webpack.config.js && webpack --color --config tabby-serial/webpack.config.js && webpack --color --config tabby-electron/webpack.config.js && webpack --color --config tabby-web/webpack.config.js && webpack --color --config web/webpack.config.js",
+    "build": "npm run build:typings && node scripts/build-modules.js",
     "build:typings": "node scripts/build-typings.js",
     "watch": "cross-env TABBY_DEV=1 webpack --progress --color --watch",
     "start": "cross-env TABBY_DEV=1 electron app --debug --inspect",

+ 20 - 0
scripts/build-modules.js

@@ -0,0 +1,20 @@
+#!/usr/bin/env node
+const sh = require('shelljs')
+const vars = require('./vars')
+const log = require('npmlog')
+const webpack = require('webpack')
+const { promisify } = require('util')
+
+const configs = [
+    '../app/webpack.main.config.js',
+    '../app/webpack.config.js',
+    '../web/webpack.config.js',
+    ...vars.builtinPlugins.map(x => `../${x}/webpack.config.js`),
+]
+
+;(async () => {
+    for (const c of configs) {
+        log.info('build', c)
+        await promisify(webpack)(require(c))
+    }
+})()