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