aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/.github/workflows
diff options
context:
space:
mode:
author简律纯 <i@jyunko.cn>2026-01-15 17:49:26 +0800
committerGitHub <noreply@github.com>2026-01-15 17:49:26 +0800
commit32a9aceee42a2261b64f9e6effda522639576a5e (patch)
tree4cae8d216c3093421addaa0450bc8004c537e373 /.github/workflows
parentce4b0c2053d5d16f7091d74840d4a502401f1a4e (diff)
parent31077dbd39a25eecd24a1dca0f8c9d1879265277 (diff)
downloadDropOut-32a9aceee42a2261b64f9e6effda522639576a5e.tar.gz
DropOut-32a9aceee42a2261b64f9e6effda522639576a5e.zip
Merge pull request #30 from HsiangNianian/main
Diffstat (limited to '.github/workflows')
-rw-r--r--.github/workflows/check.yml34
-rw-r--r--.github/workflows/codeql.yml103
-rw-r--r--.github/workflows/release.yml45
-rw-r--r--.github/workflows/test.yml35
4 files changed, 211 insertions, 6 deletions
diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml
new file mode 100644
index 0000000..0cbcf35
--- /dev/null
+++ b/.github/workflows/check.yml
@@ -0,0 +1,34 @@
+name: UI Checker
+
+on:
+ push:
+ paths:
+ - "ui/**"
+ - ".github/workflows/ui_check.yml"
+ pull_request:
+ branches: ["main", "master", "dev"]
+ workflow_dispatch:
+
+jobs:
+ check:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Install pnpm
+ uses: pnpm/action-setup@v4
+ with:
+ version: 9
+
+ - name: Install Node.js
+ uses: actions/setup-node@v4
+ with:
+ node-version: 22
+ cache: "pnpm"
+ cache-dependency-path: "ui/pnpm-lock.yaml"
+
+ - run: pnpm install
+ working-directory: ui
+
+ - run: pnpm check
+ working-directory: ui
diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml
new file mode 100644
index 0000000..734c4c5
--- /dev/null
+++ b/.github/workflows/codeql.yml
@@ -0,0 +1,103 @@
+# For most projects, this workflow file will not need changing; you simply need
+# to commit it to your repository.
+#
+# You may wish to alter this file to override the set of languages analyzed,
+# or to provide custom queries or build logic.
+#
+# ******** NOTE ********
+# We have attempted to detect the languages in your repository. Please check
+# the `language` matrix defined below to confirm you have the correct set of
+# supported CodeQL languages.
+#
+name: "CodeQL Advanced"
+
+on:
+ push:
+ branches: [ "main" ]
+ pull_request:
+ branches: [ "main" ]
+ schedule:
+ - cron: '25 0 * * 3'
+
+jobs:
+ analyze:
+ name: Analyze (${{ matrix.language }})
+ # Runner size impacts CodeQL analysis time. To learn more, please see:
+ # - https://gh.io/recommended-hardware-resources-for-running-codeql
+ # - https://gh.io/supported-runners-and-hardware-resources
+ # - https://gh.io/using-larger-runners (GitHub.com only)
+ # Consider using larger runners or machines with greater resources for possible analysis time improvements.
+ runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }}
+ permissions:
+ # required for all workflows
+ security-events: write
+
+ # required to fetch internal or private CodeQL packs
+ packages: read
+
+ # only required for workflows in private repositories
+ actions: read
+ contents: read
+
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ - language: actions
+ build-mode: none
+ - language: javascript-typescript
+ build-mode: none
+ - language: rust
+ build-mode: none
+ # CodeQL supports the following values keywords for 'language': 'actions', 'c-cpp', 'csharp', 'go', 'java-kotlin', 'javascript-typescript', 'python', 'ruby', 'rust', 'swift'
+ # Use `c-cpp` to analyze code written in C, C++ or both
+ # Use 'java-kotlin' to analyze code written in Java, Kotlin or both
+ # Use 'javascript-typescript' to analyze code written in JavaScript, TypeScript or both
+ # To learn more about changing the languages that are analyzed or customizing the build mode for your analysis,
+ # see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning.
+ # If you are analyzing a compiled language, you can modify the 'build-mode' for that language to customize how
+ # your codebase is analyzed, see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+
+ # Add any setup steps before running the `github/codeql-action/init` action.
+ # This includes steps like installing compilers or runtimes (`actions/setup-node`
+ # or others). This is typically only required for manual builds.
+ # - name: Setup runtime (example)
+ # uses: actions/setup-example@v1
+
+ # Initializes the CodeQL tools for scanning.
+ - name: Initialize CodeQL
+ uses: github/codeql-action/init@v4
+ with:
+ languages: ${{ matrix.language }}
+ build-mode: ${{ matrix.build-mode }}
+ # If you wish to specify custom queries, you can do so here or in a config file.
+ # By default, queries listed here will override any specified in a config file.
+ # Prefix the list here with "+" to use these queries and those in the config file.
+
+ # For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
+ # queries: security-extended,security-and-quality
+
+ # If the analyze step fails for one of the languages you are analyzing with
+ # "We were unable to automatically build your code", modify the matrix above
+ # to set the build mode to "manual" for that language. Then modify this step
+ # to build your code.
+ # ℹ️ Command-line programs to run using the OS shell.
+ # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
+ - name: Run manual build steps
+ if: matrix.build-mode == 'manual'
+ shell: bash
+ run: |
+ echo 'If you are using a "manual" build mode for one or more of the' \
+ 'languages you are analyzing, replace this with the commands to build' \
+ 'your code, for example:'
+ echo ' make bootstrap'
+ echo ' make release'
+ exit 1
+
+ - name: Perform CodeQL Analysis
+ uses: github/codeql-action/analyze@v4
+ with:
+ category: "/language:${{matrix.language}}"
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 774e547..82399e5 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -82,6 +82,9 @@ jobs:
args: "--target aarch64-pc-windows-msvc"
runs-on: ${{ matrix.platform }}
+ container:
+ image: ${{ matrix.container }}
+ options: --user root
steps:
- uses: actions/checkout@v4
@@ -89,13 +92,13 @@ jobs:
if: matrix.platform == 'ubuntu-22.04'
run: |
sudo apt-get update
- sudo apt-get install -y libwebkit2gtk-4.1-dev build-essential curl wget file libssl-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev
+ sudo apt-get install -y libwebkit2gtk-4.1-dev build-essential curl wget file libssl-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev libfuse2
- name: Install Dependencies (Linux ARM64)
if: matrix.platform == 'ubuntu-24.04-arm'
run: |
sudo apt-get update
- sudo apt-get install -y libwebkit2gtk-4.1-dev build-essential curl wget file libssl-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev
+ sudo apt-get install -y libwebkit2gtk-4.1-dev build-essential curl wget file libssl-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev libfuse2
- name: Install pnpm
uses: pnpm/action-setup@v4
@@ -123,6 +126,18 @@ jobs:
with:
workspaces: "./src-tauri -> target"
shared-key: ${{ matrix.target }}
+
+ - name: Setup appimagetool (Linux)
+ if: startsWith(matrix.platform, 'ubuntu') && !startsWith(matrix.platform, 'macos') && !startsWith(matrix.platform, 'windows')
+ run: |
+ ARCH=$(uname -m)
+ wget -q "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-${ARCH}.AppImage"
+ chmod +x "appimagetool-${ARCH}.AppImage"
+ if command -v sudo >/dev/null 2>&1; then
+ sudo mv "appimagetool-${ARCH}.AppImage" /usr/local/bin/appimagetool
+ else
+ mv "appimagetool-${ARCH}.AppImage" /usr/local/bin/appimagetool
+ fi
- name: Build Tauri App
uses: tauri-apps/tauri-action@v0
@@ -131,3 +146,29 @@ jobs:
with:
releaseId: ${{ needs.promote-release.outputs.release_id }}
args: ${{ matrix.args }}
+
+ - name: Fix AppImage for Wayland (Linux)
+ if: startsWith(matrix.platform, 'ubuntu') && !startsWith(matrix.platform, 'macos') && !startsWith(matrix.platform, 'windows')
+ run: |
+ # Locate the generated AppImage
+ APPIMAGE=$(find bundle -name "*.AppImage" -type f | head -1)
+ echo "Found AppImage: $APPIMAGE"
+
+ if [ -n "$APPIMAGE" ]; then
+ # backup original AppImage
+ cp "$APPIMAGE" "${APPIMAGE}.backup"
+
+ # extract AppImage
+ "$APPIMAGE" --appimage-extract
+
+ # Fix GTK hook, remove forced X11
+ if [ -f squashfs-root/apprun-hooks/linuxdeploy-plugin-gtk.sh ]; then
+ sed -i 's/^export GDK_BACKEND=x11.*$/# export GDK_BACKEND=x11 # Disabled for Wayland compatibility/' squashfs-root/apprun-hooks/linuxdeploy-plugin-gtk.sh
+ echo "Successfully patched GTK hook for Wayland compatibility"
+ fi
+
+ # Repack AppImage
+ appimagetool squashfs-root "$APPIMAGE"
+ rm -rf squashfs-root
+ fi
+ working-directory: src-tauri/target/release
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index b5311c9..8ca056e 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -15,23 +15,50 @@ env:
jobs:
test:
- name: Test on ${{ matrix.platform }}
+ name: Test on ${{ matrix.name }}
runs-on: ${{ matrix.platform }}
+ container:
+ image: ${{ matrix.container }}
+ options: --user root
strategy:
fail-fast: false
matrix:
# On Push: Linux only. On PR: All platforms.
- platform: ${{ (github.event_name == 'pull_request') && fromJson('["ubuntu-22.04", "windows-latest", "macos-14"]') || fromJson('["ubuntu-22.04"]') }}
+ include:
+ - platform: "ubuntu-22.04"
+ name: "Ubuntu 22.04"
+ - platform: "ubuntu-22.04"
+ name: "Arch Linux (Wayland)"
+ container: "archlinux:latest"
+ wayland: true
+ - platform: "windows-latest"
+ name: "Windows"
+ - platform: "macos-14"
+ name: "macOS"
steps:
- uses: actions/checkout@v4
- - name: Install Dependencies (Linux)
- if: runner.os == 'Linux'
+ - name: Install Dependencies (Ubuntu)
+ if: runner.os == 'Linux' && !matrix.wayland
run: |
sudo apt-get update
sudo apt-get install -y libwebkit2gtk-4.1-dev build-essential curl wget file libssl-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev
+ - name: Install Dependencies (Arch Linux)
+ if: matrix.wayland
+ run: |
+ pacman -Syu --noconfirm
+ pacman -S --noconfirm webkit2gtk-4.1 base-devel curl wget file openssl gtk3
+
+ - name: Setup Wayland Environment (Arch)
+ if: matrix.wayland
+ run: |
+ echo "WAYLAND_DISPLAY=wayland-1" >> $GITHUB_ENV
+ echo "GDK_BACKEND=wayland" >> $GITHUB_ENV
+ echo "XDG_SESSION_TYPE=wayland" >> $GITHUB_ENV
+ echo "Wayland test environment configured"
+
- name: Install Rust
uses: dtolnay/rust-toolchain@stable