From b756ae39d0fd5cc92f2249e552a880e457ef0b5a Mon Sep 17 00:00:00 2001
From: GyDi <segydi@foxmail.com>
Date: Sat, 19 Mar 2022 10:50:44 +0800
Subject: [PATCH] chore: ci support linux

---
 .github/workflows/ci.yml | 13 ++++++++++---
 scripts/release.mjs      | 21 +++++++++++++++++----
 2 files changed, 27 insertions(+), 7 deletions(-)

diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 41319f8..d54b6d5 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -10,7 +10,7 @@ jobs:
   release:
     strategy:
       matrix:
-        os: [windows-latest, macos-11]
+        os: [windows-latest, ubuntu-latest, macos-latest]
     runs-on: ${{ matrix.os }}
     if: |
       startsWith(github.repository, 'zzzgydi') &&
@@ -34,6 +34,12 @@ jobs:
         with:
           node-version: 14
 
+      - name: Install Dependencies (ubuntu only)
+        if: matrix.os == 'ubuntu-latest'
+        run: |
+          sudo apt-get update
+          sudo apt-get install -y libgtk-3-dev webkit2gtk-4.0 libappindicator3-dev librsvg2-dev patchelf
+
       - name: Get yarn cache dir path
         id: yarn-cache-dir-path
         run: echo "::set-output name=dir::$(yarn cache dir)"
@@ -68,6 +74,7 @@ jobs:
           prerelease: true
 
       - name: Green zip bundle
+        if: matrix.os == 'windows-latest'
         run: |
           yarn run green
         env:
@@ -75,7 +82,7 @@ jobs:
 
   release-update:
     needs: release
-    runs-on: macos-11
+    runs-on: macos-latest
     if: |
       startsWith(github.repository, 'zzzgydi') &&
       startsWith(github.ref, 'refs/tags/v')
@@ -97,7 +104,7 @@ jobs:
             ${{ runner.os }}-yarn-
 
       - name: Yarn install
-        run: yarn
+        run: yarn install
 
       - name: Release update.json
         run: yarn run release
diff --git a/scripts/release.mjs b/scripts/release.mjs
index 1752043..4599e02 100644
--- a/scripts/release.mjs
+++ b/scripts/release.mjs
@@ -37,6 +37,7 @@ async function resolveRelease() {
     pub_date: new Date().toISOString(),
     platforms: {
       win64: { signature: "", url: "" },
+      linux: { signature: "", url: "" },
       darwin: { signature: "", url: "" },
     },
   };
@@ -48,22 +49,34 @@ async function resolveRelease() {
     if (/\.msi\.zip$/.test(name)) {
       updateData.platforms.win64.url = browser_download_url;
     }
-    // darwin url
-    if (/\.app\.tar\.gz$/.test(name)) {
-      updateData.platforms.darwin.url = browser_download_url;
-    }
     // win64 signature
     if (/\.msi\.zip\.sig$/.test(name)) {
       updateData.platforms.win64.signature = await getSignature(
         browser_download_url
       );
     }
+
+    // darwin url
+    if (/\.app\.tar\.gz$/.test(name)) {
+      updateData.platforms.darwin.url = browser_download_url;
+    }
     // darwin signature
     if (/\.app\.tar\.gz\.sig$/.test(name)) {
       updateData.platforms.darwin.signature = await getSignature(
         browser_download_url
       );
     }
+
+    // linux url
+    if (/\.AppImage\.tar\.gz$/.test(name)) {
+      updateData.platforms.linux.url = browser_download_url;
+    }
+    // linux signature
+    if (/\.AppImage\.tar\.gz\.sig$/.test(name)) {
+      updateData.platforms.linux.signature = await getSignature(
+        browser_download_url
+      );
+    }
   });
 
   await Promise.allSettled(promises);
-- 
GitLab