From 7734300a45defc753b187d74b451c4605db59cd7 Mon Sep 17 00:00:00 2001 From: Manohar Reddy Date: Sun, 22 Oct 2023 13:24:06 +0200 Subject: [PATCH] use msys2 to build windows binaries (#317) * use msys2 to build windows binaries * add build-windows in release-wallet.yml * add actions checkout --- .github/workflows/build-zwallet.yaml | 125 ++++++------------ ...-zwalletcli.yml => release-zwalletcli.yml} | 81 ++++++++---- 2 files changed, 99 insertions(+), 107 deletions(-) rename .github/workflows/{build-zwalletcli.yml => release-zwalletcli.yml} (73%) diff --git a/.github/workflows/build-zwallet.yaml b/.github/workflows/build-zwallet.yaml index d71429fa..93e5c85c 100644 --- a/.github/workflows/build-zwallet.yaml +++ b/.github/workflows/build-zwallet.yaml @@ -4,8 +4,10 @@ on: branches: - master - staging + - sprint* tags: - 'v*.*.*' + pull_request: jobs: build-linux: @@ -16,7 +18,7 @@ jobs: run: | sudo apt update sudo apt -y install build-essential nghttp2 libnghttp2-dev libssl-dev - + - name: Setup go 1.18 uses: actions/setup-go@v2 with: @@ -24,36 +26,10 @@ jobs: - name: Checkout uses: actions/checkout@v2 - - - name: Set GITHUB_ENV - run: | - echo "BRANCH=$(echo ${GITHUB_REF#refs/heads/})" >> $GITHUB_ENV - - if [[ "${{github.base_ref}}" == "master" || "${{github.ref}}" == "refs/heads/master" ]]; then - echo "TAG=v0.0.0-master" >> $GITHUB_ENV - elif [[ "${{github.base_ref}}" == "dev" || "${{github.ref}}" == "refs/heads/dev" ]]; then - echo "TAG=v0.0.0-dev" >> $GITHUB_ENV - elif [[ "${{github.base_ref}}" == "staging" || "${{github.ref}}" == "refs/heads/staging" ]]; then - echo "TAG=v0.0.0-staging" >> $GITHUB_ENV - else - echo "TAG=$(echo ${GITHUB_REF#refs/tags/})" >> $GITHUB_ENV - fi - name: Install run: make install - - name: Zip release - run: tar -czvf zwallet-linux.tar.gz ./zwallet - - - name: Upload binaries to release - uses: svenstaro/upload-release-action@v2 - with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - file: zwallet-linux.tar.gz - tag: ${{ env.TAG }} - overwrite: true - file_glob: true - - name: 'Upload Artifact' uses: actions/upload-artifact@v2 with: @@ -64,51 +40,61 @@ jobs: build-windows: name: Build-windows runs-on: windows-runner + defaults: + run: + shell: msys2 {0} + strategy: + matrix: + sys: [ MINGW64 ] steps: - - name: Setup go - uses: actions/setup-go@v3 + - uses: msys2/setup-msys2@v2 with: - go-version: ^1.20.0 # The Go version to download (if necessary) and use. + msystem: ${{matrix.sys}} + + - name: Install libraries + run: | + echo 'Y'| pacman -S base-devel git gcc make + + - name: Install Clang and Go for MINGW64 + run: | + echo 'y'| pacman -S mingw-w64-x86_64-clang mingw-w64-x86_64-go zip unzip + + - name: Set environment variables + run: | + export GOROOT=/mingw64/lib/go + export GOPATH=/mingw64 + export PATH=$PATH:$GOROOT/bin + export PATH=$PATH:/usr/bin/7z + + # use clang as a default compiler for CGO + go env -w "CC=/mingw64/bin/clang.exe" - name: Checkout uses: actions/checkout@v2 - - name: Set GITHUB_ENV - run: | - IF ( "${{github.base_ref}}" -eq "master" -OR "${{github.ref}}" -eq "refs/heads/master" ){ - echo "TAG=v0.0.0-master" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf-8 -Append - } ElseIf ( "${{github.base_ref}}" -eq "dev" -OR "${{github.ref}}" -eq "refs/heads/dev" ){ - echo "TAG=v0.0.0-dev" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf-8 -Append - } ElseIf ( "${{github.base_ref}}" -eq "staging" -OR "${{github.ref}}" -eq "refs/heads/staging" ){ - echo "TAG=v0.0.0-staging" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf-8 -Append - } ELSE { - echo "TAG=${{github.ref}}" | %{$_ -replace('refs/tags/', '')} | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf-8 -Append - } - - - name: Install run: make install - + - name: Zip release run: | - copy zwallet zwallet.exe - 7z a zwallet-windows.zip zwallet.exe - - - name: Upload binaries to release - uses: svenstaro/upload-release-action@v2 - with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - file: zwallet-windows.zip - tag: ${{ env.TAG }} - overwrite: true - file_glob: true + # download dll files + wget https://github.com/0chain/zboxcli/files/11840033/windows.dll.s.zip + unzip -o windows.dll.s.zip + cp zwallet zwallet.exe + zip zwallet-windows.zip zwallet.exe libgcc_s_seh-1.dll libstdc++-6.dll libwinpthread-1.dll - name: 'Upload Artifact' uses: actions/upload-artifact@v2 with: - name: zwallet-windows - path: zwallet + name: zwallet-windows.zip + path: zwallet-windows.zip retention-days: 5 + + - name: cleanup workspace + run: | + rm -Recurse ${{github.workspace}}\* + shell: powershell + build-macos: name: Build-macos runs-on: macos-runner @@ -119,34 +105,9 @@ jobs: go-version: ^1.20.0 # The Go version to download (if necessary) and use. - name: Checkout uses: actions/checkout@v2 - - - name: Set GITHUB_ENV - run: | - echo "BRANCH=$(echo ${GITHUB_REF#refs/heads/})" >> $GITHUB_ENV - - if [[ "${{github.base_ref}}" == "master" || "${{github.ref}}" == "refs/heads/master" ]]; then - echo "TAG=v0.0.0-master" >> $GITHUB_ENV - elif [[ "${{github.base_ref}}" == "dev" || "${{github.ref}}" == "refs/heads/dev" ]]; then - echo "TAG=v0.0.0-dev" >> $GITHUB_ENV - elif [[ "${{github.base_ref}}" == "staging" || "${{github.ref}}" == "refs/heads/staging" ]]; then - echo "TAG=v0.0.0-staging" >> $GITHUB_ENV - else - echo "TAG=$(echo ${GITHUB_REF#refs/tags/})" >> $GITHUB_ENV - fi - name: Install run: make install - - name: Zip release - run: tar -czvf zwallet-macos.tar.gz ./zwallet - - - name: Upload binaries to release - uses: svenstaro/upload-release-action@v2 - with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - file: zwallet-macos.tar.gz - tag: ${{ env.TAG }} - overwrite: true - file_glob: true - name: 'Upload Artifact' uses: actions/upload-artifact@v2 diff --git a/.github/workflows/build-zwalletcli.yml b/.github/workflows/release-zwalletcli.yml similarity index 73% rename from .github/workflows/build-zwalletcli.yml rename to .github/workflows/release-zwalletcli.yml index e17a7951..d6f935a8 100644 --- a/.github/workflows/build-zwalletcli.yml +++ b/.github/workflows/release-zwalletcli.yml @@ -14,7 +14,7 @@ on: env: GITHUB_TOKEN: ${{ secrets.GOSDK }} - + jobs: build-linux: name: Build-Linux @@ -23,7 +23,7 @@ jobs: steps: - name: Checkout code uses: actions/checkout@v2 - + - name: Set up Go uses: actions/setup-go@v3 with: @@ -31,11 +31,11 @@ jobs: - name: Install run: make install - + - name: Get Branch id: get_version run: | - VERSION=$(echo ${GITHUB_REF#refs/heads/}) + VERSION=$(echo ${GITHUB_REF#refs/heads/}) echo ::set-output name=TAG::${VERSION} - name: Zip release @@ -69,7 +69,7 @@ jobs: delete_release: true # default: false tag_name: v0.0.0 # tag name to delete repo: 0chain/zwalletcli # target repo (optional). defaults to repo running this action - + - name: Create Release for Fixed v0.0.0 if: github.event.inputs.fixed_tag == 'yes' && steps.get_version.outputs.TAG == 'master' uses: zendesk/action-create-release@v1 @@ -78,52 +78,83 @@ jobs: release_name: v0.0.0 draft: false prerelease: false - + ############################### v*.*.* ############################# - name: Create Release for Next Version id: create_release_next_version - uses: zendesk/action-create-release@v1 + uses: zendesk/action-create-release@v1 with: draft: false prerelease: false auto_increment_type: ${{ github.event.inputs.version_tag }} tag_schema: semantic - + - name: 'Upload Artifact' uses: actions/upload-artifact@v2 with: name: zwallet-linux path: zwallet retention-days: 5 - + build-windows: - name: Build-Windows + name: Build-windows runs-on: windows-runner - + defaults: + run: + shell: msys2 {0} + strategy: + matrix: + sys: [ MINGW64 ] steps: - - name: Setup go - uses: actions/setup-go@v3 + - uses: msys2/setup-msys2@v2 with: - go-version: ^1.20.0 # The Go version to download (if necessary) and use. + msystem: ${{matrix.sys}} + + - name: Install libraries + run: | + echo 'Y'| pacman -S base-devel git gcc make + + - name: Install Clang and Go for MINGW64 + run: | + echo 'y'| pacman -S mingw-w64-x86_64-clang mingw-w64-x86_64-go zip unzip + + - name: Set environment variables + run: | + export GOROOT=/mingw64/lib/go + export GOPATH=/mingw64 + export PATH=$PATH:$GOROOT/bin + export PATH=$PATH:/usr/bin/7z + + # use clang as a default compiler for CGO + go env -w "CC=/mingw64/bin/clang.exe" + - name: Checkout uses: actions/checkout@v2 - + - name: Install run: make install - + - name: Zip release run: | - copy zwallet zwallet.exe - 7z a zwallet-windows.zip zwallet.exe + # download dll files + wget https://github.com/0chain/zboxcli/files/11840033/windows.dll.s.zip + unzip -o windows.dll.s.zip + cp zwallet zwallet.exe + zip zwallet-windows.zip zwallet.exe libgcc_s_seh-1.dll libstdc++-6.dll libwinpthread-1.dll - name: 'Upload Artifact' uses: actions/upload-artifact@v2 with: - name: zwallet-windows - path: zwallet + name: zwallet-windows.zip + path: zwallet-windows.zip retention-days: 5 - + + - name: cleanup workspace + run: | + rm -Recurse ${{github.workspace}}\* + shell: powershell + build-macos: name: Build-MacOS runs-on: macos-runner @@ -134,16 +165,16 @@ jobs: go-version: ^1.20.0 # The Go version to download (if necessary) and use. - name: Checkout uses: actions/checkout@v2 - + - name: Install run: make install - name: Get Branch id: get_version run: | - VERSION=$(echo ${GITHUB_REF#refs/heads/}) + VERSION=$(echo ${GITHUB_REF#refs/heads/}) echo ::set-output name=TAG::${VERSION} - + - name: Zip release run: tar -czvf zwallet-macos.tar.gz ./zwallet @@ -153,4 +184,4 @@ jobs: name: zwallet-macos path: zwallet retention-days: 5 - +