1+ name : Release Build CI - Android Only
2+ on :
3+ workflow_dispatch :
4+
5+ jobs :
6+ Android :
7+ runs-on : ubuntu-latest
8+ env :
9+ ANDROID_NDK_HOME : ${{github.workspace}}/android-ndk/android-ndk-r27b
10+ ANDROID_TOOLCHAIN : ${{github.workspace}}/android-ndk/android-ndk-r27b/toolchains/llvm/prebuilt/linux-x86_64/bin
11+ NDK_URL : " https://dl.google.com/android/repository/android-ndk-r27b-linux.zip"
12+ CC : clang
13+
14+ steps :
15+ - name : Get branch name
16+ id : branch-name
17+ uses : tj-actions/branch-names@v6
18+
19+ - name : Set clang as the default compiler
20+ run : |
21+ sudo update-alternatives --install /usr/bin/cc cc $(which clang) 100
22+ sudo update-alternatives --install /usr/bin/c++ c++ $(which clang++) 100
23+ sudo update-alternatives --set cc $(which clang)
24+ sudo update-alternatives --set c++ $(which clang++)
25+
26+ - name : Install GitHub CLI
27+ run : |
28+ sudo apt install -y gh
29+
30+ - name : Authenticate GitHub CLI
31+ run : |
32+ echo "${{ secrets.GITHUB_TOKEN }}" | gh auth login --with-token
33+
34+ - name : Define Release Tag
35+ id : release-tag
36+ run : echo "RELEASE_TAG=Android-develop-Release" >> $GITHUB_ENV
37+
38+ - name : Download Prebuilt Boost from Thirdparty
39+ shell : bash
40+ run : |
41+ gh release download \
42+ --repo GeniusVentures/thirdparty \
43+ Android-develop-Release \
44+ --pattern Boost-lib.tar.gz
45+
46+ - name : Ensure Directory Exists
47+ run : |
48+ mkdir -p ${{github.workspace}}/thirdparty/build/Android/Release/arm64-v8a
49+
50+ - name : Extract Prebuilt Boost
51+ run : |
52+ tar -xzvf Boost-lib.tar.gz -C ${{github.workspace}}/thirdparty/build/Android/Release/arm64-v8a
53+
54+ # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
55+ - uses : actions/checkout@v3
56+ with :
57+ path : ' zkLLVM'
58+ submodules : " recursive"
59+
60+ - name : Download Android NDK
61+ run : |
62+ mkdir "${{github.workspace}}/android-ndk"
63+ cd "${{github.workspace}}/android-ndk"
64+ curl -o ndk.zip ${{ env.NDK_URL }}
65+ unzip ndk.zip
66+ rm ndk.zip
67+
68+ - name : Create Build Directory
69+ run : cmake -E make_directory ${{github.workspace}}/zkLLVM/build/Android/Release/arm64-v8a
70+
71+ - name : Configure CMake
72+ working-directory : ${{github.workspace}}/zkLLVM/build/Android/Release/arm64-v8a
73+ run : |
74+ export ANDROID_NDK=${{env.ANDROID_NDK_HOME}}
75+ export ANDROID_NDK_HOME=${{env.ANDROID_NDK_HOME}}
76+ export ANDROID_TOOLCHAIN=${{env.ANDROID_TOOLCHAIN}}
77+ export PATH=${{env.ANDROID_TOOLCHAIN}}:$PATH
78+ echo $PATH
79+ echo $CC
80+ ls -la $ANDROID_TOOLCHAIN
81+ echo "Check clang path:"
82+ which clang
83+ env
84+ cmake -S ../../ -DANDROID_ABI="arm64-v8a" -DCMAKE_BUILD_TYPE=Release -DCMAKE_ANDROID_NDK=$ANDROID_NDK -DANDROID_TOOLCHAIN=clang -DTHIRDPARTY_DIR=${{github.workspace}}/thirdparty/
85+
86+ - name : Compile
87+ working-directory : ${{github.workspace}}/zkLLVM/build/Android/Release/arm64-v8a
88+ run : make -j8
89+
90+ - name : Install
91+ working-directory : ${{github.workspace}}/zkLLVM/build/Android/Release/arm64-v8a
92+ run : cmake --install .
93+
94+ - name : Compressing Build Artifacts
95+ working-directory : ${{github.workspace}}/zkLLVM
96+ if : ${{ github.event_name == 'workflow_dispatch' }}
97+ run : |
98+ shopt -s extglob
99+ rm -rf !(build) .[!.]* ..?*
100+ cd build
101+ rm -rf !(Android) .[!.]* ..?*
102+ cd Android
103+ rm -rf !(Release) .[!.]* ..?*
104+ cd Release
105+ rm -rf !(arm64-v8a) .[!.]* ..?*
106+ cd arm64-v8a
107+ rm -rf !(zkLLVM) .[!.]* ..?*
108+ cd ${{github.workspace}}
109+ tar --exclude='zkLLVM/build/Android/Release/zkLLVM/src' \
110+ --exclude='zkLLVM/build/Android/Release/zkLLVM/tmp' \
111+ -czvf zkLLVM.tar.gz zkLLVM/
112+
113+ - name : Set Release Variables
114+ id : vars
115+ if : ${{ github.event_name == 'workflow_dispatch' }}
116+ run : |
117+ OS_NAME=Android-arm64-v8a
118+ BRANCH_NAME=${GITHUB_REF#refs/heads/}
119+ BUILD_TYPE=Release
120+ FILE_NAME="${OS_NAME}-${BRANCH_NAME}-${BUILD_TYPE}.tar.gz"
121+ echo "RELEASE_TAG=${OS_NAME}-${BRANCH_NAME}-${BUILD_TYPE}-${GITHUB_SHA::7}" >> $GITHUB_ENV
122+ echo "RELEASE_NAME=${OS_NAME} ${BRANCH_NAME} ${BUILD_TYPE} (${GITHUB_SHA::7})" >> $GITHUB_ENV
123+ echo "FILE_NAME=$FILE_NAME" >> $GITHUB_ENV
124+
125+ - name : Rename Artifact
126+ if : ${{ github.event_name == 'workflow_dispatch' }}
127+ run : mv zkLLVM.tar.gz ${{ env.FILE_NAME }}
128+
129+ - name : Create GitHub Release
130+ if : ${{ github.event_name == 'workflow_dispatch' }}
131+ id : create_release
132+ uses : actions/create-release@v1
133+ env :
134+ GITHUB_TOKEN : ${{ secrets.GNUS_TOKEN_1 }}
135+ with :
136+ tag_name : ${{ env.RELEASE_TAG }}
137+ release_name : ${{ env.RELEASE_NAME }}
138+ draft : false
139+ prerelease : false
140+
141+ - name : Upload Release Asset
142+ if : ${{ github.event_name == 'workflow_dispatch' }}
143+ uses : actions/upload-release-asset@v1
144+ env :
145+ GITHUB_TOKEN : ${{ secrets.GNUS_TOKEN_1 }}
146+ with :
147+ upload_url : ${{ steps.create_release.outputs.upload_url }}
148+ asset_path : ${{ env.FILE_NAME }}
149+ asset_name : ${{ env.FILE_NAME }}
150+ asset_content_type : application/gzip
0 commit comments