Files
EasyTier/.github/workflows/gui.yml
T
Workflow config file is invalid. Please check your config file: model.ReadWorkflow: EOF
2025-01-10 21:23:35 +08:00

236 lines
10 KiB
YAML

# name: EasyTier GUI
# on:
# push:
# branches: ["develop", "main", "releases/**"]
# pull_request:
# branches: ["develop", "main"]
# env:
# CARGO_TERM_COLOR: always
# defaults:
# run:
# # necessary for windows
# shell: bash
# jobs:
# pre_job:
# # continue-on-error: true # Uncomment once integration is finished
# runs-on: ubuntu-latest
# # Map a step output to a job output
# outputs:
# should_skip: ${{ steps.skip_check.outputs.should_skip == 'true' && !startsWith(github.ref_name, 'releases/') }}
# steps:
# - id: skip_check
# uses: fkirc/skip-duplicate-actions@v5
# with:
# # All of these options are optional, so you can remove them if you are happy with the defaults
# concurrent_skipping: 'same_content_newer'
# skip_after_successful_duplicate: 'true'
# cancel_others: 'true'
# paths: '["Cargo.toml", "Cargo.lock", "easytier/**", "easytier-gui/**", ".github/workflows/gui.yml", ".github/workflows/install_rust.sh"]'
# build-gui:
# strategy:
# fail-fast: false
# matrix:
# include:
# - TARGET: aarch64-unknown-linux-musl
# OS: ubuntu-22.04
# ARTIFACT_NAME: linux-aarch64
# - TARGET: x86_64-unknown-linux-musl
# OS: ubuntu-22.04
# ARTIFACT_NAME: linux-x86_64
# - TARGET: x86_64-apple-darwin
# OS: macos-latest
# ARTIFACT_NAME: macos-x86_64
# - TARGET: aarch64-apple-darwin
# OS: macos-latest
# ARTIFACT_NAME: macos-aarch64
# - TARGET: x86_64-pc-windows-msvc
# OS: windows-latest
# ARTIFACT_NAME: windows-x86_64
# - TARGET: aarch64-pc-windows-msvc
# OS: windows-latest
# ARTIFACT_NAME: windows-arm64
# - TARGET: x86_64-win7-windows-msvc
# OS: windows-latest
# ARTIFACT_NAME: windows-win7-x86_64
# runs-on: ${{ matrix.OS }}
# env:
# NAME: easytier
# TARGET: ${{ matrix.TARGET }}
# OS: ${{ matrix.OS }}
# OSS_BUCKET: ${{ secrets.ALIYUN_OSS_BUCKET }}
# needs: pre_job
# if: needs.pre_job.outputs.should_skip != 'true'
# steps:
# - uses: actions/checkout@v3
# - name: Set current ref as env variable
# run: |
# echo "GIT_DESC=$(git log -1 --format=%cd.%h --date=format:%Y-%m-%d_%H:%M:%S)" >> $GITHUB_ENV
# - uses: actions/setup-node@v4
# with:
# node-version: 21
# - name: Install pnpm
# uses: pnpm/action-setup@v3
# with:
# version: 9
# run_install: false
# - name: Get pnpm store directory
# shell: bash
# run: |
# echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
# - name: Setup pnpm cache
# uses: actions/cache@v4
# with:
# path: ${{ env.STORE_PATH }}
# key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
# restore-keys: |
# ${{ runner.os }}-pnpm-store-
# - name: Install frontend dependencies
# run: |
# pnpm -r install
# pnpm -r build
# - name: Cargo cache
# uses: actions/cache@v4
# with:
# path: |
# ~/.cargo
# ./target
# key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
# - name: Install rust target
# run: bash ./.github/workflows/install_rust.sh
# - name: Setup protoc
# uses: arduino/setup-protoc@v2
# with:
# # GitHub repo token to use to avoid rate limiter
# repo-token: ${{ secrets.GITHUB_TOKEN }}
# - name: Install GUI cross compile (aarch64 only)
# if: ${{ matrix.TARGET == 'aarch64-unknown-linux-musl' }}
# run: |
# # see https://tauri.app/v1/guides/building/linux/
# echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ jammy main restricted" | sudo tee /etc/apt/sources.list
# echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ jammy-updates main restricted" | sudo tee -a /etc/apt/sources.list
# echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ jammy universe" | sudo tee -a /etc/apt/sources.list
# echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ jammy-updates universe" | sudo tee -a /etc/apt/sources.list
# echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ jammy multiverse" | sudo tee -a /etc/apt/sources.list
# echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ jammy-updates multiverse" | sudo tee -a /etc/apt/sources.list
# echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ jammy-backports main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list
# echo "deb [arch=amd64] http://security.ubuntu.com/ubuntu/ jammy-security main restricted" | sudo tee -a /etc/apt/sources.list
# echo "deb [arch=amd64] http://security.ubuntu.com/ubuntu/ jammy-security universe" | sudo tee -a /etc/apt/sources.list
# echo "deb [arch=amd64] http://security.ubuntu.com/ubuntu/ jammy-security multiverse" | sudo tee -a /etc/apt/sources.list
# echo "deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports jammy main restricted" | sudo tee -a /etc/apt/sources.list
# echo "deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports jammy-updates main restricted" | sudo tee -a /etc/apt/sources.list
# echo "deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports jammy universe" | sudo tee -a /etc/apt/sources.list
# echo "deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports jammy-updates universe" | sudo tee -a /etc/apt/sources.list
# echo "deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports jammy multiverse" | sudo tee -a /etc/apt/sources.list
# echo "deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports jammy-updates multiverse" | sudo tee -a /etc/apt/sources.list
# echo "deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports jammy-backports main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list
# echo "deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports jammy-security main restricted" | sudo tee -a /etc/apt/sources.list
# echo "deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports jammy-security universe" | sudo tee -a /etc/apt/sources.list
# echo "deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports jammy-security multiverse" | sudo tee -a /etc/apt/sources.list
# sudo dpkg --add-architecture arm64
# sudo apt-get update
# sudo apt-get install -y libgstreamer1.0-0:arm64 gstreamer1.0-plugins-base:arm64 gstreamer1.0-plugins-good:arm64
# sudo apt-get install -y libgstreamer-gl1.0-0:arm64 libgstreamer-plugins-base1.0-0:arm64 libgstreamer-plugins-good1.0-0:arm64 libwebkit2gtk-4.1-0:arm64
# sudo apt install -f -o Dpkg::Options::="--force-overwrite" libwebkit2gtk-4.1-dev:arm64 libssl-dev:arm64 gcc-aarch64-linux-gnu
# echo "PKG_CONFIG_SYSROOT_DIR=/usr/aarch64-linux-gnu/" >> "$GITHUB_ENV"
# echo "PKG_CONFIG_PATH=/usr/lib/aarch64-linux-gnu/pkgconfig/" >> "$GITHUB_ENV"
# - name: copy correct DLLs
# if: ${{ matrix.OS == 'windows-latest' }}
# run: |
# if [[ $TARGET =~ ^aarch64.*$ ]]; then
# cp ./easytier/third_party/arm64/*.dll ./easytier-gui/src-tauri/
# else
# cp ./easytier/third_party/*.dll ./easytier-gui/src-tauri/
# fi
# - name: Build GUI
# uses: tauri-apps/tauri-action@v0
# if: ${{ ! contains(matrix.TARGET, 'win7') }}
# with:
# projectPath: ./easytier-gui
# # https://tauri.app/v1/guides/building/linux/#cross-compiling-tauri-applications-for-arm-based-devices
# args: --verbose --target ${{ matrix.TARGET }} ${{ matrix.OS == 'ubuntu-22.04' && contains(matrix.TARGET, 'aarch64') && '--bundles deb' || '' }}
# - name: Build GUI (Windows 7)
# uses: tauri-apps/tauri-action@v0
# if: ${{ contains(matrix.TARGET, 'win7') }}
# with:
# projectPath: ./easytier-gui
# args: --verbose -- -Z build-std --target ${{ matrix.TARGET }}
# - name: Compress
# run: |
# mkdir -p ./artifacts/objects/
# if [[ $GITHUB_REF_TYPE =~ ^tag$ ]]; then
# TAG=$GITHUB_REF_NAME
# else
# TAG=$GITHUB_SHA
# fi
# # copy gui bundle, gui is built without specific target
# if [[ $OS =~ ^windows.*$ ]]; then
# mv ./target/$TARGET/release/bundle/nsis/*.exe ./artifacts/objects/
# elif [[ $OS =~ ^macos.*$ ]]; then
# mv ./target/$TARGET/release/bundle/dmg/*.dmg ./artifacts/objects/
# elif [[ $OS =~ ^ubuntu.*$ && ! $TARGET =~ ^mips.*$ ]]; then
# mv ./target/$TARGET/release/bundle/deb/*.deb ./artifacts/objects/
# if [[ $TARGET =~ ^x86_64.*$ ]]; then
# # currently only x86 appimage is supported
# mv ./target/$TARGET/release/bundle/appimage/*.AppImage ./artifacts/objects/
# fi
# fi
# mv ./artifacts/objects/* ./artifacts/
# rm -rf ./artifacts/objects/
# - name: Archive artifact
# uses: actions/upload-artifact@v4
# with:
# name: easytier-gui-${{ matrix.ARTIFACT_NAME }}
# path: |
# ./artifacts/*
# - name: Upload OSS
# if: ${{ env.OSS_BUCKET != '' }}
# uses: Menci/upload-to-oss@main
# with:
# access-key-id: ${{ secrets.ALIYUN_OSS_ACCESS_ID }}
# access-key-secret: ${{ secrets.ALIYUN_OSS_ACCESS_KEY }}
# endpoint: ${{ secrets.ALIYUN_OSS_ENDPOINT }}
# bucket: ${{ secrets.ALIYUN_OSS_BUCKET }}
# local-path: ./artifacts/
# remote-path: /easytier-releases/${{env.GIT_DESC}}/easytier-gui-${{ matrix.ARTIFACT_NAME }}
# no-delete-remote-files: true
# retry: 5
# gui-result:
# if: needs.pre_job.outputs.should_skip != 'true' && always()
# runs-on: ubuntu-latest
# needs:
# - pre_job
# - build-gui
# steps:
# - name: Mark result as failed
# if: needs.build-gui.result != 'success'
# run: exit 1