Improve sftp visual effects #6658
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Package-Build | |
on: [push, pull_request] | |
jobs: | |
Lint: | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Installing Node | |
uses: actions/setup-node@v3.7.0 | |
with: | |
node-version: 16 | |
- name: Install deps | |
run: | | |
npm i -g yarn@1.19.1 | |
cd app | |
yarn | |
cd .. | |
rm app/node_modules/.yarn-integrity | |
yarn | |
- name: Build typings | |
run: yarn run build:typings | |
- name: Lint | |
run: yarn run lint | |
macOS-Build: | |
runs-on: macos-12 | |
needs: Lint | |
strategy: | |
matrix: | |
include: | |
- arch: x86_64 | |
- arch: arm64 | |
fail-fast: false | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Installing Node | |
uses: actions/setup-node@v3.7.0 | |
with: | |
node-version: 16 | |
- name: Install deps | |
run: | | |
sudo -H pip3 install setuptools | |
npm config set python python3 | |
sudo npm i -g yarn@1.22.1 | |
yarn --network-timeout 1000000 | |
env: | |
ARCH: ${{matrix.arch}} | |
- name: Fix cross build | |
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.mjs | |
env: | |
ARCH: ${{matrix.arch}} | |
- run: sed -i '' 's/updateInfo = await/\/\/updateInfo = await/g' node_modules/app-builder-lib/out/targets/ArchiveTarget.js | |
# Work around electron-builder beta bug | |
- run: ln -s ../../node_modules/electron app/node_modules | |
- name: Build and sign packages | |
run: scripts/build-macos.mjs | |
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 }} | |
KEYGEN_TOKEN: ${{ secrets.KEYGEN_TOKEN }} | |
CSC_LINK: ${{ secrets.CSC_LINK }} | |
CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }} | |
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} | |
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.mjs | |
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.mjs | |
env: | |
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} | |
SENTRY_ORG: ${{ secrets.SENTRY_ORG }} | |
SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }} | |
- name: Package artifacts | |
run: | | |
mkdir artifact-dmg | |
mv dist/*.dmg artifact-dmg/ | |
mkdir artifact-zip | |
mv dist/*.zip artifact-zip/ | |
- uses: actions/upload-artifact@master | |
name: Upload DMG | |
with: | |
name: macOS .dmg (${{matrix.arch}}) | |
path: artifact-dmg | |
- uses: actions/upload-artifact@master | |
name: Upload ZIP | |
with: | |
name: macOS .zip (${{matrix.arch}}) | |
path: artifact-zip | |
Linux-Build: | |
runs-on: ubuntu-20.04 | |
needs: Lint | |
strategy: | |
matrix: | |
include: | |
- build-arch: x64 | |
arch: amd64 | |
- build-arch: arm64 | |
arch: arm64 | |
triplet: aarch64-linux-gnu- | |
- build-arch: arm | |
arch: armhf | |
triplet: arm-linux-gnueabihf- | |
env: | |
CC: ${{matrix.triplet}}gcc | |
CXX: ${{matrix.triplet}}g++ | |
ARCH: ${{matrix.build-arch}} | |
npm_config_arch: ${{matrix.build-arch}} | |
npm_config_target_arch: ${{matrix.build-arch}} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Install Node | |
uses: actions/setup-node@v3.7.0 | |
with: | |
node-version: 18 | |
- name: Install deps (amd64) | |
run: | | |
sudo apt-get update | |
sudo apt-get install libarchive-tools zsh python3-distutils | |
- name: Install npm_modules (amd64) | |
run: | | |
npm i -g yarn | |
yarn --network-timeout 1000000 | |
if: matrix.build-arch == 'x64' | |
- name: Setup Crossbuild (${{matrix.arch}}) | |
run: | | |
sudo apt-get update -y && sudo apt-get install schroot sbuild debootstrap -y | |
sudo debootstrap --include=git,curl,gnupg,ca-certificates,crossbuild-essential-${{matrix.arch}},python-dev,python3-dev,libarchive-tools,cmake --variant=buildd --exclude=snapd --components=main,restricted,universe,multiverse --extractor=dpkg-deb bionic /build-chroot/ | |
echo 'deb [arch=amd64,i386] http://archive.ubuntu.com/ubuntu bionic main restricted universe multiverse' | sudo tee /build-chroot/etc/apt/sources.list >/dev/null | |
echo 'deb [arch=arm64,armhf] http://ports.ubuntu.com/ubuntu-ports bionic main restricted universe multiverse' | sudo tee -a /build-chroot/etc/apt/sources.list >/dev/null | |
curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | gpg --dearmor | sudo tee /build-chroot/etc/apt/trusted.gpg.d/nodesource.gpg >/dev/null | |
echo 'deb http://deb.nodesource.com/node_16.x bionic main' | sudo tee /build-chroot/etc/apt/sources.list.d/nodesource.list >/dev/null | |
echo "[build-chroot] | |
description=Ubuntu 18.04 Build chroot | |
type=directory | |
directory=/build-chroot | |
root-groups=root,sudo | |
profile=buildd | |
personality=linux | |
union-type=overlay" | sudo tee /etc/schroot/chroot.d/build-chroot.pref >/dev/null | |
echo "/home /home none rw,bind 0 0" | sudo tee -a /etc/schroot/buildd/fstab >/dev/null | |
if: matrix.build-arch != 'x64' | |
- name: Install node_modules & CrossBuild native modules for ${{matrix.arch}} | |
run: | | |
sudo schroot -c build-chroot -u root -- bash -c "apt-get update -y | |
dpkg --add-architecture ${{matrix.arch}} | |
apt-get install -y nodejs libfontconfig-dev:${{matrix.arch}} libsecret-1-dev:${{matrix.arch}} libnss3:${{matrix.arch}} libatk1.0-0:${{matrix.arch}} libatk-bridge2.0-0:${{matrix.arch}} libgdk-pixbuf2.0-0:${{matrix.arch}} libgtk-3-0:${{matrix.arch}} libgbm1:${{matrix.arch}} | |
export CC=${{matrix.triplet}}gcc CXX=${{matrix.triplet}}g++ LD=${{matrix.triplet}}ld | |
if [[ ${{matrix.arch}} == 'arm64' ]]; then | |
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/lib/aarch64-linux-gnu/pkgconfig/ | |
elif [[ ${{matrix.arch}} == 'armhf' ]]; then | |
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/lib/arm-linux-gnueabihf/pkgconfig/ | |
fi | |
export ARCH=${{matrix.build-arch}} npm_config_arch=${{matrix.build-arch}} npm_config_target_arch=${{matrix.build-arch}} | |
npm i -g yarn | |
yarn --network-timeout 1000000 --arch=${{matrix.build-arch}} --target_arch=${{matrix.build-arch}}" | |
if: matrix.build-arch != 'x64' | |
- name: Webpack (${{matrix.arch}}) | |
run: yarn run build --arch=${{matrix.build-arch}} --target_arch=${{matrix.build-arch}} | |
- name: Prepackage plugins (${{matrix.arch}}) | |
run: scripts/prepackage-plugins.mjs | |
- name: Build packages (${{matrix.arch}}) | |
run: scripts/build-linux.mjs | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
KEYGEN_TOKEN: ${{ secrets.KEYGEN_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' | |
if: matrix.build-arch == 'x64' | |
# - name: Install deps and Build (arm64) | |
# uses: docker://multiarch/ubuntu-core:arm64-bionic | |
# with: | |
# args: > | |
# bash -c | |
# "apt update && apt install curl lsb-release gnupg -y && | |
# curl -fsSL https://deb.nodesource.com/setup_16.x | bash - && | |
# apt install make build-essential git ruby libarchive-tools nodejs rpm libsecret-1-dev libfontconfig1-dev -y && | |
# git config --global --add safe.directory /github/workspace && | |
# gem install public_suffix -v 4.0.7 && | |
# gem install fpm --no-document && | |
# npm i -g yarn && | |
# cd /github/workspace && | |
# yarn --network-timeout 1000000 && | |
# yarn run build && | |
# scripts/prepackage-plugins.mjs && | |
# USE_SYSTEM_FPM=true scripts/build-linux.mjs" | |
# env: | |
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
# KEYGEN_TOKEN: ${{ secrets.KEYGEN_TOKEN }} | |
# USE_HARD_LINKS: false | |
# if: matrix.build-arch == 'arm64' && github.repository == 'Eugeny/tabby' && startsWith(github.ref, 'refs/tags') | |
# - name: Install deps and Build (armv7l) | |
# uses: docker://multiarch/ubuntu-core:armhf-bionic | |
# with: | |
# args: > | |
# bash -c | |
# "apt update && apt install curl lsb-release gnupg -y && | |
# curl -fsSL https://deb.nodesource.com/setup_16.x | bash - && | |
# apt install make build-essential git ruby libarchive-tools nodejs rpm libsecret-1-dev libfontconfig1-dev -y && | |
# git config --global --add safe.directory /github/workspace && | |
# gem install public_suffix -v 4.0.7 && | |
# gem install fpm --no-document && | |
# npm i -g yarn && | |
# cd /github/workspace && | |
# sed -i '/ \"electron\":/c\ \"electron\": \"17.0.0\",' package.json && | |
# yarn --network-timeout 1000000 && | |
# yarn run build && | |
# scripts/prepackage-plugins.mjs && | |
# USE_SYSTEM_FPM=true scripts/build-linux.mjs" | |
# env: | |
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
# KEYGEN_TOKEN: ${{ secrets.KEYGEN_TOKEN }} | |
# USE_HARD_LINKS: false | |
# if: matrix.build-arch == 'arm' && github.repository == 'Eugeny/tabby' && startsWith(github.ref, 'refs/tags') | |
- name: Upload symbols (amd64 only) | |
run: | | |
sudo npm install -g @sentry/cli --unsafe-perm | |
./scripts/sentry-upload.mjs | |
if: matrix.build-arch == 'x64' | |
env: | |
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} | |
SENTRY_ORG: ${{ secrets.SENTRY_ORG }} | |
SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }} | |
- name: Upload packages to packagecloud.io | |
uses: Eugeny/packagecloud-action@main | |
if: github.repository == 'Eugeny/tabby' && github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') | |
env: | |
PACKAGECLOUD_TOKEN: ${{ secrets.PACKAGECLOUD_TOKEN }} | |
with: | |
repo: 'eugeny/tabby' | |
dir: 'dist' | |
- uses: actions/upload-artifact@master | |
name: Upload AppImage (${{matrix.arch}}) | |
with: | |
name: Linux AppImage (${{matrix.arch}}) | |
path: dist/*.AppImage | |
- uses: actions/upload-artifact@master | |
name: Upload DEB (${{matrix.arch}}) | |
with: | |
name: Linux DEB (${{matrix.arch}}) | |
path: dist/*.deb | |
- uses: actions/upload-artifact@master | |
name: Upload RPM (${{matrix.arch}}) | |
with: | |
name: Linux RPM (${{matrix.arch}}) | |
path: dist/*.rpm | |
- uses: actions/upload-artifact@master | |
name: Upload Pacman Package (${{matrix.arch}}) | |
with: | |
name: Linux Pacman (${{matrix.arch}}) | |
path: dist/*.pacman | |
- uses: actions/upload-artifact@master | |
name: Upload Linux tarball (${{matrix.arch}}) | |
with: | |
name: Linux tarball (${{matrix.arch}}) | |
path: dist/*.tar.gz | |
- uses: actions/upload-artifact@master | |
name: Upload web tarball (amd64 only) | |
with: | |
name: Web tarball | |
path: tabby-web.tar.gz | |
if: matrix.build-arch == 'x64' | |
Windows-Build: | |
runs-on: windows-2022 | |
needs: Lint | |
strategy: | |
matrix: | |
include: | |
- arch: x64 | |
- arch: arm64 | |
fail-fast: false | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Installing Node | |
uses: actions/setup-node@v3.7.0 | |
with: | |
node-version: 16 | |
- name: Update node-gyp | |
run: | | |
npm install --global node-gyp@8.4.1 | |
npm prefix -g | % {npm config set node_gyp "$_\node_modules\node-gyp\bin\node-gyp.js"} | |
- name: Build | |
shell: powershell | |
run: | | |
npm i -g yarn@1.19.1 | |
yarn --network-timeout 1000000 | |
yarn run build | |
node scripts/prepackage-plugins.mjs | |
env: | |
ARCH: ${{matrix.arch}} | |
- name: Build and sign packages | |
run: node scripts/build-windows.mjs | |
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 }} | |
KEYGEN_TOKEN: ${{ secrets.KEYGEN_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.mjs | |
if: "!(github.repository == 'Eugeny/tabby' && github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags')))" | |
env: | |
ARCH: ${{matrix.arch}} | |
- name: Upload symbols | |
run: | | |
npm install @sentry/cli | |
node scripts/sentry-upload.mjs | |
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: Windows installer (${{matrix.arch}}) | |
path: artifact-setup | |
- uses: actions/upload-artifact@master | |
name: Upload portable build | |
with: | |
name: Windows portable build (${{matrix.arch}}) | |
path: artifact-portable |