github.com/0chain/gosdk@v1.17.11/.github/workflows/build-sdks.yml (about) 1 name: Build SDKs 2 3 concurrency: 4 group: "build-mobile-${{ github.ref }}" 5 cancel-in-progress: true 6 7 on: 8 push: 9 branches: [ master, staging, qa ] 10 tags: 11 - 'v*.*.*' 12 pull_request: 13 workflow_dispatch: 14 15 env: 16 GITHUB_TOKEN: ${{ secrets.GOSDK }} 17 18 jobs: 19 build-ios: 20 name: Build-ios 21 runs-on: macos-runner 22 23 steps: 24 - name: Checkout code 25 uses: actions/checkout@v2 26 27 - name: Set up Go 1.22 28 uses: actions/setup-go@v3 29 with: 30 go-version: 1.22 31 32 - name: Clean build 33 run: make clean-mobilesdk 34 35 - name: Install GoMobile 36 run: | 37 go install golang.org/x/mobile/cmd/gomobile@latest 38 go install golang.org/x/mobile/cmd/gobind@latest 39 gomobile init 40 env: 41 GO111MODULE: "on" 42 43 - name: Setup GoMobile 44 run: make setup-gomobile 45 46 - name: Build iOS 47 run: | 48 go version 49 make build-ios 50 51 - name: Compress 52 run: | 53 tar -czvf zcncore-ios.tar.gz out/iossdk/ios/zcncore.xcframework 54 55 - name: Setup Build 56 id: setup_build 57 run: | 58 tag=$(echo ${GITHUB_REF#refs/tags/}) 59 echo ${tag} 60 if [[ "${{github.event_name}}" = "workflow_dispatch" ]]; then 61 echo "> 0Chain: trigger from workflow_dispatch" 62 63 echo "::set-output name=RELEASE::false" 64 echo "::set-output name=TAG::none" 65 66 elif [[ ${tag} = v*\.*\.* ]] ; then 67 echo "> 0Chain: trigger from git event" 68 69 # upload output on release 70 echo "::set-output name=RELEASE::true" 71 echo "::set-output name=TAG::${tag}" 72 fi 73 74 - name: Upload zcncore-ios to release 75 if: steps.setup_build.outputs.RELEASE == 'true' 76 uses: svenstaro/upload-release-action@v2 77 with: 78 repo_token: ${{ secrets.GITHUB_TOKEN }} 79 file: zcncore-ios.tar.gz 80 tag: ${{ steps.setup_build.outputs.TAG }} 81 overwrite: true 82 file_glob: true 83 84 - name: Upload Artifact 85 uses: actions/upload-artifact@v3 86 with: 87 name: zcncore-ios 88 path: | 89 zcncore-ios.tar.gz 90 91 build-android: 92 name: Build-android 93 runs-on: [self-hosted, arc-runner] 94 95 steps: 96 - name: Checkout code 97 uses: actions/checkout@v2 98 99 - name: Set up Go 1.22 100 uses: actions/setup-go@v3 101 with: 102 go-version: 1.22 103 104 - name: Install deps 105 run: | 106 #codename=$(lsb_release -c | awk '{print $2}') 107 #echo "deb http://mirror.genesisadaptive.com/ubuntu/ $codename main" > ./gitaction.list 108 #echo "deb http://mirror.math.princeton.edu/pub/ubuntu/ $codename main" ./gitaction.list 109 #echo "deb http://mirror.pit.teraswitch.com/ubuntu/ $codename main" >> ./gitaction.list 110 #sudo mv -f ./gitaction.list /etc/apt/sources.list.d/ 111 sudo apt-get update -y && sudo apt-get install build-essential wget unzip -y 112 113 - name: Install Java 114 uses: actions/setup-java@v3 115 with: 116 distribution: 'temurin' 117 java-version: '8' 118 119 - uses: android-actions/setup-android@v2 120 121 - name: Install Android Platform 122 run: | 123 sdkmanager "platform-tools" 124 sdkmanager "platforms;android-29" 125 sdkmanager "build-tools;29.0.2" 126 127 - uses: nttld/setup-ndk@v1 128 id: setup-ndk 129 with: 130 ndk-version: r21d 131 132 - name: Clean build 133 run: make clean-mobilesdk 134 135 - name: Install GoMobile 136 run: | 137 go install golang.org/x/mobile/cmd/gomobile@latest 138 go install golang.org/x/mobile/cmd/gobind@latest 139 gomobile init 140 env: 141 GO111MODULE: "on" 142 143 - name: Setup GoMobile 144 run: make setup-gomobile 145 146 - name: Build Android 147 run: | 148 go version 149 make build-android 150 env: 151 ANDROID_NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }} 152 ANDROID_NDK_TOOLCHAIN: ${{ steps.setup-ndk.outputs.ndk-path }}/toolchains/llvm/prebuilt/linux-x86_64/bin 153 154 - name: Compress 155 run: tar -czvf zcncore-android.tar.gz out/androidsdk/zcncore.aar 156 157 - name: Setup Build 158 id: setup_build 159 run: | 160 tag=$(echo ${GITHUB_REF#refs/tags/}) 161 echo ${tag} 162 163 if [[ "${{github.event_name}}" = "workflow_dispatch" ]]; then 164 echo "> 0Chain: trigger from workflow_dispatch" 165 166 echo "::set-output name=RELEASE::false" 167 echo "::set-output name=TAG::none" 168 169 170 elif [[ ${tag} = v*\.*\.* ]] ; then 171 echo "> 0Chain: trigger from git event" 172 173 # upload output on release 174 echo "::set-output name=RELEASE::true" 175 echo "::set-output name=TAG::${tag}" 176 fi 177 178 - name: Upload binaries to release 179 if: steps.setup_build.outputs.RELEASE == 'true' 180 uses: svenstaro/upload-release-action@v2 181 with: 182 repo_token: ${{ secrets.GITHUB_TOKEN }} 183 file: zcncore-android.tar.gz 184 tag: ${{ steps.setup_build.outputs.TAG }} 185 overwrite: true 186 file_glob: true 187 188 - name: Upload Artifact 189 uses: actions/upload-artifact@v3 190 with: 191 name: zcncore-android 192 path: zcncore-android.tar.gz 193 194 build-macos: 195 name: Build-macos 196 runs-on: macos-runner 197 198 steps: 199 - name: Checkout code 200 uses: actions/checkout@v2 201 202 - name: Set up Go 1.22 203 uses: actions/setup-go@v3 204 with: 205 go-version: 1.22 206 207 - name: Clean build 208 run: make clean-mobilesdk 209 210 - name: Install GoMobile 211 run: | 212 go install golang.org/x/mobile/cmd/gomobile@latest 213 go install golang.org/x/mobile/cmd/gobind@latest 214 gomobile init 215 env: 216 GO111MODULE: "on" 217 218 - name: Setup GoMobile 219 run: make setup-gomobile 220 221 - name: Build MacOS 222 run: | 223 go version 224 make build-macos 225 226 - name: Compress 227 run: | 228 tar -czvf zcncore-macos.tar.gz out/macossdk/zcncore.xcframework 229 230 - name: Setup Build 231 id: setup_build 232 run: | 233 tag=$(echo ${GITHUB_REF#refs/tags/}) 234 echo ${tag} 235 if [[ "${{github.event_name}}" = "workflow_dispatch" ]]; then 236 echo "> 0Chain: trigger from workflow_dispatch" 237 238 echo "::set-output name=RELEASE::false" 239 echo "::set-output name=TAG::none" 240 241 elif [[ ${tag} = v*\.*\.* ]] ; then 242 echo "> 0Chain: trigger from git event" 243 244 # upload output on release 245 echo "::set-output name=RELEASE::true" 246 echo "::set-output name=TAG::${tag}" 247 fi 248 249 - name: Upload zcncore-macos to release 250 if: steps.setup_build.outputs.RELEASE == 'true' 251 uses: svenstaro/upload-release-action@v2 252 with: 253 repo_token: ${{ secrets.GITHUB_TOKEN }} 254 file: zcncore-macos.tar.gz 255 tag: ${{ steps.setup_build.outputs.TAG }} 256 overwrite: true 257 file_glob: true 258 259 - name: Upload Artifact 260 uses: actions/upload-artifact@v3 261 with: 262 name: zcncore-macos 263 path: | 264 zcncore-macos.tar.gz 265 266 build-windows: 267 name: Build-windows 268 runs-on: [self-hosted, arc-runner] 269 270 steps: 271 - name: Checkout code 272 uses: actions/checkout@v2 273 274 - name: Set up Go 1.22 275 uses: actions/setup-go@v3 276 with: 277 go-version: 1.22 278 279 - name: Install deps 280 run: | 281 #codename=$(lsb_release -c | awk '{print $2}') 282 #echo "deb http://mirror.genesisadaptive.com/ubuntu/ $codename main" > ./gitaction.list 283 #echo "deb http://mirror.math.princeton.edu/pub/ubuntu/ $codename main" ./gitaction.list 284 #echo "deb http://mirror.pit.teraswitch.com/ubuntu/ $codename main" >> ./gitaction.list 285 #sudo mv -f ./gitaction.list /etc/apt/sources.list.d/ 286 sudo apt-get update -y && sudo apt-get install build-essential wget -y 287 288 - name: Build windows 289 run: | 290 go version 291 make build-windows 292 293 - name: Compress 294 run: | 295 sudo apt install zip -y 296 zip zcn-windows.zip ./winsdk/zcn.windows.dll ./winsdk/zcn.windows.h 297 298 - name: Setup Build 299 id: setup_build 300 run: | 301 tag=$(echo ${GITHUB_REF#refs/tags/}) 302 echo ${tag} 303 if [[ "${{github.event_name}}" = "workflow_dispatch" ]]; then 304 echo "> 0Chain: trigger from workflow_dispatch" 305 306 echo "::set-output name=RELEASE::false" 307 echo "::set-output name=TAG::none" 308 309 elif [[ ${tag} = v*\.*\.* ]] ; then 310 echo "> 0Chain: trigger from git event" 311 312 # upload output on release 313 echo "::set-output name=RELEASE::true" 314 echo "::set-output name=TAG::${tag}" 315 fi 316 317 - name: Upload zcn-windows to release 318 if: steps.setup_build.outputs.RELEASE == 'true' 319 uses: svenstaro/upload-release-action@v2 320 with: 321 repo_token: ${{ secrets.GITHUB_TOKEN }} 322 file: zcn-windows.zip 323 tag: ${{ steps.setup_build.outputs.TAG }} 324 overwrite: true 325 file_glob: true 326 327 - name: Upload Artifact 328 uses: actions/upload-artifact@v3 329 with: 330 name: zcn-windows 331 path: | 332 zcn-windows.zip 333 334 build-wasm: 335 name: Build-wasm 336 runs-on: [self-hosted, arc-runner] 337 steps: 338 - name: Set up Go 1.x 339 uses: actions/setup-go@v3 340 with: 341 go-version: 1.21.5 342 343 - name: Checkout 344 uses: actions/checkout@v2 345 346 - name: Install dependencies 347 run: | 348 sudo apt-get update 349 sudo apt-get -y install build-essential nghttp2 libnghttp2-dev libssl-dev wget 350 351 - name: Build 352 run: docker run --rm -v $PWD:/gosdk -w /gosdk golang:1.21.5 make wasm-build 353 354 - name: 'Upload Artifact' 355 uses: actions/upload-artifact@v3 356 with: 357 name: zcn.wasm 358 path: zcn.wasm