From cd409fcfb996d4164346b5c0a3519cf770275e34 Mon Sep 17 00:00:00 2001 From: Levi Date: Fri, 15 Nov 2024 12:06:51 +0800 Subject: [PATCH] ci: add build tests for all platforms (#812) --- .github/workflows/test.yml | 104 +++++++++++++++++++++++++++++++++---- 1 file changed, 95 insertions(+), 9 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 896cc171..183114f2 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -58,11 +58,45 @@ jobs: with: files: ./coverage.txt token: ${{ secrets.CODECOV_UPLOAD_TOKEN }} - build: - name: Build check - runs-on: ubuntu-latest - # needs: [lint, test] - needs: [test] + build-desktop: + name: Build desktop check + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ windows-latest, macos-latest, ubuntu-latest ] + needs: [ test ] + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-go@v4 + with: + go-version: ${{ env.GO_VERSION }} + - uses: subosito/flutter-action@v2 + with: + flutter-version: ${{ env.FLUTTER_VERSION }} + - if: runner.os == 'windows-latest' + run: | + go build -tags nosqlite -ldflags="-w -s" -buildmode=c-shared -o ui/flutter/windows/libgopeed.dll github.com/GopeedLab/gopeed/bind/desktop + cd ui/flutter + flutter build windows + - if: runner.os == 'macos-latest' + run: | + go build -tags nosqlite -ldflags="-w -s" -buildmode=c-shared -o ui/flutter/macos/Frameworks/libgopeed.dylib github.com/GopeedLab/gopeed/bind/desktop + cd ui/flutter + flutter build macos + - if: runner.os == 'ubuntu-latest' + run: | + sudo apt-get update -y + sudo apt-get install -y ninja-build libgtk-3-dev libayatana-appindicator3-dev + go build -tags nosqlite -ldflags="-w -s" -buildmode=c-shared -o ui/flutter/linux/bundle/lib/libgopeed.so github.com/GopeedLab/gopeed/bind/desktop + cd ui/flutter + flutter build linux + build-mobile: + name: Build mobile check + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ macos-latest, ubuntu-latest ] + needs: [ test ] steps: - uses: actions/checkout@v3 - uses: actions/setup-go@v4 @@ -72,10 +106,62 @@ jobs: with: flutter-version: ${{ env.FLUTTER_VERSION }} - run: | - sudo apt-get update -y - sudo apt-get install -y ninja-build libgtk-3-dev libayatana-appindicator3-dev + go install golang.org/x/mobile/cmd/gomobile@latest + go get golang.org/x/mobile/bind + gomobile init + - if: runner.os == 'macOS' + run: | + gomobile bind -tags nosqlite -ldflags="-w -s" -o ui/flutter/ios/Frameworks/Libgopeed.xcframework -target=ios github.com/GopeedLab/gopeed/bind/mobile + cd ui/flutter + flutter build ipa --no-codesign + - if: runner.os == 'Linux' + uses: actions/setup-java@v3 + with: + distribution: "zulu" + java-version: "17" + - if: runner.os == 'Linux' + run: | + gomobile bind -tags nosqlite -ldflags="-w -s -checklinkname=0" -o ui/flutter/android/app/libs/libgopeed.aar -target=android -androidapi 21 -javapkg=com.gopeed github.com/GopeedLab/gopeed/bind/mobile + cd ui/flutter + flutter build apk + + build-web: + name: Build web check + runs-on: ubuntu-latest + needs: [ test ] + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-go@v4 + with: + go-version: ${{ env.GO_VERSION }} + - uses: subosito/flutter-action@v2 + with: + flutter-version: ${{ env.FLUTTER_VERSION }} - name: Build run: | - go build -tags nosqlite -ldflags="-w -s" -buildmode=c-shared -o ui/flutter/linux/bundle/lib/libgopeed.so github.com/GopeedLab/gopeed/bind/desktop cd ui/flutter - flutter build linux + flutter build web --web-renderer html + cd ../../ + rm -rf cmd/web/dist + cp -r ui/flutter/build/web cmd/web/dist + go build -tags nosqlite,web -ldflags="-s -w" github.com/GopeedLab/gopeed/cmd/web + build-docker: + name: Build docker check + runs-on: ubuntu-latest + needs: [ test ] + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-go@v4 + with: + go-version: ${{ env.GO_VERSION }} + - uses: subosito/flutter-action@v2 + with: + flutter-version: ${{ env.FLUTTER_VERSION }} + - name: Build + run: | + cd ui/flutter + flutter build web --web-renderer html + cd ../../ + rm -rf cmd/web/dist + cp -r ui/flutter/build/web cmd/web/dist + docker build -t gopeed . \ No newline at end of file