fix(android): use NDK with CGO_ENABLED=1 for proper DNS resolution #8
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: android-arm64-build | |
| on: | |
| push: | |
| branches: | |
| - android-upstream-release | |
| workflow_dispatch: | |
| inputs: | |
| source_ref: | |
| description: Upstream ref to build (branch, tag, or SHA) | |
| required: false | |
| default: main | |
| type: string | |
| permissions: | |
| contents: write | |
| jobs: | |
| build-android-arm64: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: router-for-me/CLIProxyAPI | |
| ref: ${{ github.event.inputs.source_ref || 'main' }} | |
| fetch-depth: 0 | |
| - name: Capture upstream commit metadata | |
| id: upstream_meta | |
| env: | |
| SOURCE_REF: ${{ github.event.inputs.source_ref || 'main' }} | |
| run: | | |
| echo "source_ref=${SOURCE_REF}" >> "$GITHUB_OUTPUT" | |
| echo "sha=$(git rev-parse HEAD)" >> "$GITHUB_OUTPUT" | |
| echo "short_sha=$(git rev-parse --short=12 HEAD)" >> "$GITHUB_OUTPUT" | |
| VERSION=$(git describe --tags --always 2>/dev/null || echo "dev") | |
| VERSION="${VERSION#v}" | |
| echo "version=${VERSION}" >> "$GITHUB_OUTPUT" | |
| echo "build_date=$(date -u +%Y-%m-%dT%H:%M:%SZ)" >> "$GITHUB_OUTPUT" | |
| - name: Set up Go | |
| uses: actions/setup-go@v5 | |
| with: | |
| go-version-file: go.mod | |
| cache: true | |
| - name: Install Android NDK | |
| run: | | |
| ANDROID_NDK_VERSION=r27c | |
| wget -q "https://dl.google.com/android/repository/android-ndk-${ANDROID_NDK_VERSION}-linux.zip" -O /tmp/ndk.zip | |
| unzip -q /tmp/ndk.zip -d /tmp | |
| echo "ANDROID_NDK_HOME=/tmp/android-ndk-${ANDROID_NDK_VERSION}" >> "$GITHUB_ENV" | |
| - name: Build (Android arm64) | |
| env: | |
| CGO_ENABLED: "1" | |
| GOOS: android | |
| GOARCH: arm64 | |
| run: | | |
| export CC="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang" | |
| export CXX="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang++" | |
| go build \ | |
| -ldflags "-s -w -X 'main.Version=${{ steps.upstream_meta.outputs.version }}' -X 'main.Commit=${{ steps.upstream_meta.outputs.short_sha }}' -X 'main.BuildDate=${{ steps.upstream_meta.outputs.build_date }}'" \ | |
| -o CLIProxyAPI ./cmd/server | |
| file CLIProxyAPI | |
| tar -czf CLIProxyAPI-android-arm64.tar.gz CLIProxyAPI | |
| zip -q CLIProxyAPI-android-arm64.zip CLIProxyAPI | |
| - name: Upload workflow artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: CLIProxyAPI-android-arm64 | |
| path: | | |
| CLIProxyAPI-android-arm64.tar.gz | |
| CLIProxyAPI-android-arm64.zip | |
| - name: Create release with Android artifacts | |
| if: github.ref_name == 'android-upstream-release' | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| tag_name: android-arm64-v${{ steps.upstream_meta.outputs.version }} | |
| name: Android arm64 v${{ steps.upstream_meta.outputs.version }} | |
| target_commitish: ${{ github.sha }} | |
| prerelease: false | |
| generate_release_notes: true | |
| body: | | |
| Built from `router-for-me/CLIProxyAPI@${{ steps.upstream_meta.outputs.sha }}` | |
| Source ref: `${{ steps.upstream_meta.outputs.source_ref }}` | |
| Version: `${{ steps.upstream_meta.outputs.version }}` | |
| files: | | |
| CLIProxyAPI-android-arm64.tar.gz | |
| CLIProxyAPI-android-arm64.zip |