@@ -299,6 +299,133 @@ jobs:
299299
300300 echo "Upload completed successfully"
301301
302+ build_termux :
303+ runs-on : ubuntu-latest
304+ needs : build_app
305+ env :
306+ CGO_ENABLED : 1
307+ GOOS : android
308+ GOARCH : arm64
309+ steps :
310+ - name : Checkout
311+ uses : actions/checkout@v6
312+
313+ - name : Set up Go
314+ uses : actions/setup-go@v6
315+ with :
316+ go-version : ^1.25.5
317+ cache : false
318+
319+ - name : Setup environment
320+ id : info_termux
321+ run : |
322+ export _NAME=$(jq ".termux[\"$GOARCH\"].name" -r < .github/build/build_info.json)
323+ export _ARTIFACT=nginx-ui-$_NAME
324+ export _BINARY=nginx-ui
325+ echo "GOOS: $GOOS, GOARCH: $GOARCH, RELEASE_NAME: $_NAME, ARTIFACT_NAME: $_ARTIFACT, BINARY_NAME: $_BINARY"
326+ echo "CACHE_NAME=$_NAME" >> $GITHUB_ENV
327+ echo "DIST=nginx-ui-$_NAME" >> $GITHUB_ENV
328+ echo "ARTIFACT=$_ARTIFACT" >> $GITHUB_ENV
329+ echo "BINARY_NAME=$_BINARY" >> $GITHUB_ENV
330+
331+ - name : Setup Go modules cache
332+ uses : actions/cache@v4
333+ with :
334+ path : |
335+ ~/go/pkg/mod
336+ key : go-${{ runner.os }}-${{ runner.arch }}-mod-${{ hashFiles('**/go.sum') }}
337+ restore-keys : |
338+ go-${{ runner.os }}-${{ runner.arch }}-mod-
339+
340+ - name : Setup Go build cache
341+ uses : actions/cache@v4
342+ with :
343+ path : |
344+ ~/.cache/go-build
345+ key : go-${{ runner.os }}-${{ runner.arch }}-${{ env.CACHE_NAME }}-${{ hashFiles('**/go.sum') }}
346+ restore-keys : |
347+ go-${{ runner.os }}-${{ runner.arch }}-${{ env.CACHE_NAME }}-
348+
349+ - name : Download app artifacts
350+ uses : actions/download-artifact@v6
351+ with :
352+ name : app-dist
353+ path : frontend-dist
354+
355+ - name : Prepare frontend assets
356+ run : |
357+ rm -rf app/dist
358+ mkdir -p app
359+ if [[ -d frontend-dist/app/dist ]]; then
360+ mv frontend-dist/app/dist app/dist
361+ elif [[ -d frontend-dist/dist ]]; then
362+ mv frontend-dist/dist app/dist
363+ else
364+ mv frontend-dist app/dist
365+ fi
366+
367+ - name : Generate files
368+ env :
369+ GOOS : linux
370+ GOARCH : amd64
371+ run : go generate cmd/version/generate.go
372+
373+ - name : Set up Android NDK
374+ id : ndk
375+ uses : nttld/setup-ndk@v1
376+ with :
377+ ndk-version : r27c
378+
379+ - name : Configure Android toolchain
380+ run : |
381+ API_LEVEL=24
382+ TOOLCHAIN="${{ steps.ndk.outputs.ndk-path }}/toolchains/llvm/prebuilt/linux-x86_64/bin"
383+ echo "PATH=$TOOLCHAIN:$PATH" >> $GITHUB_ENV
384+ echo "ANDROID_API_LEVEL=$API_LEVEL" >> $GITHUB_ENV
385+ echo "CC=aarch64-linux-android${API_LEVEL}-clang" >> $GITHUB_ENV
386+ echo "CXX=aarch64-linux-android${API_LEVEL}-clang++" >> $GITHUB_ENV
387+ echo "LD_FLAGS=-w" >> $GITHUB_ENV
388+
389+ - name : Build
390+ run : |
391+ mkdir -p dist
392+ go build -trimpath -tags=jsoniter -ldflags "$LD_FLAGS -X 'github.com/0xJacky/Nginx-UI/settings.buildTime=$(date +%s)'" -o dist/$BINARY_NAME -v main.go
393+
394+ - name : Archive backend artifacts
395+ uses : actions/upload-artifact@v5
396+ with :
397+ name : ${{ env.ARTIFACT }}
398+ path : dist/${{ env.BINARY_NAME }}
399+
400+ - name : Prepare publish
401+ run : |
402+ cp README*.md ./dist
403+ find dist -printf '%P\n' | tar -C dist --no-recursion -zcvf ${{ env.DIST }}.tar.gz -T -
404+ openssl dgst -sha512 ${{ env.DIST }}.tar.gz | sed 's/([^)]*)//g' | awk '{print $NF}' >> ${{ env.DIST }}.tar.gz.digest
405+
406+ - name : Publish
407+ uses : softprops/action-gh-release@v2
408+ if : github.event_name == 'release'
409+ with :
410+ files : |
411+ ${{ env.DIST }}.tar.gz
412+ ${{ env.DIST }}.tar.gz.digest
413+
414+ - name : Upload to R2 using S3 API
415+ if : github.event_name != 'pull_request' && github.ref == 'refs/heads/dev'
416+ env :
417+ AWS_ACCESS_KEY_ID : ${{ secrets.R2_ACCESS_KEY_ID }}
418+ AWS_SECRET_ACCESS_KEY : ${{ secrets.R2_SECRET_ACCESS_KEY }}
419+ AWS_REGION : us-east-1
420+ run : |
421+ echo "Uploading ${{ env.DIST }}.tar.gz to R2..."
422+ aws s3 cp ./${{ env.DIST }}.tar.gz s3://nginx-ui-dev-build/${{ env.DIST }}.tar.gz --endpoint-url=${{ secrets.R2_S3_API_ENDPOINT }}
423+
424+ echo "Uploading ${{ env.DIST }}.tar.gz.digest to R2..."
425+ aws s3 cp ./${{ env.DIST }}.tar.gz.digest s3://nginx-ui-dev-build/${{ env.DIST }}.tar.gz.digest --endpoint-url=${{ secrets.R2_S3_API_ENDPOINT }}
426+
427+ echo "Upload completed successfully"
428+
302429 build_macos_native :
303430 runs-on : macos-latest
304431 needs : build_app
0 commit comments