name: build on: push: tags: - 'v*' jobs: build: runs-on: ${{ matrix.os }} strategy: matrix: include: - platform: android os: ubuntu-latest - platform: windows os: windows-latest arch: amd64 - platform: linux os: ubuntu-latest arch: amd64 - platform: macos os: macos-13 arch: amd64 - platform: macos os: macos-latest arch: arm64 steps: - name: Setup Mingw64 if: startsWith(matrix.platform,'windows') uses: msys2/setup-msys2@v2 with: msystem: mingw64 install: mingw-w64-x86_64-gcc update: true - name: Set Mingw64 Env if: startsWith(matrix.platform,'windows') run: | echo "${{ runner.temp }}\msys64\mingw64\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - name: Check Matrix run: | echo "Running on ${{ matrix.os }}" echo "Arch: ${{ runner.arch }}" gcc --version - name: Checkout uses: actions/checkout@v4 with: submodules: recursive - name: Setup JAVA if: startsWith(matrix.platform,'android') uses: actions/setup-java@v4 with: distribution: 'zulu' java-version: 17 - name: Setup NDK if: startsWith(matrix.platform,'android') uses: nttld/setup-ndk@v1 id: setup-ndk with: ndk-version: r26b add-to-path: true link-to-sdk: true - name: Setup Android Signing if: startsWith(matrix.platform,'android') run: | echo "${{ secrets.KEYSTORE }}" | base64 --decode > android/app/keystore.jks echo "keyAlias=${{ secrets.KEY_ALIAS }}" >> android/local.properties echo "storePassword=${{ secrets.STORE_PASSWORD }}" >> android/local.properties echo "keyPassword=${{ secrets.KEY_PASSWORD }}" >> android/local.properties - name: Setup Go uses: actions/setup-go@v5 with: go-version-file: 'core/go.mod' cache-dependency-path: | core/go.sum - name: Setup Flutter uses: subosito/flutter-action@v2 with: flutter-version: '3.x' channel: 'stable' cache: true - name: Get Flutter Dependency run: flutter pub get - name: Setup run: dart setup.dart ${{ matrix.platform }} ${{ matrix.arch && format('--arch {0}', matrix.arch) }} - name: Upload uses: actions/upload-artifact@v4 with: name: artifact-${{ matrix.platform }}${{ matrix.arch && format('-{0}', matrix.arch) }} path: ./dist retention-days: 1 overwrite: true upload-release: if: ${{ !contains(github.ref, '+') }} permissions: write-all needs: [ build ] runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 - name: Download uses: actions/download-artifact@v4 with: path: ./dist/ pattern: artifact-* merge-multiple: true - name: Pre Release run: | pip install gitchangelog pystache mustache markdown pre=$(curl --silent "https://api.github.com/repos/chen08209/FlClash/releases/latest" | grep -Po '"tag_name": "\K.*?(?=")' || echo "") if [ -z "pre" ]; then echo "init" > release.md else current="${{ github.ref_name }}" echo -e "\n\n
All changes from $current to the latest commit:\n\n" >> release.md gitchangelog "${pre}.." >> release.md 2>&1 || echo "Error in gitchangelog" echo -e "\n\n
" >> release.md fi - name: Release uses: softprops/action-gh-release@v2 with: files: ./dist/* body_path: './release.md'