Fix windows some issues #240
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: build | |
| on: | |
| push: | |
| tags: | |
| - 'v*' | |
| env: | |
| IS_STABLE: ${{ !contains(github.ref, '-') }} | |
| jobs: | |
| build: | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| include: | |
| - platform: android | |
| os: ubuntu-latest | |
| - platform: windows | |
| os: Windows-2022 | |
| arch: amd64 | |
| - platform: linux | |
| os: ubuntu-22.04 | |
| arch: amd64 | |
| - platform: macos | |
| os: macos-13 | |
| arch: amd64 | |
| - platform: macos | |
| os: macos-latest | |
| arch: arm64 | |
| # - platform: windows | |
| # os: windows-11-arm | |
| # arch: arm64 | |
| - platform: linux | |
| os: ubuntu-24.04-arm | |
| arch: arm64 | |
| steps: | |
| - name: Setup rust | |
| if: startsWith(matrix.os, 'windows-11-arm') | |
| run: | | |
| Invoke-WebRequest -Uri "https://win.rustup.rs/aarch64" -OutFile rustup-init.exe | |
| .\rustup-init.exe -y --default-toolchain stable | |
| $cargoPath = "$env:USERPROFILE\.cargo\bin" | |
| Add-Content $env:GITHUB_PATH $cargoPath | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - name: Setup Android Signing | |
| if: startsWith(matrix.platform,'android') | |
| run: | | |
| echo "${{ secrets.KEYSTORE }}" | base64 --decode > android/app/keystore.jks | |
| echo "${{ secrets.SERVICE_JSON }}" | base64 --decode > android/app/google-services.json | |
| 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: '1.24.0' | |
| cache-dependency-path: | | |
| core/go.sum | |
| - name: Setup Flutter | |
| if: ${{ !(startsWith(matrix.os, 'windows-11-arm') || startsWith(matrix.os, 'ubuntu-24.04-arm')) }} | |
| uses: subosito/flutter-action@v2 | |
| with: | |
| channel: stable | |
| flutter-version: 3.35.7 | |
| cache: true | |
| - name: Setup Flutter With Other | |
| if: startsWith(matrix.os, 'windows-11-arm') || startsWith(matrix.os, 'ubuntu-24.04-arm') | |
| uses: subosito/flutter-action@v2 | |
| with: | |
| channel: master | |
| flutter-version: 3.35.7 | |
| cache: true | |
| - name: Get Flutter Dependency | |
| run: | | |
| flutter --version | |
| flutter pub get | |
| - name: Setup | |
| run: dart setup.dart ${{ matrix.platform }} ${{ matrix.arch && format('--arch {0}', matrix.arch) }} ${{ env.IS_STABLE == 'true' && '--env stable' || '' }} | |
| - name: Upload | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: artifact-${{ matrix.platform }}${{ matrix.arch && format('-{0}', matrix.arch) }} | |
| path: ./dist | |
| overwrite: true | |
| changelog: | |
| runs-on: ubuntu-latest | |
| needs: [ build ] | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| if: ${{ env.IS_STABLE == 'true' }} | |
| with: | |
| fetch-depth: 0 | |
| ref: refs/heads/main | |
| - name: Generate | |
| if: ${{ env.IS_STABLE == 'true' }} | |
| run: | | |
| last_ver=$(grep -m1 '^## ' CHANGELOG.md 2>/dev/null | sed 's/^## //') | |
| tags=($(git tag --merged HEAD --sort=-creatordate)) | |
| temp="NEW_CHANGELOG.md" > "$temp" | |
| for i in "${!tags[@]}"; do | |
| curr="${tags[i]}" | |
| [[ "$curr" == "$last_ver" ]] && break | |
| prev="${tags[i+1]}" | |
| range="${prev:+$prev..}$curr" | |
| echo -e "## $curr\n" >> "$temp" | |
| git log --no-merges --pretty=format:"%B" "$range" | \ | |
| awk '!/Update changelog/ && NF {print "- " $0 "\n"}' >> "$temp" | |
| done | |
| [ -f CHANGELOG.md ] && cat CHANGELOG.md >> "$temp" | |
| mv "$temp" CHANGELOG.md | |
| - name: Commit | |
| if: ${{ env.IS_STABLE == 'true' }} | |
| run: | | |
| git add CHANGELOG.md | |
| if ! git diff --cached --quiet; then | |
| echo "Commit pushing" | |
| git config --local user.email "[email protected]" | |
| git config --local user.name "chen08209" | |
| git commit -m "Update changelog" | |
| git push | |
| if [ $? -eq 0 ]; then | |
| echo "Push succeeded" | |
| else | |
| echo "Push failed" | |
| exit 1 | |
| fi | |
| fi | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| upload: | |
| permissions: write-all | |
| needs: [ build ] | |
| runs-on: ubuntu-latest | |
| services: | |
| telegram-bot-api: | |
| image: aiogram/telegram-bot-api:latest | |
| env: | |
| TELEGRAM_API_ID: ${{ secrets.TELEGRAM_API_ID }} | |
| TELEGRAM_API_HASH: ${{ secrets.TELEGRAM_API_HASH }} | |
| ports: | |
| - 8081:8081 | |
| 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: Generate release.md | |
| run: | | |
| tags=($(git tag --merged HEAD --sort=-creatordate)) | |
| preTag=$(curl -s "https://api.github.com/repos/chen08209/FlClash/releases/latest" | \ | |
| sed -nE 's/.*"tag_name": "([^"]+)".*/\1/p') | |
| [ -z "$preTag" ] && preTag="" | |
| out="release.md" > "$out" | |
| for i in "${!tags[@]}"; do | |
| curr="${tags[i]}" | |
| [[ "$curr" == "$preTag" ]] && break | |
| prev="${tags[i+1]}" | |
| range="${prev:+$prev..}$curr" | |
| git log --no-merges --pretty=format:"%B" "$range" | \ | |
| awk '!/Update changelog/ && NF {print "- " $0 "\n"}' >> "$out" | |
| done | |
| - name: Push to telegram | |
| env: | |
| TELEGRAM_BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }} | |
| TAG: ${{ github.ref_name }} | |
| RUN_ID: ${{ github.run_id }} | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install requests | |
| python release_telegram.py | |
| - name: Patch release.md | |
| run: | | |
| version=$(echo "${{ github.ref_name }}" | sed 's/^v//') | |
| sed "s|VERSION|$version|g" ./.github/release_template.md >> release.md | |
| - name: Generate sha256 | |
| if: env.IS_STABLE == 'true' | |
| run: | | |
| cd ./dist | |
| for file in $(find . -type f -not -name "*.sha256"); do | |
| sha256sum "$file" > "${file}.sha256" | |
| done | |
| - name: Release | |
| if: ${{ env.IS_STABLE == 'true' }} | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| files: ./dist/* | |
| body_path: './release.md' | |
| - name: Create Fdroid Source Dir | |
| if: ${{ env.IS_STABLE == 'true' }} | |
| run: | | |
| mkdir -p ./tmp | |
| cp ./dist/*android-arm64-v8a* ./tmp/ || true | |
| echo "Files copied successfully" | |
| - name: Push to fdroid repo | |
| if: ${{ env.IS_STABLE == 'true' }} | |
| uses: cpina/[email protected] | |
| env: | |
| SSH_DEPLOY_KEY: ${{ secrets.SSH_DEPLOY_KEY }} | |
| with: | |
| source-directory: ./tmp/ | |
| destination-github-username: chen08209 | |
| destination-repository-name: FlClash-fdroid-repo | |
| user-name: 'github-actions[bot]' | |
| user-email: 'github-actions[bot]@users.noreply.github.com' | |
| target-branch: main | |
| commit-message: Update from ${{ github.ref_name }} | |
| target-directory: /tmp/ | |