name: test on: pull_request: branches: - main paths: - "bind/**" - "cmd/**" - "internal/**" - "pkg/**" - "ui/**" - ".github/workflows/test.yml" - "go.mod" - "go.sum" push: branches: - main paths: - "bind/**" - "cmd/**" - "internal/**" - "pkg/**" - "ui/**" - ".github/workflows/test.yml" - "go.mod" - "go.sum" env: GO_VERSION: "1.23" FLUTTER_VERSION: "3.24.5" jobs: # lint: # name: Lint # runs-on: ubuntu-latest # steps: # - uses: actions/setup-go@v2 # with: # go-version: '^1.19' # - uses: actions/checkout@v2 # - name: Lint Go Code # run: | # export PATH=$PATH:$(go env GOPATH)/bin # temporary fix. See https://github.com/actions/setup-go/issues/14 # go get -u golang.org/x/lint/golint # golint -set_exit_status ./... test: name: Test check runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-go@v4 with: go-version: ${{ env.GO_VERSION }} - name: Run Unit tests. run: go test $(go list ./... | grep -v /cmd/ | grep -v /bind/ ) -v -covermode=count -coverprofile=coverage.txt - uses: codecov/codecov-action@v4 with: files: ./coverage.txt token: ${{ secrets.CODECOV_UPLOAD_TOKEN }} build-desktop: name: Build desktop check runs-on: ${{ matrix.os }} strategy: matrix: os: [ windows-latest, macos-latest, ubuntu-22.04 ] 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' 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' 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 == 'Linux' 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 with: go-version: ${{ env.GO_VERSION }} - uses: subosito/flutter-action@v2 with: flutter-version: ${{ env.FLUTTER_VERSION }} - run: | 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: | cd ui/flutter flutter build web --no-web-resources-cdn 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 --no-web-resources-cdn cd ../../ rm -rf cmd/web/dist cp -r ui/flutter/build/web cmd/web/dist docker build -t gopeed .