From a1c9de195f964f70beaf47d1c7df165620501cf3 Mon Sep 17 00:00:00 2001 From: Liz Jeong Date: Fri, 12 Jul 2024 16:34:28 +0900 Subject: [PATCH 01/75] Implement CI/CD workflows for Initia binary builds - Add build-and-upload.yml: Main workflow coordinating build processes * Set up matrix strategy for multiple platforms (Linux, Darwin) * Trigger builds for amd64 and arm64 architectures - Add build-darwin.yml: Darwin-specific build workflow * Configure macOS environment and build process * Support amd64 and arm64 architectures - Add build-linux.yml: Linux-specific build workflow * Set up Ubuntu environment and build process * Include steps for amd64 and arm64 builds - Implement automatic uploads to Google Cloud Storage for all builds - Add verification steps and public URL generation for uploaded binaries --- .github/workflows/build-and-upload.yml | 31 ++++++++++++++ .github/workflows/build-darwin.yml | 56 ++++++++++++++++++++++++++ .github/workflows/build-linux.yml | 56 ++++++++++++++++++++++++++ 3 files changed, 143 insertions(+) create mode 100644 .github/workflows/build-and-upload.yml create mode 100644 .github/workflows/build-darwin.yml create mode 100644 .github/workflows/build-linux.yml diff --git a/.github/workflows/build-and-upload.yml b/.github/workflows/build-and-upload.yml new file mode 100644 index 00000000..00076bf3 --- /dev/null +++ b/.github/workflows/build-and-upload.yml @@ -0,0 +1,31 @@ +name: Build and Upload to GCS + +on: + push: + tags: + - 'v*' + +jobs: + build-linux-amd64: + uses: ./.github/workflows/build-linux.yml + with: + arch: amd64 + secrets: inherit + + build-linux-arm64: + uses: ./.github/workflows/build-linux.yml + with: + arch: arm64 + secrets: inherit + + build-darwin-amd64: + uses: ./.github/workflows/build-darwin.yml + with: + arch: amd64 + secrets: inherit + + build-darwin-arm64: + uses: ./.github/workflows/build-darwin.yml + with: + arch: arm64 + secrets: inherit \ No newline at end of file diff --git a/.github/workflows/build-darwin.yml b/.github/workflows/build-darwin.yml new file mode 100644 index 00000000..f9afa8c9 --- /dev/null +++ b/.github/workflows/build-darwin.yml @@ -0,0 +1,56 @@ +name: Build Darwin + +on: + workflow_call: + inputs: + arch: + required: true + type: string + +jobs: + build: + runs-on: macos-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Set up Go + uses: actions/setup-go@v4 + with: + go-version: '1.22.4' + + - name: Build for Darwin + run: | + make build + cd ./build + mkdir -p initia_${GITHUB_REF#refs/tags/} + cp ~/go/pkg/mod/github.com/initia-labs/movevm@*/api/libmovevm.dylib initia_${GITHUB_REF#refs/tags/}/libmovevm.${{ inputs.arch }}.dylib + cp ~/go/pkg/mod/github.com/initia-labs/movevm@*/api/libcompiler.dylib initia_${GITHUB_REF#refs/tags/}/libcompiler.${{ inputs.arch }}.dylib + mv initiad initia_${GITHUB_REF#refs/tags/}/ + tar -czvf initia_${GITHUB_REF#refs/tags/}_Darwin_${{ inputs.arch }}.tar.gz initia_${GITHUB_REF#refs/tags/} + + - name: Google Auth + uses: 'google-github-actions/auth@v2' + with: + credentials_json: '${{ secrets.GCP_SA_KEY }}' + + - name: Set up Cloud SDK + uses: 'google-github-actions/setup-gcloud@v2' + + - name: Upload to GCS + env: + GCS_BUCKET: ${{ secrets.GCS_BUCKET }} + run: | + gsutil cp ./build/initia_${GITHUB_REF#refs/tags/}_Darwin_${{ inputs.arch }}.tar.gz gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags/}/ + + - name: Verify upload and Generate public URL + env: + GCS_BUCKET: ${{ secrets.GCS_BUCKET }} + run: | + if gsutil stat gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags/}/initia_${GITHUB_REF#refs/tags/}_Darwin_${{ inputs.arch }}.tar.gz; then + echo "File successfully uploaded" + echo "Public URL: https://storage.googleapis.com/${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags/}/initia_${GITHUB_REF#refs/tags/}_Darwin_${{ inputs.arch }}.tar.gz" >> $GITHUB_STEP_SUMMARY + else + echo "File upload failed" + exit 1 + fi \ No newline at end of file diff --git a/.github/workflows/build-linux.yml b/.github/workflows/build-linux.yml new file mode 100644 index 00000000..1def2d12 --- /dev/null +++ b/.github/workflows/build-linux.yml @@ -0,0 +1,56 @@ +name: Build Linux + +on: + workflow_call: + inputs: + arch: + required: true + type: string + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Set up Go + uses: actions/setup-go@v4 + with: + go-version: '1.22.4' + + - name: Build for Linux + run: | + make build-linux-with-shared-library + cd ./build + mkdir -p initia_${GITHUB_REF#refs/tags/} + mv libmovevm.so initia_${GITHUB_REF#refs/tags/}/libmovevm.${{ inputs.arch }}.so + mv libcompiler.so initia_${GITHUB_REF#refs/tags/}/libcompiler.${{ inputs.arch }}.so + mv initiad initia_${GITHUB_REF#refs/tags/}/ + tar -czvf initia_${GITHUB_REF#refs/tags/}_Linux_${{ inputs.arch }}.tar.gz initia_${GITHUB_REF#refs/tags/} + + - name: Google Auth + uses: 'google-github-actions/auth@v2' + with: + credentials_json: '${{ secrets.GCP_SA_KEY }}' + + - name: Set up Cloud SDK + uses: 'google-github-actions/setup-gcloud@v2' + + - name: Upload to GCS + env: + GCS_BUCKET: ${{ secrets.GCS_BUCKET }} + run: | + gsutil cp ./build/initia_${GITHUB_REF#refs/tags/}_Linux_${{ inputs.arch }}.tar.gz gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags/}/ + + - name: Verify upload and Generate public URL + env: + GCS_BUCKET: ${{ secrets.GCS_BUCKET }} + run: | + if gsutil stat gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags/}/initia_${GITHUB_REF#refs/tags/}_Linux_${{ inputs.arch }}.tar.gz; then + echo "File successfully uploaded" + echo "Public URL: https://storage.googleapis.com/${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags/}/initia_${GITHUB_REF#refs/tags/}_Linux_${{ inputs.arch }}.tar.gz" >> $GITHUB_STEP_SUMMARY + else + echo "File upload failed" + exit 1 + fi \ No newline at end of file From d185bd2e9dcbaba175c48300f9de812a28d8bb01 Mon Sep 17 00:00:00 2001 From: LizJeong Date: Fri, 12 Jul 2024 17:08:06 +0900 Subject: [PATCH 02/75] Update build-linux.yml --- .github/workflows/build-linux.yml | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-linux.yml b/.github/workflows/build-linux.yml index 1def2d12..3d884dfb 100644 --- a/.github/workflows/build-linux.yml +++ b/.github/workflows/build-linux.yml @@ -20,8 +20,10 @@ jobs: go-version: '1.22.4' - name: Build for Linux + env: + GOARCH: ${{ inputs.arch }} run: | - make build-linux-with-shared-library + make build-linux-with-shared-library GOARCH=${{ inputs.arch }} cd ./build mkdir -p initia_${GITHUB_REF#refs/tags/} mv libmovevm.so initia_${GITHUB_REF#refs/tags/}/libmovevm.${{ inputs.arch }}.so @@ -29,6 +31,15 @@ jobs: mv initiad initia_${GITHUB_REF#refs/tags/}/ tar -czvf initia_${GITHUB_REF#refs/tags/}_Linux_${{ inputs.arch }}.tar.gz initia_${GITHUB_REF#refs/tags/} + - name: Verify binary architecture + run: | + file ./build/initia_${GITHUB_REF#refs/tags/}/initiad + + - name: Verify library architecture + run: | + file ./build/initia_${GITHUB_REF#refs/tags/}/libmovevm.${{ inputs.arch }}.so + file ./build/initia_${GITHUB_REF#refs/tags/}/libcompiler.${{ inputs.arch }}.so + - name: Google Auth uses: 'google-github-actions/auth@v2' with: @@ -53,4 +64,4 @@ jobs: else echo "File upload failed" exit 1 - fi \ No newline at end of file + fi From 4cb15eaa57412b2c3322405ef7e00cc0c92d483e Mon Sep 17 00:00:00 2001 From: LizJeong Date: Fri, 12 Jul 2024 17:08:31 +0900 Subject: [PATCH 03/75] Update build-darwin.yml --- .github/workflows/build-darwin.yml | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-darwin.yml b/.github/workflows/build-darwin.yml index f9afa8c9..8cc252ce 100644 --- a/.github/workflows/build-darwin.yml +++ b/.github/workflows/build-darwin.yml @@ -20,8 +20,10 @@ jobs: go-version: '1.22.4' - name: Build for Darwin + env: + GOARCH: ${{ inputs.arch }} run: | - make build + make build GOARCH=${{ inputs.arch }} cd ./build mkdir -p initia_${GITHUB_REF#refs/tags/} cp ~/go/pkg/mod/github.com/initia-labs/movevm@*/api/libmovevm.dylib initia_${GITHUB_REF#refs/tags/}/libmovevm.${{ inputs.arch }}.dylib @@ -29,6 +31,15 @@ jobs: mv initiad initia_${GITHUB_REF#refs/tags/}/ tar -czvf initia_${GITHUB_REF#refs/tags/}_Darwin_${{ inputs.arch }}.tar.gz initia_${GITHUB_REF#refs/tags/} + - name: Verify binary architecture + run: | + file ./build/initia_${GITHUB_REF#refs/tags/}/initiad + + - name: Verify library architecture + run: | + file ./build/initia_${GITHUB_REF#refs/tags/}/libmovevm.${{ inputs.arch }}.dylib + file ./build/initia_${GITHUB_REF#refs/tags/}/libcompiler.${{ inputs.arch }}.dylib + - name: Google Auth uses: 'google-github-actions/auth@v2' with: @@ -53,4 +64,4 @@ jobs: else echo "File upload failed" exit 1 - fi \ No newline at end of file + fi From 3abb33851cc51d210cbb784563e615730852b136 Mon Sep 17 00:00:00 2001 From: LizJeong Date: Fri, 12 Jul 2024 17:23:17 +0900 Subject: [PATCH 04/75] Update build-linux.yml --- .github/workflows/build-linux.yml | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build-linux.yml b/.github/workflows/build-linux.yml index 3d884dfb..931e857a 100644 --- a/.github/workflows/build-linux.yml +++ b/.github/workflows/build-linux.yml @@ -19,11 +19,20 @@ jobs: with: go-version: '1.22.4' + - name: Install cross-compilation tools + if: inputs.arch == 'arm64' + run: | + sudo apt-get update + sudo apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu + - name: Build for Linux env: GOARCH: ${{ inputs.arch }} + CC: ${{ inputs.arch == 'arm64' && 'aarch64-linux-gnu-gcc' || 'gcc' }} + CXX: ${{ inputs.arch == 'arm64' && 'aarch64-linux-gnu-g++' || 'g++' }} run: | - make build-linux-with-shared-library GOARCH=${{ inputs.arch }} + echo "Building for GOARCH=$GOARCH" + CGO_ENABLED=1 GOOS=linux GOARCH=$GOARCH CC=$CC CXX=$CXX make build-linux-with-shared-library cd ./build mkdir -p initia_${GITHUB_REF#refs/tags/} mv libmovevm.so initia_${GITHUB_REF#refs/tags/}/libmovevm.${{ inputs.arch }}.so @@ -31,12 +40,9 @@ jobs: mv initiad initia_${GITHUB_REF#refs/tags/}/ tar -czvf initia_${GITHUB_REF#refs/tags/}_Linux_${{ inputs.arch }}.tar.gz initia_${GITHUB_REF#refs/tags/} - - name: Verify binary architecture + - name: Verify binary and library architecture run: | file ./build/initia_${GITHUB_REF#refs/tags/}/initiad - - - name: Verify library architecture - run: | file ./build/initia_${GITHUB_REF#refs/tags/}/libmovevm.${{ inputs.arch }}.so file ./build/initia_${GITHUB_REF#refs/tags/}/libcompiler.${{ inputs.arch }}.so From b28114b6f35c92aad1aebb072bf481e2d90845f6 Mon Sep 17 00:00:00 2001 From: LizJeong Date: Fri, 12 Jul 2024 17:28:38 +0900 Subject: [PATCH 05/75] Update build-and-upload.yml --- .github/workflows/build-and-upload.yml | 20 ++------------------ 1 file changed, 2 insertions(+), 18 deletions(-) diff --git a/.github/workflows/build-and-upload.yml b/.github/workflows/build-and-upload.yml index 00076bf3..8f63f8e2 100644 --- a/.github/workflows/build-and-upload.yml +++ b/.github/workflows/build-and-upload.yml @@ -7,25 +7,9 @@ on: jobs: build-linux-amd64: - uses: ./.github/workflows/build-linux.yml - with: - arch: amd64 + uses: ./.github/workflows/build-linux-amd64.yml secrets: inherit build-linux-arm64: - uses: ./.github/workflows/build-linux.yml - with: - arch: arm64 + uses: ./.github/workflows/build-linux-arm64.yml secrets: inherit - - build-darwin-amd64: - uses: ./.github/workflows/build-darwin.yml - with: - arch: amd64 - secrets: inherit - - build-darwin-arm64: - uses: ./.github/workflows/build-darwin.yml - with: - arch: arm64 - secrets: inherit \ No newline at end of file From c4f69545fef32b72c741b805d24b7542f931f31b Mon Sep 17 00:00:00 2001 From: LizJeong Date: Fri, 12 Jul 2024 17:30:07 +0900 Subject: [PATCH 06/75] Update and rename build-linux.yml to build-linux-arm64.yml --- ...{build-linux.yml => build-linux-arm64.yml} | 37 ++++++++----------- 1 file changed, 16 insertions(+), 21 deletions(-) rename .github/workflows/{build-linux.yml => build-linux-arm64.yml} (63%) diff --git a/.github/workflows/build-linux.yml b/.github/workflows/build-linux-arm64.yml similarity index 63% rename from .github/workflows/build-linux.yml rename to .github/workflows/build-linux-arm64.yml index 931e857a..a0d8948e 100644 --- a/.github/workflows/build-linux.yml +++ b/.github/workflows/build-linux-arm64.yml @@ -1,11 +1,7 @@ -name: Build Linux +name: Build Linux ARM64 on: workflow_call: - inputs: - arch: - required: true - type: string jobs: build: @@ -20,31 +16,30 @@ jobs: go-version: '1.22.4' - name: Install cross-compilation tools - if: inputs.arch == 'arm64' run: | sudo apt-get update sudo apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu - - name: Build for Linux + - name: Build for Linux ARM64 env: - GOARCH: ${{ inputs.arch }} - CC: ${{ inputs.arch == 'arm64' && 'aarch64-linux-gnu-gcc' || 'gcc' }} - CXX: ${{ inputs.arch == 'arm64' && 'aarch64-linux-gnu-g++' || 'g++' }} + GOARCH: arm64 + CC: aarch64-linux-gnu-gcc + CXX: aarch64-linux-gnu-g++ run: | - echo "Building for GOARCH=$GOARCH" - CGO_ENABLED=1 GOOS=linux GOARCH=$GOARCH CC=$CC CXX=$CXX make build-linux-with-shared-library + echo "Building for GOARCH=arm64" + CGO_ENABLED=1 GOOS=linux GOARCH=arm64 CC=$CC CXX=$CXX make build-linux-with-shared-library cd ./build mkdir -p initia_${GITHUB_REF#refs/tags/} - mv libmovevm.so initia_${GITHUB_REF#refs/tags/}/libmovevm.${{ inputs.arch }}.so - mv libcompiler.so initia_${GITHUB_REF#refs/tags/}/libcompiler.${{ inputs.arch }}.so + mv libmovevm.so initia_${GITHUB_REF#refs/tags/}/libmovevm.arm64.so + mv libcompiler.so initia_${GITHUB_REF#refs/tags/}/libcompiler.arm64.so mv initiad initia_${GITHUB_REF#refs/tags/}/ - tar -czvf initia_${GITHUB_REF#refs/tags/}_Linux_${{ inputs.arch }}.tar.gz initia_${GITHUB_REF#refs/tags/} + tar -czvf initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz initia_${GITHUB_REF#refs/tags/} - - name: Verify binary and library architecture + - name: Verify binary architecture run: | file ./build/initia_${GITHUB_REF#refs/tags/}/initiad - file ./build/initia_${GITHUB_REF#refs/tags/}/libmovevm.${{ inputs.arch }}.so - file ./build/initia_${GITHUB_REF#refs/tags/}/libcompiler.${{ inputs.arch }}.so + file ./build/initia_${GITHUB_REF#refs/tags/}/libmovevm.arm64.so + file ./build/initia_${GITHUB_REF#refs/tags/}/libcompiler.arm64.so - name: Google Auth uses: 'google-github-actions/auth@v2' @@ -58,15 +53,15 @@ jobs: env: GCS_BUCKET: ${{ secrets.GCS_BUCKET }} run: | - gsutil cp ./build/initia_${GITHUB_REF#refs/tags/}_Linux_${{ inputs.arch }}.tar.gz gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags/}/ + gsutil cp ./build/initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags/}/ - name: Verify upload and Generate public URL env: GCS_BUCKET: ${{ secrets.GCS_BUCKET }} run: | - if gsutil stat gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags/}/initia_${GITHUB_REF#refs/tags/}_Linux_${{ inputs.arch }}.tar.gz; then + if gsutil stat gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags/}/initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz; then echo "File successfully uploaded" - echo "Public URL: https://storage.googleapis.com/${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags/}/initia_${GITHUB_REF#refs/tags/}_Linux_${{ inputs.arch }}.tar.gz" >> $GITHUB_STEP_SUMMARY + echo "Public URL: https://storage.googleapis.com/${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags/}/initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz" >> $GITHUB_STEP_SUMMARY else echo "File upload failed" exit 1 From bcf1fe61430787ac81d456ea95f508c614acba18 Mon Sep 17 00:00:00 2001 From: LizJeong Date: Fri, 12 Jul 2024 17:30:46 +0900 Subject: [PATCH 07/75] Create build-linux-amd64.yml --- .github/workflows/build-linux-amd64.yml | 61 +++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 .github/workflows/build-linux-amd64.yml diff --git a/.github/workflows/build-linux-amd64.yml b/.github/workflows/build-linux-amd64.yml new file mode 100644 index 00000000..a3c6b70a --- /dev/null +++ b/.github/workflows/build-linux-amd64.yml @@ -0,0 +1,61 @@ +name: Build Linux AMD64 + +on: + workflow_call: + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Set up Go + uses: actions/setup-go@v4 + with: + go-version: '1.22.4' + + - name: Build for Linux AMD64 + env: + GOARCH: amd64 + run: | + echo "Building for GOARCH=amd64" + make build-linux-with-shared-library GOARCH=amd64 + cd ./build + mkdir -p initia_${GITHUB_REF#refs/tags/} + mv libmovevm.so initia_${GITHUB_REF#refs/tags/}/libmovevm.amd64.so + mv libcompiler.so initia_${GITHUB_REF#refs/tags/}/libcompiler.amd64.so + mv initiad initia_${GITHUB_REF#refs/tags/}/ + tar -czvf initia_${GITHUB_REF#refs/tags/}_Linux_amd64.tar.gz initia_${GITHUB_REF#refs/tags/} + + - name: Verify binary architecture + run: | + file ./build/initia_${GITHUB_REF#refs/tags/}/initiad + file ./build/initia_${GITHUB_REF#refs/tags/}/libmovevm.amd64.so + file ./build/initia_${GITHUB_REF#refs/tags/}/libcompiler.amd64.so + + - name: Google Auth + uses: 'google-github-actions/auth@v2' + with: + credentials_json: '${{ secrets.GCP_SA_KEY }}' + + - name: Set up Cloud SDK + uses: 'google-github-actions/setup-gcloud@v2' + + - name: Upload to GCS + env: + GCS_BUCKET: ${{ secrets.GCS_BUCKET }} + run: | + gsutil cp ./build/initia_${GITHUB_REF#refs/tags/}_Linux_amd64.tar.gz gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags/}/ + + - name: Verify upload and Generate public URL + env: + GCS_BUCKET: ${{ secrets.GCS_BUCKET }} + run: | + if gsutil stat gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags/}/initia_${GITHUB_REF#refs/tags/}_Linux_amd64.tar.gz; then + echo "File successfully uploaded" + echo "Public URL: https://storage.googleapis.com/${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags/}/initia_${GITHUB_REF#refs/tags/}_Linux_amd64.tar.gz" >> $GITHUB_STEP_SUMMARY + else + echo "File upload failed" + exit 1 + fi From 8e1b3394fb4fd3670de5c7b27423fc8745a5fcf7 Mon Sep 17 00:00:00 2001 From: LizJeong Date: Fri, 12 Jul 2024 17:31:08 +0900 Subject: [PATCH 08/75] Rename build-linux-arm64.yml to build-linux-arm-64.yml --- .../workflows/{build-linux-arm64.yml => build-linux-arm-64.yml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .github/workflows/{build-linux-arm64.yml => build-linux-arm-64.yml} (100%) diff --git a/.github/workflows/build-linux-arm64.yml b/.github/workflows/build-linux-arm-64.yml similarity index 100% rename from .github/workflows/build-linux-arm64.yml rename to .github/workflows/build-linux-arm-64.yml From 6a36128ac170bd3b7f606220fb9d7974d550b286 Mon Sep 17 00:00:00 2001 From: LizJeong Date: Fri, 12 Jul 2024 17:31:17 +0900 Subject: [PATCH 09/75] Rename build-linux-amd64.yml to build-linux-amd-64.yml --- .../workflows/{build-linux-amd64.yml => build-linux-amd-64.yml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .github/workflows/{build-linux-amd64.yml => build-linux-amd-64.yml} (100%) diff --git a/.github/workflows/build-linux-amd64.yml b/.github/workflows/build-linux-amd-64.yml similarity index 100% rename from .github/workflows/build-linux-amd64.yml rename to .github/workflows/build-linux-amd-64.yml From 23e2a7c5e8b88a0bb5a224413851ad153d253ac3 Mon Sep 17 00:00:00 2001 From: LizJeong Date: Fri, 12 Jul 2024 17:31:47 +0900 Subject: [PATCH 10/75] Rename build-linux-amd-64.yml to build-linux-amd64.yml --- .../workflows/{build-linux-amd-64.yml => build-linux-amd64.yml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .github/workflows/{build-linux-amd-64.yml => build-linux-amd64.yml} (100%) diff --git a/.github/workflows/build-linux-amd-64.yml b/.github/workflows/build-linux-amd64.yml similarity index 100% rename from .github/workflows/build-linux-amd-64.yml rename to .github/workflows/build-linux-amd64.yml From 7931af28651c0847a00fa39143af9667a48df579 Mon Sep 17 00:00:00 2001 From: LizJeong Date: Fri, 12 Jul 2024 17:31:55 +0900 Subject: [PATCH 11/75] Rename build-linux-arm-64.yml to build-linux-arm64.yml --- .../workflows/{build-linux-arm-64.yml => build-linux-arm64.yml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .github/workflows/{build-linux-arm-64.yml => build-linux-arm64.yml} (100%) diff --git a/.github/workflows/build-linux-arm-64.yml b/.github/workflows/build-linux-arm64.yml similarity index 100% rename from .github/workflows/build-linux-arm-64.yml rename to .github/workflows/build-linux-arm64.yml From 34f5d54baf0751172b525139a1234d10574384fa Mon Sep 17 00:00:00 2001 From: LizJeong Date: Fri, 12 Jul 2024 17:35:45 +0900 Subject: [PATCH 12/75] Update docker.yml --- .github/workflows/docker.yml | 208 +++++++++++++++++------------------ 1 file changed, 104 insertions(+), 104 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 57734e03..0d651d30 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -1,104 +1,104 @@ -name: Docker - -on: - workflow_dispatch: - push: - branches: - - "main" - tags: - - "v*" - paths: - - "**.go" - - "go.mod" - - "go.sum" - pull_request: - branches: - - "main" - paths: - - "**.go" - - "go.mod" - - "go.sum" - -env: - REGISTRY: ghcr.io - -jobs: - initiad: - name: Initiad - runs-on: ubuntu-latest - - permissions: - contents: read - packages: write - - outputs: - tags: ${{ steps.meta.outputs.tags }} - - env: - IMAGE_NAME: initiad - - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Log in to the Container registry - uses: docker/login-action@v2 - with: - registry: ${{ env.REGISTRY }} - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Extract metadata (tags, labels) for Docker - id: meta - uses: docker/metadata-action@v4 - with: - images: ${{ env.REGISTRY }}/${{ github.repository_owner }}/${{ env.IMAGE_NAME }} - - - name: Build and push - uses: docker/build-push-action@v4 - with: - build-args: "GITHUB_ACCESS_TOKEN=${{ secrets.GH_READ_TOKEN }}" - file: images/private/Dockerfile - push: ${{ startsWith(github.ref, 'refs/tags') }} # push image only for tags - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - - node: - name: Node - needs: initiad - runs-on: ubuntu-latest - permissions: - contents: read - packages: write - - env: - IMAGE_NAME: node - - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Log in to the Container registry - uses: docker/login-action@v2 - with: - registry: ${{ env.REGISTRY }} - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Extract metadata (tags, labels) for Docker - id: meta - uses: docker/metadata-action@v4 - with: - images: ${{ env.REGISTRY }}/${{ github.repository_owner }}/${{ env.IMAGE_NAME }} - - - name: Get base image - run: echo "BASE_IMAGE=$(echo ${{ needs.initiad.outputs.tags }} | cut -d',' -f1)" >> "$GITHUB_ENV" - - - name: Build and push - uses: docker/build-push-action@v4 - with: - build-args: "GITHUB_ACCESS_TOKEN=${{ secrets.GH_READ_TOKEN }},BASE_IMAGE=${{ env.BASE_IMAGE }}" - file: images/node/Dockerfile - push: ${{ startsWith(github.ref, 'refs/tags') }} # push image only for tags - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} +# name: Docker + +# on: +# workflow_dispatch: +# push: +# branches: +# - "main" +# tags: +# - "v*" +# paths: +# - "**.go" +# - "go.mod" +# - "go.sum" +# pull_request: +# branches: +# - "main" +# paths: +# - "**.go" +# - "go.mod" +# - "go.sum" + +# env: +# REGISTRY: ghcr.io + +# jobs: +# initiad: +# name: Initiad +# runs-on: ubuntu-latest + +# permissions: +# contents: read +# packages: write + +# outputs: +# tags: ${{ steps.meta.outputs.tags }} + +# env: +# IMAGE_NAME: initiad + +# steps: +# - name: Checkout +# uses: actions/checkout@v3 + +# - name: Log in to the Container registry +# uses: docker/login-action@v2 +# with: +# registry: ${{ env.REGISTRY }} +# username: ${{ github.actor }} +# password: ${{ secrets.GITHUB_TOKEN }} + +# - name: Extract metadata (tags, labels) for Docker +# id: meta +# uses: docker/metadata-action@v4 +# with: +# images: ${{ env.REGISTRY }}/${{ github.repository_owner }}/${{ env.IMAGE_NAME }} + +# - name: Build and push +# uses: docker/build-push-action@v4 +# with: +# build-args: "GITHUB_ACCESS_TOKEN=${{ secrets.GH_READ_TOKEN }}" +# file: images/private/Dockerfile +# push: ${{ startsWith(github.ref, 'refs/tags') }} # push image only for tags +# tags: ${{ steps.meta.outputs.tags }} +# labels: ${{ steps.meta.outputs.labels }} + +# node: +# name: Node +# needs: initiad +# runs-on: ubuntu-latest +# permissions: +# contents: read +# packages: write + +# env: +# IMAGE_NAME: node + +# steps: +# - name: Checkout +# uses: actions/checkout@v3 + +# - name: Log in to the Container registry +# uses: docker/login-action@v2 +# with: +# registry: ${{ env.REGISTRY }} +# username: ${{ github.actor }} +# password: ${{ secrets.GITHUB_TOKEN }} + +# - name: Extract metadata (tags, labels) for Docker +# id: meta +# uses: docker/metadata-action@v4 +# with: +# images: ${{ env.REGISTRY }}/${{ github.repository_owner }}/${{ env.IMAGE_NAME }} + +# - name: Get base image +# run: echo "BASE_IMAGE=$(echo ${{ needs.initiad.outputs.tags }} | cut -d',' -f1)" >> "$GITHUB_ENV" + +# - name: Build and push +# uses: docker/build-push-action@v4 +# with: +# build-args: "GITHUB_ACCESS_TOKEN=${{ secrets.GH_READ_TOKEN }},BASE_IMAGE=${{ env.BASE_IMAGE }}" +# file: images/node/Dockerfile +# push: ${{ startsWith(github.ref, 'refs/tags') }} # push image only for tags +# tags: ${{ steps.meta.outputs.tags }} +# labels: ${{ steps.meta.outputs.labels }} From c78c8e6347c56f45f622e185fcf4aac716a0b20a Mon Sep 17 00:00:00 2001 From: LizJeong Date: Fri, 12 Jul 2024 17:38:43 +0900 Subject: [PATCH 13/75] Update build-linux-arm64.yml --- .github/workflows/build-linux-arm64.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-linux-arm64.yml b/.github/workflows/build-linux-arm64.yml index a0d8948e..617f4fa2 100644 --- a/.github/workflows/build-linux-arm64.yml +++ b/.github/workflows/build-linux-arm64.yml @@ -26,8 +26,13 @@ jobs: CC: aarch64-linux-gnu-gcc CXX: aarch64-linux-gnu-g++ run: | + echo "GOARCH=$GOARCH" + echo "CC=$CC" + echo "CXX=$CXX" echo "Building for GOARCH=arm64" - CGO_ENABLED=1 GOOS=linux GOARCH=arm64 CC=$CC CXX=$CXX make build-linux-with-shared-library + CGO_ENABLED=1 GOOS=linux GOARCH=arm64 CC=$CC CXX=$CXX go build -o ./build/initiad ./cmd/initiad + CGO_ENABLED=1 GOOS=linux GOARCH=arm64 CC=$CC CXX=$CXX go build -buildmode=c-shared -o ./build/libmovevm.so ./cmd/libmovevm + CGO_ENABLED=1 GOOS=linux GOARCH=arm64 CC=$CC CXX=$CXX go build -buildmode=c-shared -o ./build/libcompiler.so ./cmd/libcompiler cd ./build mkdir -p initia_${GITHUB_REF#refs/tags/} mv libmovevm.so initia_${GITHUB_REF#refs/tags/}/libmovevm.arm64.so From 31bd2fc5a1af241852d2490874cfe4757fb6d63d Mon Sep 17 00:00:00 2001 From: LizJeong Date: Fri, 12 Jul 2024 17:44:45 +0900 Subject: [PATCH 14/75] Update build-linux-arm64.yml --- .github/workflows/build-linux-arm64.yml | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/.github/workflows/build-linux-arm64.yml b/.github/workflows/build-linux-arm64.yml index 617f4fa2..7e59fc53 100644 --- a/.github/workflows/build-linux-arm64.yml +++ b/.github/workflows/build-linux-arm64.yml @@ -5,7 +5,8 @@ on: jobs: build: - runs-on: ubuntu-latest + runs-on: ubuntu-latest-arm64 + steps: - name: Checkout code uses: actions/checkout@v3 @@ -15,24 +16,12 @@ jobs: with: go-version: '1.22.4' - - name: Install cross-compilation tools - run: | - sudo apt-get update - sudo apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu - - name: Build for Linux ARM64 env: GOARCH: arm64 - CC: aarch64-linux-gnu-gcc - CXX: aarch64-linux-gnu-g++ run: | - echo "GOARCH=$GOARCH" - echo "CC=$CC" - echo "CXX=$CXX" echo "Building for GOARCH=arm64" - CGO_ENABLED=1 GOOS=linux GOARCH=arm64 CC=$CC CXX=$CXX go build -o ./build/initiad ./cmd/initiad - CGO_ENABLED=1 GOOS=linux GOARCH=arm64 CC=$CC CXX=$CXX go build -buildmode=c-shared -o ./build/libmovevm.so ./cmd/libmovevm - CGO_ENABLED=1 GOOS=linux GOARCH=arm64 CC=$CC CXX=$CXX go build -buildmode=c-shared -o ./build/libcompiler.so ./cmd/libcompiler + make build-linux-with-shared-library cd ./build mkdir -p initia_${GITHUB_REF#refs/tags/} mv libmovevm.so initia_${GITHUB_REF#refs/tags/}/libmovevm.arm64.so From 3bbad33300dd1ae61257c698f324c764659b824a Mon Sep 17 00:00:00 2001 From: LizJeong Date: Fri, 12 Jul 2024 17:54:14 +0900 Subject: [PATCH 15/75] Update build-linux-arm64.yml --- .github/workflows/build-linux-arm64.yml | 46 ++++++++++++------------- 1 file changed, 22 insertions(+), 24 deletions(-) diff --git a/.github/workflows/build-linux-arm64.yml b/.github/workflows/build-linux-arm64.yml index 7e59fc53..8803c297 100644 --- a/.github/workflows/build-linux-arm64.yml +++ b/.github/workflows/build-linux-arm64.yml @@ -5,35 +5,33 @@ on: jobs: build: - runs-on: ubuntu-latest-arm64 - + runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v3 - - name: Set up Go - uses: actions/setup-go@v4 + - name: ARM Runner + uses: pguyot/arm-runner-action@v2 with: - go-version: '1.22.4' - - - name: Build for Linux ARM64 - env: - GOARCH: arm64 - run: | - echo "Building for GOARCH=arm64" - make build-linux-with-shared-library - cd ./build - mkdir -p initia_${GITHUB_REF#refs/tags/} - mv libmovevm.so initia_${GITHUB_REF#refs/tags/}/libmovevm.arm64.so - mv libcompiler.so initia_${GITHUB_REF#refs/tags/}/libcompiler.arm64.so - mv initiad initia_${GITHUB_REF#refs/tags/}/ - tar -czvf initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz initia_${GITHUB_REF#refs/tags/} - - - name: Verify binary architecture - run: | - file ./build/initia_${GITHUB_REF#refs/tags/}/initiad - file ./build/initia_${GITHUB_REF#refs/tags/}/libmovevm.arm64.so - file ./build/initia_${GITHUB_REF#refs/tags/}/libcompiler.arm64.so + base_image: raspios_lite_arm64:latest + cpu: cortex-a53 + cpu_info: cpuinfo/raspberrypi_zero2_w + bind_mount_repository: true + commands: | + apt-get update + apt-get install -y golang-1.22 make file + export PATH=$PATH:/usr/lib/go-1.22/bin + echo "Building for GOARCH=arm64" + GOARCH=arm64 make build-linux-with-shared-library + cd ./build + mkdir -p initia_${GITHUB_REF#refs/tags/} + mv libmovevm.so initia_${GITHUB_REF#refs/tags/}/libmovevm.arm64.so + mv libcompiler.so initia_${GITHUB_REF#refs/tags/}/libcompiler.arm64.so + mv initiad initia_${GITHUB_REF#refs/tags/}/ + tar -czvf initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz initia_${GITHUB_REF#refs/tags/} + file ./initia_${GITHUB_REF#refs/tags/}/initiad + file ./initia_${GITHUB_REF#refs/tags/}/libmovevm.arm64.so + file ./initia_${GITHUB_REF#refs/tags/}/libcompiler.arm64.so - name: Google Auth uses: 'google-github-actions/auth@v2' From 2a36ba663b40f7d411e82043db5e8d873db9ccc4 Mon Sep 17 00:00:00 2001 From: LizJeong Date: Fri, 12 Jul 2024 17:54:35 +0900 Subject: [PATCH 16/75] Update build-and-upload.yml --- .github/workflows/build-and-upload.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-and-upload.yml b/.github/workflows/build-and-upload.yml index 8f63f8e2..7872e576 100644 --- a/.github/workflows/build-and-upload.yml +++ b/.github/workflows/build-and-upload.yml @@ -6,9 +6,9 @@ on: - 'v*' jobs: - build-linux-amd64: - uses: ./.github/workflows/build-linux-amd64.yml - secrets: inherit + # build-linux-amd64: + # uses: ./.github/workflows/build-linux-amd64.yml + # secrets: inherit build-linux-arm64: uses: ./.github/workflows/build-linux-arm64.yml From d053fb1efcbfc46c512b5978472563b556260760 Mon Sep 17 00:00:00 2001 From: LizJeong Date: Fri, 12 Jul 2024 17:58:05 +0900 Subject: [PATCH 17/75] Update build-linux-arm64.yml --- .github/workflows/build-linux-arm64.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-linux-arm64.yml b/.github/workflows/build-linux-arm64.yml index 8803c297..254af770 100644 --- a/.github/workflows/build-linux-arm64.yml +++ b/.github/workflows/build-linux-arm64.yml @@ -19,8 +19,8 @@ jobs: bind_mount_repository: true commands: | apt-get update - apt-get install -y golang-1.22 make file - export PATH=$PATH:/usr/lib/go-1.22/bin + apt-get install -y golang-1.22.4 make file + export PATH=$PATH:/usr/lib/go-1.22.4/bin echo "Building for GOARCH=arm64" GOARCH=arm64 make build-linux-with-shared-library cd ./build From 0509a3a3621f1c2051f3ed72b4452c24ed825a37 Mon Sep 17 00:00:00 2001 From: LizJeong Date: Fri, 12 Jul 2024 18:06:59 +0900 Subject: [PATCH 18/75] Update build-linux-arm64.yml --- .github/workflows/build-linux-arm64.yml | 39 ++++++++++++------------- 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/.github/workflows/build-linux-arm64.yml b/.github/workflows/build-linux-arm64.yml index 254af770..8e2ff1ce 100644 --- a/.github/workflows/build-linux-arm64.yml +++ b/.github/workflows/build-linux-arm64.yml @@ -10,28 +10,25 @@ jobs: - name: Checkout code uses: actions/checkout@v3 - - name: ARM Runner - uses: pguyot/arm-runner-action@v2 + - name: Set up ARM Runner + uses: pguyot/arm-runner-action@v1.1.0 with: - base_image: raspios_lite_arm64:latest - cpu: cortex-a53 - cpu_info: cpuinfo/raspberrypi_zero2_w - bind_mount_repository: true - commands: | - apt-get update - apt-get install -y golang-1.22.4 make file - export PATH=$PATH:/usr/lib/go-1.22.4/bin - echo "Building for GOARCH=arm64" - GOARCH=arm64 make build-linux-with-shared-library - cd ./build - mkdir -p initia_${GITHUB_REF#refs/tags/} - mv libmovevm.so initia_${GITHUB_REF#refs/tags/}/libmovevm.arm64.so - mv libcompiler.so initia_${GITHUB_REF#refs/tags/}/libcompiler.arm64.so - mv initiad initia_${GITHUB_REF#refs/tags/}/ - tar -czvf initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz initia_${GITHUB_REF#refs/tags/} - file ./initia_${GITHUB_REF#refs/tags/}/initiad - file ./initia_${GITHUB_REF#refs/tags/}/libmovevm.arm64.so - file ./initia_${GITHUB_REF#refs/tags/}/libcompiler.arm64.so + architecture: arm64 + + - name: Set up Go + uses: actions/setup-go@v4 + with: + go-version: '1.22.4' + + - name: Build for Linux ARM64 + run: | + make build-linux-with-shared-library + cd ./build + mkdir -p initia_${GITHUB_REF#refs/tags/} + mv libmovevm.so initia_${GITHUB_REF#refs/tags/}/libmovevm.arm64.so + mv libcompiler.so initia_${GITHUB_REF#refs/tags/}/libcompiler.arm64.so + mv initiad initia_${GITHUB_REF#refs/tags/}/ + tar -czvf initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz initia_${GITHUB_REF#refs/tags/} - name: Google Auth uses: 'google-github-actions/auth@v2' From 3315081929944f1bae89a09ba2f625b417683526 Mon Sep 17 00:00:00 2001 From: LizJeong Date: Fri, 12 Jul 2024 18:08:19 +0900 Subject: [PATCH 19/75] Update build-linux-arm64.yml --- .github/workflows/build-linux-arm64.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-linux-arm64.yml b/.github/workflows/build-linux-arm64.yml index 8e2ff1ce..16d4e16c 100644 --- a/.github/workflows/build-linux-arm64.yml +++ b/.github/workflows/build-linux-arm64.yml @@ -11,7 +11,7 @@ jobs: uses: actions/checkout@v3 - name: Set up ARM Runner - uses: pguyot/arm-runner-action@v1.1.0 + uses: pguyot/arm-runner-action@v2 with: architecture: arm64 From b47993c04c56a2d0f0f9f7b53e4f689d7dd71ddf Mon Sep 17 00:00:00 2001 From: LizJeong Date: Fri, 12 Jul 2024 18:13:20 +0900 Subject: [PATCH 20/75] Update build-linux-arm64.yml --- .github/workflows/build-linux-arm64.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-linux-arm64.yml b/.github/workflows/build-linux-arm64.yml index 16d4e16c..8a5728ef 100644 --- a/.github/workflows/build-linux-arm64.yml +++ b/.github/workflows/build-linux-arm64.yml @@ -22,13 +22,19 @@ jobs: - name: Build for Linux ARM64 run: | - make build-linux-with-shared-library + docker build --platform linux/arm64 --tag initia/initiad-shared ./ -f ./shared.Dockerfile cd ./build mkdir -p initia_${GITHUB_REF#refs/tags/} mv libmovevm.so initia_${GITHUB_REF#refs/tags/}/libmovevm.arm64.so mv libcompiler.so initia_${GITHUB_REF#refs/tags/}/libcompiler.arm64.so mv initiad initia_${GITHUB_REF#refs/tags/}/ tar -czvf initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz initia_${GITHUB_REF#refs/tags/} + + - name: Verify binary architecture + run: | + file ./build/initia_${GITHUB_REF#refs/tags/}/initiad + file ./build/initia_${GITHUB_REF#refs/tags/}/libmovevm.amd64.so + file ./build/initia_${GITHUB_REF#refs/tags/}/libcompiler.amd64.so - name: Google Auth uses: 'google-github-actions/auth@v2' From dc9b12e84919e71451efa2b82d9c868f495a65ef Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 11:21:19 +0900 Subject: [PATCH 21/75] Update build-linux-arm64.yml --- .github/workflows/build-linux-arm64.yml | 56 ++++++++++++++----------- 1 file changed, 32 insertions(+), 24 deletions(-) diff --git a/.github/workflows/build-linux-arm64.yml b/.github/workflows/build-linux-arm64.yml index 8a5728ef..c885e5c5 100644 --- a/.github/workflows/build-linux-arm64.yml +++ b/.github/workflows/build-linux-arm64.yml @@ -1,55 +1,63 @@ name: Build Linux ARM64 - on: workflow_call: - jobs: build: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v3 - - - name: Set up ARM Runner - uses: pguyot/arm-runner-action@v2 - with: - architecture: arm64 - + - name: Set up Go uses: actions/setup-go@v4 with: go-version: '1.22.4' - + - name: Build for Linux ARM64 + uses: uraimo/run-on-arch-action@v2 + with: + arch: aarch64 + distro: ubuntu22.04 + githubToken: ${{ secrets.GITHUB_TOKEN }} + install: | + apt-get update + apt-get install -y make gcc + run: | + echo "Building for GOARCH=arm64" + export GOARCH=arm64 + export CGO_ENABLED=1 + make build-linux-with-shared-library GOARCH=arm64 + cd ./build + mkdir -p initia_${GITHUB_REF#refs/tags/} + mv libmovevm.so initia_${GITHUB_REF#refs/tags/}/libmovevm.arm64.so + mv libcompiler.so initia_${GITHUB_REF#refs/tags/}/libcompiler.arm64.so + mv initiad initia_${GITHUB_REF#refs/tags/}/ + tar -czvf initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz initia_${GITHUB_REF#refs/tags/} + + - name: Move artifacts run: | - docker build --platform linux/arm64 --tag initia/initiad-shared ./ -f ./shared.Dockerfile - cd ./build - mkdir -p initia_${GITHUB_REF#refs/tags/} - mv libmovevm.so initia_${GITHUB_REF#refs/tags/}/libmovevm.arm64.so - mv libcompiler.so initia_${GITHUB_REF#refs/tags/}/libcompiler.arm64.so - mv initiad initia_${GITHUB_REF#refs/tags/}/ - tar -czvf initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz initia_${GITHUB_REF#refs/tags/} - + mkdir -p ./artifacts + mv ./build/initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz ./artifacts/ + - name: Verify binary architecture run: | - file ./build/initia_${GITHUB_REF#refs/tags/}/initiad - file ./build/initia_${GITHUB_REF#refs/tags/}/libmovevm.amd64.so - file ./build/initia_${GITHUB_REF#refs/tags/}/libcompiler.amd64.so + file ./artifacts/initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz + tar -tvf ./artifacts/initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz - name: Google Auth uses: 'google-github-actions/auth@v2' with: credentials_json: '${{ secrets.GCP_SA_KEY }}' - + - name: Set up Cloud SDK uses: 'google-github-actions/setup-gcloud@v2' - + - name: Upload to GCS env: GCS_BUCKET: ${{ secrets.GCS_BUCKET }} run: | - gsutil cp ./build/initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags/}/ - + gsutil cp ./artifacts/initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags/}/ + - name: Verify upload and Generate public URL env: GCS_BUCKET: ${{ secrets.GCS_BUCKET }} From f7cd13f1a3e171ebecf92d65927b58008998d8b6 Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 11:27:06 +0900 Subject: [PATCH 22/75] Update build-linux-arm64.yml --- .github/workflows/build-linux-arm64.yml | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build-linux-arm64.yml b/.github/workflows/build-linux-arm64.yml index c885e5c5..ae85d284 100644 --- a/.github/workflows/build-linux-arm64.yml +++ b/.github/workflows/build-linux-arm64.yml @@ -8,11 +8,6 @@ jobs: - name: Checkout code uses: actions/checkout@v3 - - name: Set up Go - uses: actions/setup-go@v4 - with: - go-version: '1.22.4' - - name: Build for Linux ARM64 uses: uraimo/run-on-arch-action@v2 with: @@ -21,11 +16,18 @@ jobs: githubToken: ${{ secrets.GITHUB_TOKEN }} install: | apt-get update - apt-get install -y make gcc + apt-get install -y make gcc git curl + curl -OL https://go.dev/dl/go1.22.4.linux-arm64.tar.gz + tar -C /usr/local -xzf go1.22.4.linux-arm64.tar.gz + echo 'export PATH=$PATH:/usr/local/go/bin' >> $HOME/.profile + echo 'export PATH=$PATH:/usr/local/go/bin' >> $HOME/.bashrc + source $HOME/.profile run: | echo "Building for GOARCH=arm64" export GOARCH=arm64 export CGO_ENABLED=1 + export PATH=$PATH:/usr/local/go/bin + go version make build-linux-with-shared-library GOARCH=arm64 cd ./build mkdir -p initia_${GITHUB_REF#refs/tags/} @@ -33,7 +35,7 @@ jobs: mv libcompiler.so initia_${GITHUB_REF#refs/tags/}/libcompiler.arm64.so mv initiad initia_${GITHUB_REF#refs/tags/}/ tar -czvf initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz initia_${GITHUB_REF#refs/tags/} - + - name: Move artifacts run: | mkdir -p ./artifacts From 2096b299c6618bc9cae0af3e5c34c56010d44ffe Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 11:34:57 +0900 Subject: [PATCH 23/75] Update build-linux-arm64.yml --- .github/workflows/build-linux-arm64.yml | 131 ++++++++++++++++-------- 1 file changed, 90 insertions(+), 41 deletions(-) diff --git a/.github/workflows/build-linux-arm64.yml b/.github/workflows/build-linux-arm64.yml index ae85d284..5d4bd247 100644 --- a/.github/workflows/build-linux-arm64.yml +++ b/.github/workflows/build-linux-arm64.yml @@ -1,72 +1,121 @@ -name: Build Linux ARM64 +name: Build Linux Binaries + on: workflow_call: + jobs: - build: + build-amd64: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Set up Go + uses: actions/setup-go@v4 + with: + go-version: '1.22.4' + + - name: Build for Linux AMD64 + env: + GOARCH: amd64 + run: | + echo "Building for GOARCH=amd64" + make build-linux-with-shared-library GOARCH=amd64 + cd ./build + mkdir -p initia_${GITHUB_REF#refs/tags/} + mv libmovevm.so initia_${GITHUB_REF#refs/tags/}/libmovevm.amd64.so + mv libcompiler.so initia_${GITHUB_REF#refs/tags/}/libcompiler.amd64.so + mv initiad initia_${GITHUB_REF#refs/tags/}/ + tar -czvf initia_${GITHUB_REF#refs/tags/}_Linux_amd64.tar.gz initia_${GITHUB_REF#refs/tags/} + + - name: Verify binary architecture + run: | + file ./build/initia_${GITHUB_REF#refs/tags/}/initiad + file ./build/initia_${GITHUB_REF#refs/tags/}/libmovevm.amd64.so + file ./build/initia_${GITHUB_REF#refs/tags/}/libcompiler.amd64.so + + - name: Google Auth + uses: 'google-github-actions/auth@v2' + with: + credentials_json: '${{ secrets.GCP_SA_KEY }}' + + - name: Set up Cloud SDK + uses: 'google-github-actions/setup-gcloud@v2' + + - name: Upload to GCS + env: + GCS_BUCKET: ${{ secrets.GCS_BUCKET }} + run: | + gsutil cp ./build/initia_${GITHUB_REF#refs/tags/}_Linux_amd64.tar.gz gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags/}/ + + - name: Verify upload and Generate public URL + env: + GCS_BUCKET: ${{ secrets.GCS_BUCKET }} + run: | + if gsutil stat gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags/}/initia_${GITHUB_REF#refs/tags/}_Linux_amd64.tar.gz; then + echo "File successfully uploaded" + echo "Public URL: https://storage.googleapis.com/${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags/}/initia_${GITHUB_REF#refs/tags/}_Linux_amd64.tar.gz" >> $GITHUB_STEP_SUMMARY + else + echo "File upload failed" + exit 1 + fi + + build-arm: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v3 - - - name: Build for Linux ARM64 - uses: uraimo/run-on-arch-action@v2 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + with: + platforms: arm + + - name: Set up Go + uses: actions/setup-go@v4 with: - arch: aarch64 - distro: ubuntu22.04 - githubToken: ${{ secrets.GITHUB_TOKEN }} - install: | - apt-get update - apt-get install -y make gcc git curl - curl -OL https://go.dev/dl/go1.22.4.linux-arm64.tar.gz - tar -C /usr/local -xzf go1.22.4.linux-arm64.tar.gz - echo 'export PATH=$PATH:/usr/local/go/bin' >> $HOME/.profile - echo 'export PATH=$PATH:/usr/local/go/bin' >> $HOME/.bashrc - source $HOME/.profile - run: | - echo "Building for GOARCH=arm64" - export GOARCH=arm64 - export CGO_ENABLED=1 - export PATH=$PATH:/usr/local/go/bin - go version - make build-linux-with-shared-library GOARCH=arm64 - cd ./build - mkdir -p initia_${GITHUB_REF#refs/tags/} - mv libmovevm.so initia_${GITHUB_REF#refs/tags/}/libmovevm.arm64.so - mv libcompiler.so initia_${GITHUB_REF#refs/tags/}/libcompiler.arm64.so - mv initiad initia_${GITHUB_REF#refs/tags/}/ - tar -czvf initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz initia_${GITHUB_REF#refs/tags/} - - - name: Move artifacts + go-version: '1.22.4' + + - name: Build for Linux ARM + env: + GOARCH: arm run: | - mkdir -p ./artifacts - mv ./build/initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz ./artifacts/ + echo "Building for GOARCH=arm" + make build-linux-with-shared-library GOARCH=arm + cd ./build + mkdir -p initia_${GITHUB_REF#refs/tags/} + mv libmovevm.so initia_${GITHUB_REF#refs/tags/}/libmovevm.arm.so + mv libcompiler.so initia_${GITHUB_REF#refs/tags/}/libcompiler.arm.so + mv initiad initia_${GITHUB_REF#refs/tags/}/ + tar -czvf initia_${GITHUB_REF#refs/tags/}_Linux_arm.tar.gz initia_${GITHUB_REF#refs/tags/} - name: Verify binary architecture run: | - file ./artifacts/initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz - tar -tvf ./artifacts/initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz + file ./build/initia_${GITHUB_REF#refs/tags/}/initiad + file ./build/initia_${GITHUB_REF#refs/tags/}/libmovevm.arm.so + file ./build/initia_${GITHUB_REF#refs/tags/}/libcompiler.arm.so - name: Google Auth uses: 'google-github-actions/auth@v2' with: credentials_json: '${{ secrets.GCP_SA_KEY }}' - + - name: Set up Cloud SDK uses: 'google-github-actions/setup-gcloud@v2' - + - name: Upload to GCS env: GCS_BUCKET: ${{ secrets.GCS_BUCKET }} run: | - gsutil cp ./artifacts/initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags/}/ - + gsutil cp ./build/initia_${GITHUB_REF#refs/tags/}_Linux_arm.tar.gz gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags/}/ + - name: Verify upload and Generate public URL env: GCS_BUCKET: ${{ secrets.GCS_BUCKET }} run: | - if gsutil stat gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags/}/initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz; then + if gsutil stat gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags/}/initia_${GITHUB_REF#refs/tags/}_Linux_arm.tar.gz; then echo "File successfully uploaded" - echo "Public URL: https://storage.googleapis.com/${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags/}/initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz" >> $GITHUB_STEP_SUMMARY + echo "Public URL: https://storage.googleapis.com/${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags/}/initia_${GITHUB_REF#refs/tags/}_Linux_arm.tar.gz" >> $GITHUB_STEP_SUMMARY else echo "File upload failed" exit 1 From 7eeba43729a0b60b59bc0078c730e1ed199bbaa2 Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 11:44:05 +0900 Subject: [PATCH 24/75] Update build-linux-arm64.yml --- .github/workflows/build-linux-arm64.yml | 28 +++++++++++++++---------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/.github/workflows/build-linux-arm64.yml b/.github/workflows/build-linux-arm64.yml index 5d4bd247..1012ca57 100644 --- a/.github/workflows/build-linux-arm64.yml +++ b/.github/workflows/build-linux-arm64.yml @@ -62,6 +62,7 @@ jobs: build-arm: runs-on: ubuntu-latest + timeout-minutes: 60 steps: - name: Checkout code uses: actions/checkout@v3 @@ -76,24 +77,29 @@ jobs: with: go-version: '1.22.4' + - name: Install ARM dependencies + run: | + sudo apt-get update + sudo apt-get install -y gcc-aarch64-linux-gnu + - name: Build for Linux ARM env: - GOARCH: arm + GOARCH: arm64 run: | - echo "Building for GOARCH=arm" - make build-linux-with-shared-library GOARCH=arm + echo "Building for GOARCH=arm64" + CGO_ENABLED=1 CC=aarch64-linux-gnu-gcc GOARCH=arm64 go build -o build/initiad ./cmd/initiad cd ./build mkdir -p initia_${GITHUB_REF#refs/tags/} - mv libmovevm.so initia_${GITHUB_REF#refs/tags/}/libmovevm.arm.so - mv libcompiler.so initia_${GITHUB_REF#refs/tags/}/libcompiler.arm.so + mv libmovevm.so initia_${GITHUB_REF#refs/tags/}/libmovevm.arm64.so + mv libcompiler.so initia_${GITHUB_REF#refs/tags/}/libcompiler.arm64.so mv initiad initia_${GITHUB_REF#refs/tags/}/ - tar -czvf initia_${GITHUB_REF#refs/tags/}_Linux_arm.tar.gz initia_${GITHUB_REF#refs/tags/} + tar -czvf initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz initia_${GITHUB_REF#refs/tags/} - name: Verify binary architecture run: | file ./build/initia_${GITHUB_REF#refs/tags/}/initiad - file ./build/initia_${GITHUB_REF#refs/tags/}/libmovevm.arm.so - file ./build/initia_${GITHUB_REF#refs/tags/}/libcompiler.arm.so + file ./build/initia_${GITHUB_REF#refs/tags/}/libmovevm.arm64.so + file ./build/initia_${GITHUB_REF#refs/tags/}/libcompiler.arm64.so - name: Google Auth uses: 'google-github-actions/auth@v2' @@ -107,15 +113,15 @@ jobs: env: GCS_BUCKET: ${{ secrets.GCS_BUCKET }} run: | - gsutil cp ./build/initia_${GITHUB_REF#refs/tags/}_Linux_arm.tar.gz gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags/}/ + gsutil cp ./build/initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags/}/ - name: Verify upload and Generate public URL env: GCS_BUCKET: ${{ secrets.GCS_BUCKET }} run: | - if gsutil stat gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags/}/initia_${GITHUB_REF#refs/tags/}_Linux_arm.tar.gz; then + if gsutil stat gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags/}/initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz; then echo "File successfully uploaded" - echo "Public URL: https://storage.googleapis.com/${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags/}/initia_${GITHUB_REF#refs/tags/}_Linux_arm.tar.gz" >> $GITHUB_STEP_SUMMARY + echo "Public URL: https://storage.googleapis.com/${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags/}/initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz" >> $GITHUB_STEP_SUMMARY else echo "File upload failed" exit 1 From 3dc938d8618ae95ffdc79dca41ea4623947818ab Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 11:51:30 +0900 Subject: [PATCH 25/75] Update build-linux-arm64.yml --- .github/workflows/build-linux-arm64.yml | 112 +++++++----------------- 1 file changed, 34 insertions(+), 78 deletions(-) diff --git a/.github/workflows/build-linux-arm64.yml b/.github/workflows/build-linux-arm64.yml index 1012ca57..2b3e6136 100644 --- a/.github/workflows/build-linux-arm64.yml +++ b/.github/workflows/build-linux-arm64.yml @@ -1,105 +1,61 @@ -name: Build Linux Binaries +name: Build and Push Multi-Platform Binaries on: workflow_call: jobs: - build-amd64: + build: runs-on: ubuntu-latest + timeout-minutes: 60 steps: - name: Checkout code uses: actions/checkout@v3 - - name: Set up Go - uses: actions/setup-go@v4 - with: - go-version: '1.22.4' - - - name: Build for Linux AMD64 - env: - GOARCH: amd64 - run: | - echo "Building for GOARCH=amd64" - make build-linux-with-shared-library GOARCH=amd64 - cd ./build - mkdir -p initia_${GITHUB_REF#refs/tags/} - mv libmovevm.so initia_${GITHUB_REF#refs/tags/}/libmovevm.amd64.so - mv libcompiler.so initia_${GITHUB_REF#refs/tags/}/libcompiler.amd64.so - mv initiad initia_${GITHUB_REF#refs/tags/}/ - tar -czvf initia_${GITHUB_REF#refs/tags/}_Linux_amd64.tar.gz initia_${GITHUB_REF#refs/tags/} + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 - - name: Verify binary architecture - run: | - file ./build/initia_${GITHUB_REF#refs/tags/}/initiad - file ./build/initia_${GITHUB_REF#refs/tags/}/libmovevm.amd64.so - file ./build/initia_${GITHUB_REF#refs/tags/}/libcompiler.amd64.so + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 - - name: Google Auth - uses: 'google-github-actions/auth@v2' + - name: Log in to DockerHub + uses: docker/login-action@v2 with: - credentials_json: '${{ secrets.GCP_SA_KEY }}' - - - name: Set up Cloud SDK - uses: 'google-github-actions/setup-gcloud@v2' + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} - - name: Upload to GCS - env: - GCS_BUCKET: ${{ secrets.GCS_BUCKET }} + - name: Build and Push Multi-Platform Image run: | - gsutil cp ./build/initia_${GITHUB_REF#refs/tags/}_Linux_amd64.tar.gz gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags/}/ + docker buildx build \ + --platform linux/amd64,linux/arm64 \ + --output "type=local,dest=./build" \ + --progress plain \ + . - - name: Verify upload and Generate public URL - env: - GCS_BUCKET: ${{ secrets.GCS_BUCKET }} + - name: List output files run: | - if gsutil stat gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags/}/initia_${GITHUB_REF#refs/tags/}_Linux_amd64.tar.gz; then - echo "File successfully uploaded" - echo "Public URL: https://storage.googleapis.com/${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags/}/initia_${GITHUB_REF#refs/tags/}_Linux_amd64.tar.gz" >> $GITHUB_STEP_SUMMARY - else - echo "File upload failed" - exit 1 - fi - - build-arm: - runs-on: ubuntu-latest - timeout-minutes: 60 - steps: - - name: Checkout code - uses: actions/checkout@v3 - - - name: Set up QEMU - uses: docker/setup-qemu-action@v2 - with: - platforms: arm + ls -al ./build + file ./build/initiad - - name: Set up Go - uses: actions/setup-go@v4 - with: - go-version: '1.22.4' + - name: Create output directories + run: | + mkdir -p ./build/initia_${GITHUB_REF#refs/tags/} - - name: Install ARM dependencies + - name: Move binaries to output directory run: | - sudo apt-get update - sudo apt-get install -y gcc-aarch64-linux-gnu + mv ./build/initiad ./build/initia_${GITHUB_REF#refs/tags/}/initiad + mv ./build/libmovevm.so ./build/initia_${GITHUB_REF#refs/tags/}/libmovevm.so || true + mv ./build/libcompiler.so ./build/initia_${GITHUB_REF#refs/tags/}/libcompiler.so || true - - name: Build for Linux ARM - env: - GOARCH: arm64 + - name: Create tarball run: | - echo "Building for GOARCH=arm64" - CGO_ENABLED=1 CC=aarch64-linux-gnu-gcc GOARCH=arm64 go build -o build/initiad ./cmd/initiad cd ./build - mkdir -p initia_${GITHUB_REF#refs/tags/} - mv libmovevm.so initia_${GITHUB_REF#refs/tags/}/libmovevm.arm64.so - mv libcompiler.so initia_${GITHUB_REF#refs/tags/}/libcompiler.arm64.so - mv initiad initia_${GITHUB_REF#refs/tags/}/ - tar -czvf initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz initia_${GITHUB_REF#refs/tags/} + tar -czvf initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz initia_${GITHUB_REF#refs/tags}/ - name: Verify binary architecture run: | file ./build/initia_${GITHUB_REF#refs/tags/}/initiad - file ./build/initia_${GITHUB_REF#refs/tags/}/libmovevm.arm64.so - file ./build/initia_${GITHUB_REF#refs/tags/}/libcompiler.arm64.so + file ./build/initia_${GITHUB_REF#refs/tags/}/libmovevm.so || true + file ./build/initia_${GITHUB_REF#refs/tags/}/libcompiler.so || true - name: Google Auth uses: 'google-github-actions/auth@v2' @@ -113,15 +69,15 @@ jobs: env: GCS_BUCKET: ${{ secrets.GCS_BUCKET }} run: | - gsutil cp ./build/initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags/}/ + gsutil cp ./build/initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/ - name: Verify upload and Generate public URL env: GCS_BUCKET: ${{ secrets.GCS_BUCKET }} run: | - if gsutil stat gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags/}/initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz; then + if gsutil stat gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/initia_${GITHUB_REF#refs/tags}_Linux_arm64.tar.gz; then echo "File successfully uploaded" - echo "Public URL: https://storage.googleapis.com/${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags/}/initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz" >> $GITHUB_STEP_SUMMARY + echo "Public URL: https://storage.googleapis.com/${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/initia_${GITHUB_REF#refs/tags}_Linux_arm64.tar.gz" >> $GITHUB_STEP_SUMMARY else echo "File upload failed" exit 1 From 7b53f19b3f070f31a0532060187ebf443c171810 Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 11:54:35 +0900 Subject: [PATCH 26/75] Update build-linux-arm64.yml --- .github/workflows/build-linux-arm64.yml | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/.github/workflows/build-linux-arm64.yml b/.github/workflows/build-linux-arm64.yml index 2b3e6136..645553dd 100644 --- a/.github/workflows/build-linux-arm64.yml +++ b/.github/workflows/build-linux-arm64.yml @@ -1,4 +1,4 @@ -name: Build and Push Multi-Platform Binaries +name: Build and Upload Multi-Platform Binaries on: workflow_call: @@ -17,13 +17,7 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 - - name: Log in to DockerHub - uses: docker/login-action@v2 - with: - username: ${{ secrets.DOCKER_USERNAME }} - password: ${{ secrets.DOCKER_PASSWORD }} - - - name: Build and Push Multi-Platform Image + - name: Build Multi-Platform Binaries run: | docker buildx build \ --platform linux/amd64,linux/arm64 \ @@ -34,7 +28,7 @@ jobs: - name: List output files run: | ls -al ./build - file ./build/initiad + file ./build/initiad || true - name: Create output directories run: | @@ -42,7 +36,7 @@ jobs: - name: Move binaries to output directory run: | - mv ./build/initiad ./build/initia_${GITHUB_REF#refs/tags/}/initiad + mv ./build/initiad ./build/initia_${GITHUB_REF#refs/tags/}/initiad || true mv ./build/libmovevm.so ./build/initia_${GITHUB_REF#refs/tags/}/libmovevm.so || true mv ./build/libcompiler.so ./build/initia_${GITHUB_REF#refs/tags/}/libcompiler.so || true @@ -53,7 +47,7 @@ jobs: - name: Verify binary architecture run: | - file ./build/initia_${GITHUB_REF#refs/tags/}/initiad + file ./build/initia_${GITHUB_REF#refs/tags/}/initiad || true file ./build/initia_${GITHUB_REF#refs/tags/}/libmovevm.so || true file ./build/initia_${GITHUB_REF#refs/tags/}/libcompiler.so || true From ac5eac905aed950792a66ff7465ae47a6accf037 Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 12:06:38 +0900 Subject: [PATCH 27/75] Update build-linux-arm64.yml --- .github/workflows/build-linux-arm64.yml | 46 ++++++++++++++++--------- 1 file changed, 30 insertions(+), 16 deletions(-) diff --git a/.github/workflows/build-linux-arm64.yml b/.github/workflows/build-linux-arm64.yml index 645553dd..db2aa9b1 100644 --- a/.github/workflows/build-linux-arm64.yml +++ b/.github/workflows/build-linux-arm64.yml @@ -5,7 +5,7 @@ on: jobs: build: - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 timeout-minutes: 60 steps: - name: Checkout code @@ -19,37 +19,43 @@ jobs: - name: Build Multi-Platform Binaries run: | + docker buildx create --use docker buildx build \ --platform linux/amd64,linux/arm64 \ --output "type=local,dest=./build" \ --progress plain \ . - - - name: List output files - run: | - ls -al ./build - file ./build/initiad || true + echo "Multi-platform build completed" + ls -al build/ - name: Create output directories run: | - mkdir -p ./build/initia_${GITHUB_REF#refs/tags/} + mkdir -p ./build/initia_${GITHUB_REF#refs/tags/}_amd64 + mkdir -p ./build/initia_${GITHUB_REF#refs/tags/}_arm64 - - name: Move binaries to output directory + - name: Move binaries to output directories run: | - mv ./build/initiad ./build/initia_${GITHUB_REF#refs/tags/}/initiad || true - mv ./build/libmovevm.so ./build/initia_${GITHUB_REF#refs/tags/}/libmovevm.so || true - mv ./build/libcompiler.so ./build/initia_${GITHUB_REF#refs/tags/}/libcompiler.so || true + mv ./build/initiad ./build/initia_${GITHUB_REF#refs/tags/}_amd64/initiad || true + mv ./build/libmovevm.so ./build/initia_${GITHUB_REF#refs/tags/}_amd64/libmovevm.so || true + mv ./build/libcompiler.so ./build/initia_${GITHUB_REF#refs/tags/}_amd64/libcompiler.so || true + mv ./build/initiad ./build/initia_${GITHUB_REF#refs/tags/}_arm64/initiad || true + mv ./build/libmovevm.so ./build/initia_${GITHUB_REF#refs/tags/}_arm64/libmovevm.so || true + mv ./build/libcompiler.so ./build/initia_${GITHUB_REF#refs/tags/}_arm64/libcompiler.so || true - - name: Create tarball + - name: Create tarballs run: | cd ./build - tar -czvf initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz initia_${GITHUB_REF#refs/tags}/ + tar -czvf initia_${GITHUB_REF#refs/tags/}_Linux_amd64.tar.gz initia_${GITHUB_REF#refs/tags/}_amd64 + tar -czvf initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz initia_${GITHUB_REF#refs/tags/}_arm64 - name: Verify binary architecture run: | - file ./build/initia_${GITHUB_REF#refs/tags/}/initiad || true - file ./build/initia_${GITHUB_REF#refs/tags/}/libmovevm.so || true - file ./build/initia_${GITHUB_REF#refs/tags/}/libcompiler.so || true + file ./build/initia_${GITHUB_REF#refs/tags/}_amd64/initiad || true + file ./build/initia_${GITHUB_REF#refs/tags/}_amd64/libmovevm.so || true + file ./build/initia_${GITHUB_REF#refs/tags/}_amd64/libcompiler.so || true + file ./build/initia_${GITHUB_REF#refs/tags/}_arm64/initiad || true + file ./build/initia_${GITHUB_REF#refs/tags/}_arm64/libmovevm.so || true + file ./build/initia_${GITHUB_REF#refs/tags/}_arm64/libcompiler.so || true - name: Google Auth uses: 'google-github-actions/auth@v2' @@ -63,12 +69,20 @@ jobs: env: GCS_BUCKET: ${{ secrets.GCS_BUCKET }} run: | + gsutil cp ./build/initia_${GITHUB_REF#refs/tags/}_Linux_amd64.tar.gz gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/ gsutil cp ./build/initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/ - name: Verify upload and Generate public URL env: GCS_BUCKET: ${{ secrets.GCS_BUCKET }} run: | + if gsutil stat gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/initia_${GITHUB_REF#refs/tags}_Linux_amd64.tar.gz; then + echo "File successfully uploaded" + echo "Public URL: https://storage.googleapis.com/${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/initia_${GITHUB_REF#refs/tags}_Linux_amd64.tar.gz" >> $GITHUB_STEP_SUMMARY + else + echo "File upload failed" + exit 1 + fi if gsutil stat gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/initia_${GITHUB_REF#refs/tags}_Linux_arm64.tar.gz; then echo "File successfully uploaded" echo "Public URL: https://storage.googleapis.com/${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/initia_${GITHUB_REF#refs/tags}_Linux_arm64.tar.gz" >> $GITHUB_STEP_SUMMARY From 46acd57ec3ccd03937dba850c823c19e278d875d Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 12:17:31 +0900 Subject: [PATCH 28/75] Update build-linux-arm64.yml --- .github/workflows/build-linux-arm64.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/.github/workflows/build-linux-arm64.yml b/.github/workflows/build-linux-arm64.yml index db2aa9b1..742c478c 100644 --- a/.github/workflows/build-linux-arm64.yml +++ b/.github/workflows/build-linux-arm64.yml @@ -17,6 +17,21 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 + - name: Cache Go modules + uses: actions/cache@v3 + with: + path: | + ~/.cache/go-build + /go/pkg/mod + key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} + restore-keys: | + ${{ runner.os }}-go- + + - name: Set up Go + uses: actions/setup-go@v4 + with: + go-version: '1.22.4' + - name: Build Multi-Platform Binaries run: | docker buildx create --use From ff6dc71950b0fe240ae70ca833110abef2037bbd Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 12:31:24 +0900 Subject: [PATCH 29/75] Update build-linux-arm64.yml --- .github/workflows/build-linux-arm64.yml | 52 ++++++++++++++++--------- 1 file changed, 34 insertions(+), 18 deletions(-) diff --git a/.github/workflows/build-linux-arm64.yml b/.github/workflows/build-linux-arm64.yml index 742c478c..f7434b77 100644 --- a/.github/workflows/build-linux-arm64.yml +++ b/.github/workflows/build-linux-arm64.yml @@ -5,7 +5,7 @@ on: jobs: build: - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest timeout-minutes: 60 steps: - name: Checkout code @@ -36,7 +36,7 @@ jobs: run: | docker buildx create --use docker buildx build \ - --platform linux/amd64,linux/arm64 \ + --platform linux/amd64,linux/arm64,windows/amd64,windows/arm64 \ --output "type=local,dest=./build" \ --progress plain \ . @@ -45,32 +45,32 @@ jobs: - name: Create output directories run: | - mkdir -p ./build/initia_${GITHUB_REF#refs/tags/}_amd64 - mkdir -p ./build/initia_${GITHUB_REF#refs/tags/}_arm64 + mkdir -p ./build/linux_amd64 + mkdir -p ./build/linux_arm64 + mkdir -p ./build/windows_amd64 + mkdir -p ./build/windows_arm64 - name: Move binaries to output directories run: | - mv ./build/initiad ./build/initia_${GITHUB_REF#refs/tags/}_amd64/initiad || true - mv ./build/libmovevm.so ./build/initia_${GITHUB_REF#refs/tags/}_amd64/libmovevm.so || true - mv ./build/libcompiler.so ./build/initia_${GITHUB_REF#refs/tags/}_amd64/libcompiler.so || true - mv ./build/initiad ./build/initia_${GITHUB_REF#refs/tags/}_arm64/initiad || true - mv ./build/libmovevm.so ./build/initia_${GITHUB_REF#refs/tags/}_arm64/libmovevm.so || true - mv ./build/libcompiler.so ./build/initia_${GITHUB_REF#refs/tags/}_arm64/libcompiler.so || true + mv ./build/linux_amd64/initiad ./build/initia_${GITHUB_REF#refs/tags/}/initiad || true + mv ./build/linux_arm64/initiad ./build/initia_${GITHUB_REF#refs/tags/}/initiad || true + mv ./build/windows_amd64/initiad.exe ./build/initia_${GITHUB_REF#refs/tags/}/initiad.exe || true + mv ./build/windows_arm64/initiad.exe ./build/initia_${GITHUB_REF#refs/tags/}/initiad.exe || true - name: Create tarballs run: | cd ./build - tar -czvf initia_${GITHUB_REF#refs/tags/}_Linux_amd64.tar.gz initia_${GITHUB_REF#refs/tags/}_amd64 - tar -czvf initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz initia_${GITHUB_REF#refs/tags/}_arm64 + tar -czvf initia_${GITHUB_REF#refs/tags/}_Linux_amd64.tar.gz linux_amd64 + tar -czvf initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz linux_arm64 + tar -czvf initia_${GITHUB_REF#refs/tags/}_Windows_amd64.tar.gz windows_amd64 + tar -czvf initia_${GITHUB_REF#refs/tags/}_Windows_arm64.tar.gz windows_arm64 - name: Verify binary architecture run: | - file ./build/initia_${GITHUB_REF#refs/tags/}_amd64/initiad || true - file ./build/initia_${GITHUB_REF#refs/tags/}_amd64/libmovevm.so || true - file ./build/initia_${GITHUB_REF#refs/tags/}_amd64/libcompiler.so || true - file ./build/initia_${GITHUB_REF#refs/tags/}_arm64/initiad || true - file ./build/initia_${GITHUB_REF#refs/tags/}_arm64/libmovevm.so || true - file ./build/initia_${GITHUB_REF#refs/tags/}_arm64/libcompiler.so || true + file ./build/linux_amd64/initiad || true + file ./build/linux_arm64/initiad || true + file ./build/windows_amd64/initiad.exe || true + file ./build/windows_arm64/initiad.exe || true - name: Google Auth uses: 'google-github-actions/auth@v2' @@ -86,6 +86,8 @@ jobs: run: | gsutil cp ./build/initia_${GITHUB_REF#refs/tags/}_Linux_amd64.tar.gz gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/ gsutil cp ./build/initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/ + gsutil cp ./build/initia_${GITHUB_REF#refs/tags/}_Windows_amd64.tar.gz gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/ + gsutil cp ./build/initia_${GITHUB_REF#refs/tags/}_Windows_arm64.tar.gz gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/ - name: Verify upload and Generate public URL env: @@ -105,3 +107,17 @@ jobs: echo "File upload failed" exit 1 fi + if gsutil stat gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/initia_${GITHUB_REF#refs/tags}_Windows_amd64.tar.gz; then + echo "File successfully uploaded" + echo "Public URL: https://storage.googleapis.com/${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/initia_${GITHUB_REF#refs/tags}_Windows_amd64.tar.gz" >> $GITHUB_STEP_SUMMARY + else + echo "File upload failed" + exit 1 + fi + if gsutil stat gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/initia_${GITHUB_REF#refs/tags}_Windows_arm64.tar.gz; then + echo "File successfully uploaded" + echo "Public URL: https://storage.googleapis.com/${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/initia_${GITHUB_REF#refs/tags}_Windows_arm64.tar.gz" >> $GITHUB_STEP_SUMMARY + else + echo "File upload failed" + exit 1 + fi From 61621042f2542b3e961df3b4985d53ae8500c7e5 Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 13:10:11 +0900 Subject: [PATCH 30/75] Update build-linux-arm64.yml --- .github/workflows/build-linux-arm64.yml | 32 ++++--------------------- 1 file changed, 5 insertions(+), 27 deletions(-) diff --git a/.github/workflows/build-linux-arm64.yml b/.github/workflows/build-linux-arm64.yml index f7434b77..f3359b48 100644 --- a/.github/workflows/build-linux-arm64.yml +++ b/.github/workflows/build-linux-arm64.yml @@ -36,7 +36,9 @@ jobs: run: | docker buildx create --use docker buildx build \ - --platform linux/amd64,linux/arm64,windows/amd64,windows/arm64 \ + --platform linux/amd64,linux/arm64 \ + --build-arg TARGETOS=linux \ + --build-arg TARGETARCH=amd64,arm64 \ --output "type=local,dest=./build" \ --progress plain \ . @@ -47,30 +49,22 @@ jobs: run: | mkdir -p ./build/linux_amd64 mkdir -p ./build/linux_arm64 - mkdir -p ./build/windows_amd64 - mkdir -p ./build/windows_arm64 - name: Move binaries to output directories run: | - mv ./build/linux_amd64/initiad ./build/initia_${GITHUB_REF#refs/tags/}/initiad || true - mv ./build/linux_arm64/initiad ./build/initia_${GITHUB_REF#refs/tags/}/initiad || true - mv ./build/windows_amd64/initiad.exe ./build/initia_${GITHUB_REF#refs/tags/}/initiad.exe || true - mv ./build/windows_arm64/initiad.exe ./build/initia_${GITHUB_REF#refs/tags/}/initiad.exe || true + mv ./build/linux_amd64/initiad ./build/linux_amd64/initiad || true + mv ./build/linux_arm64/initiad ./build/linux_arm64/initiad || true - name: Create tarballs run: | cd ./build tar -czvf initia_${GITHUB_REF#refs/tags/}_Linux_amd64.tar.gz linux_amd64 tar -czvf initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz linux_arm64 - tar -czvf initia_${GITHUB_REF#refs/tags/}_Windows_amd64.tar.gz windows_amd64 - tar -czvf initia_${GITHUB_REF#refs/tags/}_Windows_arm64.tar.gz windows_arm64 - name: Verify binary architecture run: | file ./build/linux_amd64/initiad || true file ./build/linux_arm64/initiad || true - file ./build/windows_amd64/initiad.exe || true - file ./build/windows_arm64/initiad.exe || true - name: Google Auth uses: 'google-github-actions/auth@v2' @@ -86,8 +80,6 @@ jobs: run: | gsutil cp ./build/initia_${GITHUB_REF#refs/tags/}_Linux_amd64.tar.gz gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/ gsutil cp ./build/initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/ - gsutil cp ./build/initia_${GITHUB_REF#refs/tags/}_Windows_amd64.tar.gz gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/ - gsutil cp ./build/initia_${GITHUB_REF#refs/tags/}_Windows_arm64.tar.gz gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/ - name: Verify upload and Generate public URL env: @@ -107,17 +99,3 @@ jobs: echo "File upload failed" exit 1 fi - if gsutil stat gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/initia_${GITHUB_REF#refs/tags}_Windows_amd64.tar.gz; then - echo "File successfully uploaded" - echo "Public URL: https://storage.googleapis.com/${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/initia_${GITHUB_REF#refs/tags}_Windows_amd64.tar.gz" >> $GITHUB_STEP_SUMMARY - else - echo "File upload failed" - exit 1 - fi - if gsutil stat gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/initia_${GITHUB_REF#refs/tags}_Windows_arm64.tar.gz; then - echo "File successfully uploaded" - echo "Public URL: https://storage.googleapis.com/${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/initia_${GITHUB_REF#refs/tags}_Windows_arm64.tar.gz" >> $GITHUB_STEP_SUMMARY - else - echo "File upload failed" - exit 1 - fi From 72a123b61cf1ab9c0d737a8c752e28df3d5483b5 Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 13:16:22 +0900 Subject: [PATCH 31/75] Update build-linux-arm64.yml --- .github/workflows/build-linux-arm64.yml | 86 +++++++++---------------- 1 file changed, 30 insertions(+), 56 deletions(-) diff --git a/.github/workflows/build-linux-arm64.yml b/.github/workflows/build-linux-arm64.yml index f3359b48..b59925b0 100644 --- a/.github/workflows/build-linux-arm64.yml +++ b/.github/workflows/build-linux-arm64.yml @@ -7,64 +7,41 @@ jobs: build: runs-on: ubuntu-latest timeout-minutes: 60 + strategy: + matrix: + platform: [linux/amd64, linux/arm64, windows/amd64, windows/arm64] + steps: - name: Checkout code uses: actions/checkout@v3 - - name: Set up QEMU - uses: docker/setup-qemu-action@v2 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - - - name: Cache Go modules - uses: actions/cache@v3 - with: - path: | - ~/.cache/go-build - /go/pkg/mod - key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.os }}-go- - - name: Set up Go uses: actions/setup-go@v4 with: go-version: '1.22.4' - - name: Build Multi-Platform Binaries - run: | - docker buildx create --use - docker buildx build \ - --platform linux/amd64,linux/arm64 \ - --build-arg TARGETOS=linux \ - --build-arg TARGETARCH=amd64,arm64 \ - --output "type=local,dest=./build" \ - --progress plain \ - . - echo "Multi-platform build completed" - ls -al build/ - - - name: Create output directories - run: | - mkdir -p ./build/linux_amd64 - mkdir -p ./build/linux_arm64 - - - name: Move binaries to output directories + - name: Build for ${{ matrix.platform }} + env: + GOOS: ${{ matrix.platform.split('/')[0] }} + GOARCH: ${{ matrix.platform.split('/')[1] }} run: | - mv ./build/linux_amd64/initiad ./build/linux_amd64/initiad || true - mv ./build/linux_arm64/initiad ./build/linux_arm64/initiad || true + echo "Building for GOOS=$GOOS and GOARCH=$GOARCH" + mkdir -p build/${GOOS}_${GOARCH} + go build -o build/${GOOS}_${GOARCH}/initiad ./cmd/initiad - name: Create tarballs run: | - cd ./build - tar -czvf initia_${GITHUB_REF#refs/tags/}_Linux_amd64.tar.gz linux_amd64 - tar -czvf initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz linux_arm64 + cd build + for dir in *; do + tar -czvf initia_${GITHUB_REF#refs/tags/}_${dir}.tar.gz ${dir} + done - name: Verify binary architecture run: | file ./build/linux_amd64/initiad || true file ./build/linux_arm64/initiad || true + file ./build/windows_amd64/initiad.exe || true + file ./build/windows_arm64/initiad.exe || true - name: Google Auth uses: 'google-github-actions/auth@v2' @@ -78,24 +55,21 @@ jobs: env: GCS_BUCKET: ${{ secrets.GCS_BUCKET }} run: | - gsutil cp ./build/initia_${GITHUB_REF#refs/tags/}_Linux_amd64.tar.gz gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/ - gsutil cp ./build/initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/ + for file in ./build/*.tar.gz; do + gsutil cp ${file} gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/ + done - name: Verify upload and Generate public URL env: GCS_BUCKET: ${{ secrets.GCS_BUCKET }} run: | - if gsutil stat gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/initia_${GITHUB_REF#refs/tags}_Linux_amd64.tar.gz; then - echo "File successfully uploaded" - echo "Public URL: https://storage.googleapis.com/${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/initia_${GITHUB_REF#refs/tags}_Linux_amd64.tar.gz" >> $GITHUB_STEP_SUMMARY - else - echo "File upload failed" - exit 1 - fi - if gsutil stat gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/initia_${GITHUB_REF#refs/tags}_Linux_arm64.tar.gz; then - echo "File successfully uploaded" - echo "Public URL: https://storage.googleapis.com/${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/initia_${GITHUB_REF#refs/tags}_Linux_arm64.tar.gz" >> $GITHUB_STEP_SUMMARY - else - echo "File upload failed" - exit 1 - fi + for file in ./build/*.tar.gz; do + basename=$(basename ${file}) + if gsutil stat gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/${basename}; then + echo "File successfully uploaded" + echo "Public URL: https://storage.googleapis.com/${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/${basename}" >> $GITHUB_STEP_SUMMARY + else + echo "File upload failed" + exit 1 + fi + done From c16aec5c6758e98b3f7c81784233f15fad77def5 Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 13:18:48 +0900 Subject: [PATCH 32/75] Update build-linux-arm64.yml --- .github/workflows/build-linux-arm64.yml | 101 ++++++++++++++---------- 1 file changed, 60 insertions(+), 41 deletions(-) diff --git a/.github/workflows/build-linux-arm64.yml b/.github/workflows/build-linux-arm64.yml index b59925b0..74b95feb 100644 --- a/.github/workflows/build-linux-arm64.yml +++ b/.github/workflows/build-linux-arm64.yml @@ -1,75 +1,94 @@ name: Build and Upload Multi-Platform Binaries - on: workflow_call: - jobs: build: - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 timeout-minutes: 60 - strategy: - matrix: - platform: [linux/amd64, linux/arm64, windows/amd64, windows/arm64] - steps: - name: Checkout code uses: actions/checkout@v3 + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + - name: Cache Go modules + uses: actions/cache@v3 + with: + path: | + ~/.cache/go-build + /go/pkg/mod + key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} + restore-keys: | + ${{ runner.os }}-go- - name: Set up Go uses: actions/setup-go@v4 with: go-version: '1.22.4' - - name: Build for ${{ matrix.platform }} - env: - GOOS: ${{ matrix.platform.split('/')[0] }} - GOARCH: ${{ matrix.platform.split('/')[1] }} + - name: Build Multi-Platform Binaries run: | - echo "Building for GOOS=$GOOS and GOARCH=$GOARCH" - mkdir -p build/${GOOS}_${GOARCH} - go build -o build/${GOOS}_${GOARCH}/initiad ./cmd/initiad - + docker buildx create --use + docker buildx build \ + --platform linux/amd64,linux/arm64 \ + --output "type=local,dest=./build" \ + --progress plain \ + . + echo "Multi-platform build completed" + ls -al build/ + - name: Create output directories + run: | + mkdir -p ./build/initia_${GITHUB_REF#refs/tags/}_amd64 + mkdir -p ./build/initia_${GITHUB_REF#refs/tags/}_arm64 + - name: Move binaries to output directories + run: | + mv ./build/initiad ./build/initia_${GITHUB_REF#refs/tags/}_amd64/initiad || true + mv ./build/libmovevm.so ./build/initia_${GITHUB_REF#refs/tags/}_amd64/libmovevm.so || true + mv ./build/libcompiler.so ./build/initia_${GITHUB_REF#refs/tags/}_amd64/libcompiler.so || true + mv ./build/initiad ./build/initia_${GITHUB_REF#refs/tags/}_arm64/initiad || true + mv ./build/libmovevm.so ./build/initia_${GITHUB_REF#refs/tags/}_arm64/libmovevm.so || true + mv ./build/libcompiler.so ./build/initia_${GITHUB_REF#refs/tags/}_arm64/libcompiler.so || true - name: Create tarballs run: | - cd build - for dir in *; do - tar -czvf initia_${GITHUB_REF#refs/tags/}_${dir}.tar.gz ${dir} - done - + cd ./build + tar -czvf initia_${GITHUB_REF#refs/tags/}_Linux_amd64.tar.gz initia_${GITHUB_REF#refs/tags/}_amd64 + tar -czvf initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz initia_${GITHUB_REF#refs/tags/}_arm64 - name: Verify binary architecture run: | - file ./build/linux_amd64/initiad || true - file ./build/linux_arm64/initiad || true - file ./build/windows_amd64/initiad.exe || true - file ./build/windows_arm64/initiad.exe || true - + file ./build/initia_${GITHUB_REF#refs/tags/}_amd64/initiad || true + file ./build/initia_${GITHUB_REF#refs/tags/}_amd64/libmovevm.so || true + file ./build/initia_${GITHUB_REF#refs/tags/}_amd64/libcompiler.so || true + file ./build/initia_${GITHUB_REF#refs/tags/}_arm64/initiad || true + file ./build/initia_${GITHUB_REF#refs/tags/}_arm64/libmovevm.so || true + file ./build/initia_${GITHUB_REF#refs/tags/}_arm64/libcompiler.so || true - name: Google Auth uses: 'google-github-actions/auth@v2' with: credentials_json: '${{ secrets.GCP_SA_KEY }}' - - name: Set up Cloud SDK uses: 'google-github-actions/setup-gcloud@v2' - - name: Upload to GCS env: GCS_BUCKET: ${{ secrets.GCS_BUCKET }} run: | - for file in ./build/*.tar.gz; do - gsutil cp ${file} gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/ - done - + gsutil cp ./build/initia_${GITHUB_REF#refs/tags/}_Linux_amd64.tar.gz gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/ + gsutil cp ./build/initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/ - name: Verify upload and Generate public URL env: GCS_BUCKET: ${{ secrets.GCS_BUCKET }} run: | - for file in ./build/*.tar.gz; do - basename=$(basename ${file}) - if gsutil stat gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/${basename}; then - echo "File successfully uploaded" - echo "Public URL: https://storage.googleapis.com/${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/${basename}" >> $GITHUB_STEP_SUMMARY - else - echo "File upload failed" - exit 1 - fi - done + if gsutil stat gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/initia_${GITHUB_REF#refs/tags}_Linux_amd64.tar.gz; then + echo "File successfully uploaded" + echo "Public URL: https://storage.googleapis.com/${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/initia_${GITHUB_REF#refs/tags}_Linux_amd64.tar.gz" >> $GITHUB_STEP_SUMMARY + else + echo "File upload failed" + exit 1 + fi + if gsutil stat gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/initia_${GITHUB_REF#refs/tags}_Linux_arm64.tar.gz; then + echo "File successfully uploaded" + echo "Public URL: https://storage.googleapis.com/${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/initia_${GITHUB_REF#refs/tags}_Linux_arm64.tar.gz" >> $GITHUB_STEP_SUMMARY + else + echo "File upload failed" + exit 1 + fi From db08398463c74a7a6f5fb8dff773a8a75e91c217 Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 13:27:52 +0900 Subject: [PATCH 33/75] Update build-linux-arm64.yml --- .github/workflows/build-linux-arm64.yml | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build-linux-arm64.yml b/.github/workflows/build-linux-arm64.yml index 74b95feb..4dd6b768 100644 --- a/.github/workflows/build-linux-arm64.yml +++ b/.github/workflows/build-linux-arm64.yml @@ -1,6 +1,8 @@ name: Build and Upload Multi-Platform Binaries + on: workflow_call: + jobs: build: runs-on: ubuntu-20.04 @@ -8,8 +10,10 @@ jobs: steps: - name: Checkout code uses: actions/checkout@v3 + - name: Set up QEMU uses: docker/setup-qemu-action@v2 + - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 @@ -22,6 +26,7 @@ jobs: key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} restore-keys: | ${{ runner.os }}-go- + - name: Set up Go uses: actions/setup-go@v4 with: @@ -37,23 +42,27 @@ jobs: . echo "Multi-platform build completed" ls -al build/ + - name: Create output directories run: | mkdir -p ./build/initia_${GITHUB_REF#refs/tags/}_amd64 mkdir -p ./build/initia_${GITHUB_REF#refs/tags/}_arm64 + - name: Move binaries to output directories run: | - mv ./build/initiad ./build/initia_${GITHUB_REF#refs/tags/}_amd64/initiad || true - mv ./build/libmovevm.so ./build/initia_${GITHUB_REF#refs/tags/}_amd64/libmovevm.so || true - mv ./build/libcompiler.so ./build/initia_${GITHUB_REF#refs/tags/}_amd64/libcompiler.so || true - mv ./build/initiad ./build/initia_${GITHUB_REF#refs/tags/}_arm64/initiad || true - mv ./build/libmovevm.so ./build/initia_${GITHUB_REF#refs/tags/}_arm64/libmovevm.so || true - mv ./build/libcompiler.so ./build/initia_${GITHUB_REF#refs/tags/}_arm64/libcompiler.so || true + mv ./build/linux_amd64/initiad ./build/initia_${GITHUB_REF#refs/tags/}_amd64/initiad || true + mv ./build/linux_amd64/libmovevm.so ./build/initia_${GITHUB_REF#refs/tags/}_amd64/libmovevm.so || true + mv ./build/linux_amd64/libcompiler.so ./build/initia_${GITHUB_REF#refs/tags/}_amd64/libcompiler.so || true + mv ./build/linux_arm64/initiad ./build/initia_${GITHUB_REF#refs/tags/}_arm64/initiad || true + mv ./build/linux_arm64/libmovevm.so ./build/initia_${GITHUB_REF#refs/tags/}_arm64/libmovevm.so || true + mv ./build/linux_arm64/libcompiler.so ./build/initia_${GITHUB_REF#refs/tags/}_arm64/libcompiler.so || true + - name: Create tarballs run: | cd ./build tar -czvf initia_${GITHUB_REF#refs/tags/}_Linux_amd64.tar.gz initia_${GITHUB_REF#refs/tags/}_amd64 tar -czvf initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz initia_${GITHUB_REF#refs/tags/}_arm64 + - name: Verify binary architecture run: | file ./build/initia_${GITHUB_REF#refs/tags/}_amd64/initiad || true @@ -62,18 +71,22 @@ jobs: file ./build/initia_${GITHUB_REF#refs/tags/}_arm64/initiad || true file ./build/initia_${GITHUB_REF#refs/tags/}_arm64/libmovevm.so || true file ./build/initia_${GITHUB_REF#refs/tags/}_arm64/libcompiler.so || true + - name: Google Auth uses: 'google-github-actions/auth@v2' with: credentials_json: '${{ secrets.GCP_SA_KEY }}' + - name: Set up Cloud SDK uses: 'google-github-actions/setup-gcloud@v2' + - name: Upload to GCS env: GCS_BUCKET: ${{ secrets.GCS_BUCKET }} run: | gsutil cp ./build/initia_${GITHUB_REF#refs/tags/}_Linux_amd64.tar.gz gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/ gsutil cp ./build/initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/ + - name: Verify upload and Generate public URL env: GCS_BUCKET: ${{ secrets.GCS_BUCKET }} From 8e57ed8e1ccc786f45896269b8cd23a4577fe819 Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 14:00:36 +0900 Subject: [PATCH 34/75] Update build-linux-arm64.yml --- .github/workflows/build-linux-arm64.yml | 65 +++---------------------- 1 file changed, 7 insertions(+), 58 deletions(-) diff --git a/.github/workflows/build-linux-arm64.yml b/.github/workflows/build-linux-arm64.yml index 4dd6b768..284b1137 100644 --- a/.github/workflows/build-linux-arm64.yml +++ b/.github/workflows/build-linux-arm64.yml @@ -1,77 +1,34 @@ -name: Build and Upload Multi-Platform Binaries +name: Build and Upload ARM Binaries on: workflow_call: jobs: - build: + build-arm: runs-on: ubuntu-20.04 timeout-minutes: 60 steps: - name: Checkout code uses: actions/checkout@v3 - - name: Set up QEMU - uses: docker/setup-qemu-action@v2 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - - - name: Cache Go modules - uses: actions/cache@v3 - with: - path: | - ~/.cache/go-build - /go/pkg/mod - key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.os }}-go- - - name: Set up Go uses: actions/setup-go@v4 with: go-version: '1.22.4' - - name: Build Multi-Platform Binaries + - name: Build for arm64 run: | - docker buildx create --use - docker buildx build \ - --platform linux/amd64,linux/arm64 \ - --output "type=local,dest=./build" \ - --progress plain \ - . - echo "Multi-platform build completed" + GOARCH=arm64 go build -o build/initiad ./cmd/initiad + echo "Build for arm64 completed" ls -al build/ - - name: Create output directories + - name: Create output directory and tarball run: | - mkdir -p ./build/initia_${GITHUB_REF#refs/tags/}_amd64 mkdir -p ./build/initia_${GITHUB_REF#refs/tags/}_arm64 - - - name: Move binaries to output directories - run: | - mv ./build/linux_amd64/initiad ./build/initia_${GITHUB_REF#refs/tags/}_amd64/initiad || true - mv ./build/linux_amd64/libmovevm.so ./build/initia_${GITHUB_REF#refs/tags/}_amd64/libmovevm.so || true - mv ./build/linux_amd64/libcompiler.so ./build/initia_${GITHUB_REF#refs/tags/}_amd64/libcompiler.so || true - mv ./build/linux_arm64/initiad ./build/initia_${GITHUB_REF#refs/tags/}_arm64/initiad || true - mv ./build/linux_arm64/libmovevm.so ./build/initia_${GITHUB_REF#refs/tags/}_arm64/libmovevm.so || true - mv ./build/linux_arm64/libcompiler.so ./build/initia_${GITHUB_REF#refs/tags/}_arm64/libcompiler.so || true - - - name: Create tarballs - run: | + mv ./build/initiad ./build/initia_${GITHUB_REF#refs/tags/}_arm64/initiad cd ./build - tar -czvf initia_${GITHUB_REF#refs/tags/}_Linux_amd64.tar.gz initia_${GITHUB_REF#refs/tags/}_amd64 tar -czvf initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz initia_${GITHUB_REF#refs/tags/}_arm64 - - name: Verify binary architecture - run: | - file ./build/initia_${GITHUB_REF#refs/tags/}_amd64/initiad || true - file ./build/initia_${GITHUB_REF#refs/tags/}_amd64/libmovevm.so || true - file ./build/initia_${GITHUB_REF#refs/tags/}_amd64/libcompiler.so || true - file ./build/initia_${GITHUB_REF#refs/tags/}_arm64/initiad || true - file ./build/initia_${GITHUB_REF#refs/tags/}_arm64/libmovevm.so || true - file ./build/initia_${GITHUB_REF#refs/tags/}_arm64/libcompiler.so || true - - name: Google Auth uses: 'google-github-actions/auth@v2' with: @@ -84,20 +41,12 @@ jobs: env: GCS_BUCKET: ${{ secrets.GCS_BUCKET }} run: | - gsutil cp ./build/initia_${GITHUB_REF#refs/tags/}_Linux_amd64.tar.gz gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/ gsutil cp ./build/initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/ - name: Verify upload and Generate public URL env: GCS_BUCKET: ${{ secrets.GCS_BUCKET }} run: | - if gsutil stat gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/initia_${GITHUB_REF#refs/tags}_Linux_amd64.tar.gz; then - echo "File successfully uploaded" - echo "Public URL: https://storage.googleapis.com/${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/initia_${GITHUB_REF#refs/tags}_Linux_amd64.tar.gz" >> $GITHUB_STEP_SUMMARY - else - echo "File upload failed" - exit 1 - fi if gsutil stat gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/initia_${GITHUB_REF#refs/tags}_Linux_arm64.tar.gz; then echo "File successfully uploaded" echo "Public URL: https://storage.googleapis.com/${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/initia_${GITHUB_REF#refs/tags}_Linux_arm64.tar.gz" >> $GITHUB_STEP_SUMMARY From 02ce40a341ecbe0fa1c64f5534d05c94be94bf91 Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 14:06:47 +0900 Subject: [PATCH 35/75] Update build-linux-arm64.yml --- .github/workflows/build-linux-arm64.yml | 41 ++++++++++++++----------- 1 file changed, 23 insertions(+), 18 deletions(-) diff --git a/.github/workflows/build-linux-arm64.yml b/.github/workflows/build-linux-arm64.yml index 284b1137..06bbb893 100644 --- a/.github/workflows/build-linux-arm64.yml +++ b/.github/workflows/build-linux-arm64.yml @@ -1,34 +1,39 @@ -name: Build and Upload ARM Binaries - +name: Build Linux ARM64 on: workflow_call: jobs: - build-arm: - runs-on: ubuntu-20.04 - timeout-minutes: 60 + build: + runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v3 - - name: Set up Go - uses: actions/setup-go@v4 - with: - go-version: '1.22.4' + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 - - name: Build for arm64 - run: | - GOARCH=arm64 go build -o build/initiad ./cmd/initiad - echo "Build for arm64 completed" - ls -al build/ + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 - - name: Create output directory and tarball + - name: Build for Linux ARM64 run: | - mkdir -p ./build/initia_${GITHUB_REF#refs/tags/}_arm64 - mv ./build/initiad ./build/initia_${GITHUB_REF#refs/tags/}_arm64/initiad + docker buildx create --use + docker buildx build --platform linux/arm64 --load -t initia-build:arm64 -f Dockerfile.arm64 . + docker create --name extractor initia-build:arm64 + mkdir -p ./build/initia_${GITHUB_REF#refs/tags/} + docker cp extractor:/app/build/libmovevm.so ./build/initia_${GITHUB_REF#refs/tags/}/libmovevm.arm64.so + docker cp extractor:/app/build/libcompiler.so ./build/initia_${GITHUB_REF#refs/tags/}/libcompiler.arm64.so + docker cp extractor:/app/build/initiad ./build/initia_${GITHUB_REF#refs/tags/}/ + docker rm extractor cd ./build - tar -czvf initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz initia_${GITHUB_REF#refs/tags/}_arm64 + tar -czvf initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz initia_${GITHUB_REF#refs/tags/} + - name: Verify binary architecture + run: | + file ./build/initia_${GITHUB_REF#refs/tags/}/initiad + file ./build/initia_${GITHUB_REF#refs/tags/}/libmovevm.arm64.so + file ./build/initia_${GITHUB_REF#refs/tags/}/libcompiler.arm64.so + - name: Google Auth uses: 'google-github-actions/auth@v2' with: From bec476e345f9eb19dab3bbe95bb380aa6304d225 Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 14:07:43 +0900 Subject: [PATCH 36/75] Create Dockerfile --- .github/workflows/Dockerfile | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 .github/workflows/Dockerfile diff --git a/.github/workflows/Dockerfile b/.github/workflows/Dockerfile new file mode 100644 index 00000000..68fa9c87 --- /dev/null +++ b/.github/workflows/Dockerfile @@ -0,0 +1,28 @@ +# Stage 1: Build the Go project +FROM golang:1.22-alpine AS go-builder + +# Use build arguments for the target architecture +ARG TARGETARCH + +# Set environment variables +ENV GOOS=linux +ENV GOARCH=${TARGETARCH} + +# Set the working directory +WORKDIR /code + +# Copy the source code +COPY . . + +# Download dependencies and build the project +RUN go mod download +RUN go build -o build/initiad ./cmd/initiad + +# Stage 2: Prepare the final image +FROM alpine:3.19 + +# Copy the binary from the builder stage +COPY --from=go-builder /code/build/initiad /usr/local/bin/initiad + +# Set the entrypoint +ENTRYPOINT ["/usr/local/bin/initiad"] From 1693f7f7eadbd8eab43b242556c399981b94eb6e Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 14:08:20 +0900 Subject: [PATCH 37/75] Update build-linux-arm64.yml --- .github/workflows/build-linux-arm64.yml | 77 ++++++++++++++++++++----- 1 file changed, 62 insertions(+), 15 deletions(-) diff --git a/.github/workflows/build-linux-arm64.yml b/.github/workflows/build-linux-arm64.yml index 06bbb893..4427d38d 100644 --- a/.github/workflows/build-linux-arm64.yml +++ b/.github/workflows/build-linux-arm64.yml @@ -1,10 +1,12 @@ -name: Build Linux ARM64 +name: Build and Upload Multi-Platform Binaries + on: workflow_call: jobs: build: - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 + timeout-minutes: 60 steps: - name: Checkout code uses: actions/checkout@v3 @@ -15,25 +17,62 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 - - name: Build for Linux ARM64 + - name: Cache Go modules + uses: actions/cache@v3 + with: + path: | + ~/.cache/go-build + /go/pkg/mod + key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} + restore-keys: | + ${{ runner.os }}-go- + + - name: Set up Go + uses: actions/setup-go@v4 + with: + go-version: '1.22.4' + + - name: Build Multi-Platform Binaries run: | docker buildx create --use - docker buildx build --platform linux/arm64 --load -t initia-build:arm64 -f Dockerfile.arm64 . - docker create --name extractor initia-build:arm64 - mkdir -p ./build/initia_${GITHUB_REF#refs/tags/} - docker cp extractor:/app/build/libmovevm.so ./build/initia_${GITHUB_REF#refs/tags/}/libmovevm.arm64.so - docker cp extractor:/app/build/libcompiler.so ./build/initia_${GITHUB_REF#refs/tags/}/libcompiler.arm64.so - docker cp extractor:/app/build/initiad ./build/initia_${GITHUB_REF#refs/tags/}/ - docker rm extractor + docker buildx build \ + --file .github/workflows/Dockerfile \ + --platform linux/amd64,linux/arm64 \ + --output "type=local,dest=./build" \ + --progress plain \ + . + echo "Multi-platform build completed" + ls -al build/ + + - name: Create output directories + run: | + mkdir -p ./build/initia_${GITHUB_REF#refs/tags/}_amd64 + mkdir -p ./build/initia_${GITHUB_REF#refs/tags/}_arm64 + + - name: Move binaries to output directories + run: | + mv ./build/linux_amd64/initiad ./build/initia_${GITHUB_REF#refs/tags/}_amd64/initiad || true + mv ./build/linux_amd64/libmovevm.so ./build/initia_${GITHUB_REF#refs/tags/}_amd64/libmovevm.so || true + mv ./build/linux_amd64/libcompiler.so ./build/initia_${GITHUB_REF#refs/tags/}_amd64/libcompiler.so || true + mv ./build/linux_arm64/initiad ./build/initia_${GITHUB_REF#refs/tags/}_arm64/initiad || true + mv ./build/linux_arm64/libmovevm.so ./build/initia_${GITHUB_REF#refs/tags/}_arm64/libmovevm.so || true + mv ./build/linux_arm64/libcompiler.so ./build/initia_${GITHUB_REF#refs/tags/}_arm64/libcompiler.so || true + + - name: Create tarballs + run: | cd ./build - tar -czvf initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz initia_${GITHUB_REF#refs/tags/} + tar -czvf initia_${GITHUB_REF#refs/tags/}_Linux_amd64.tar.gz initia_${GITHUB_REF#refs/tags/}_amd64 + tar -czvf initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz initia_${GITHUB_REF#refs/tags/}_arm64 - name: Verify binary architecture run: | - file ./build/initia_${GITHUB_REF#refs/tags/}/initiad - file ./build/initia_${GITHUB_REF#refs/tags/}/libmovevm.arm64.so - file ./build/initia_${GITHUB_REF#refs/tags/}/libcompiler.arm64.so - + file ./build/initia_${GITHUB_REF#refs/tags/}_amd64/initiad || true + file ./build/initia_${GITHUB_REF#refs/tags/}_amd64/libmovevm.so || true + file ./build/initia_${GITHUB_REF#refs/tags/}_amd64/libcompiler.so || true + file ./build/initia_${GITHUB_REF#refs/tags/}_arm64/initiad || true + file ./build/initia_${GITHUB_REF#refs/tags/}_arm64/libmovevm.so || true + file ./build/initia_${GITHUB_REF#refs/tags/}_arm64/libcompiler.so || true + - name: Google Auth uses: 'google-github-actions/auth@v2' with: @@ -46,12 +85,20 @@ jobs: env: GCS_BUCKET: ${{ secrets.GCS_BUCKET }} run: | + gsutil cp ./build/initia_${GITHUB_REF#refs/tags/}_Linux_amd64.tar.gz gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/ gsutil cp ./build/initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/ - name: Verify upload and Generate public URL env: GCS_BUCKET: ${{ secrets.GCS_BUCKET }} run: | + if gsutil stat gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/initia_${GITHUB_REF#refs/tags}_Linux_amd64.tar.gz; then + echo "File successfully uploaded" + echo "Public URL: https://storage.googleapis.com/${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/initia_${GITHUB_REF#refs/tags}_Linux_amd64.tar.gz" >> $GITHUB_STEP_SUMMARY + else + echo "File upload failed" + exit 1 + fi if gsutil stat gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/initia_${GITHUB_REF#refs/tags}_Linux_arm64.tar.gz; then echo "File successfully uploaded" echo "Public URL: https://storage.googleapis.com/${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/initia_${GITHUB_REF#refs/tags}_Linux_arm64.tar.gz" >> $GITHUB_STEP_SUMMARY From 47cbcbcdc9c66b39c2918cec3ba1d6387bc4f917 Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 14:18:04 +0900 Subject: [PATCH 38/75] Update build-linux-arm64.yml --- .github/workflows/build-linux-arm64.yml | 143 +++++++----------------- 1 file changed, 41 insertions(+), 102 deletions(-) diff --git a/.github/workflows/build-linux-arm64.yml b/.github/workflows/build-linux-arm64.yml index 4427d38d..c490a755 100644 --- a/.github/workflows/build-linux-arm64.yml +++ b/.github/workflows/build-linux-arm64.yml @@ -1,108 +1,47 @@ -name: Build and Upload Multi-Platform Binaries +name: Multi-Architecture Build on: - workflow_call: + push: + branches: [ main ] + pull_request: + branches: [ main ] jobs: build: - runs-on: ubuntu-20.04 - timeout-minutes: 60 + runs-on: ubuntu-latest + strategy: + matrix: + arch: [amd64, arm64] + os: [linux, darwin] steps: - - name: Checkout code - uses: actions/checkout@v3 - - - name: Set up QEMU - uses: docker/setup-qemu-action@v2 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - - - name: Cache Go modules - uses: actions/cache@v3 - with: - path: | - ~/.cache/go-build - /go/pkg/mod - key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.os }}-go- - - - name: Set up Go - uses: actions/setup-go@v4 - with: - go-version: '1.22.4' - - - name: Build Multi-Platform Binaries - run: | - docker buildx create --use - docker buildx build \ - --file .github/workflows/Dockerfile \ - --platform linux/amd64,linux/arm64 \ - --output "type=local,dest=./build" \ - --progress plain \ - . - echo "Multi-platform build completed" - ls -al build/ - - - name: Create output directories - run: | - mkdir -p ./build/initia_${GITHUB_REF#refs/tags/}_amd64 - mkdir -p ./build/initia_${GITHUB_REF#refs/tags/}_arm64 - - - name: Move binaries to output directories - run: | - mv ./build/linux_amd64/initiad ./build/initia_${GITHUB_REF#refs/tags/}_amd64/initiad || true - mv ./build/linux_amd64/libmovevm.so ./build/initia_${GITHUB_REF#refs/tags/}_amd64/libmovevm.so || true - mv ./build/linux_amd64/libcompiler.so ./build/initia_${GITHUB_REF#refs/tags/}_amd64/libcompiler.so || true - mv ./build/linux_arm64/initiad ./build/initia_${GITHUB_REF#refs/tags/}_arm64/initiad || true - mv ./build/linux_arm64/libmovevm.so ./build/initia_${GITHUB_REF#refs/tags/}_arm64/libmovevm.so || true - mv ./build/linux_arm64/libcompiler.so ./build/initia_${GITHUB_REF#refs/tags/}_arm64/libcompiler.so || true - - - name: Create tarballs - run: | - cd ./build - tar -czvf initia_${GITHUB_REF#refs/tags/}_Linux_amd64.tar.gz initia_${GITHUB_REF#refs/tags/}_amd64 - tar -czvf initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz initia_${GITHUB_REF#refs/tags/}_arm64 - - - name: Verify binary architecture - run: | - file ./build/initia_${GITHUB_REF#refs/tags/}_amd64/initiad || true - file ./build/initia_${GITHUB_REF#refs/tags/}_amd64/libmovevm.so || true - file ./build/initia_${GITHUB_REF#refs/tags/}_amd64/libcompiler.so || true - file ./build/initia_${GITHUB_REF#refs/tags/}_arm64/initiad || true - file ./build/initia_${GITHUB_REF#refs/tags/}_arm64/libmovevm.so || true - file ./build/initia_${GITHUB_REF#refs/tags/}_arm64/libcompiler.so || true - - - name: Google Auth - uses: 'google-github-actions/auth@v2' - with: - credentials_json: '${{ secrets.GCP_SA_KEY }}' - - - name: Set up Cloud SDK - uses: 'google-github-actions/setup-gcloud@v2' - - - name: Upload to GCS - env: - GCS_BUCKET: ${{ secrets.GCS_BUCKET }} - run: | - gsutil cp ./build/initia_${GITHUB_REF#refs/tags/}_Linux_amd64.tar.gz gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/ - gsutil cp ./build/initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/ - - - name: Verify upload and Generate public URL - env: - GCS_BUCKET: ${{ secrets.GCS_BUCKET }} - run: | - if gsutil stat gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/initia_${GITHUB_REF#refs/tags}_Linux_amd64.tar.gz; then - echo "File successfully uploaded" - echo "Public URL: https://storage.googleapis.com/${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/initia_${GITHUB_REF#refs/tags}_Linux_amd64.tar.gz" >> $GITHUB_STEP_SUMMARY - else - echo "File upload failed" - exit 1 - fi - if gsutil stat gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/initia_${GITHUB_REF#refs/tags}_Linux_arm64.tar.gz; then - echo "File successfully uploaded" - echo "Public URL: https://storage.googleapis.com/${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/initia_${GITHUB_REF#refs/tags}_Linux_arm64.tar.gz" >> $GITHUB_STEP_SUMMARY - else - echo "File upload failed" - exit 1 - fi + - uses: actions/checkout@v2 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v1 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + + - name: Build for ${{ matrix.os }}-${{ matrix.arch }} + env: + ARCH: ${{ matrix.arch }} + OS: ${{ matrix.os }} + L1_VERSION: ${{ github.sha }} + L1_NETWORK_NAME: testnet + MOVEVM_VERSION: v0.1.0 # 적절한 버전으로 변경하세요 + run: | + docker buildx build --platform ${{ matrix.os }}/${{ matrix.arch }} \ + --file .github/workflows/Dockerfile \ + --build-arg ARCH=${{ matrix.arch }} \ + --build-arg OS=${{ matrix.os }} \ + --build-arg L1_VERSION=${{ env.L1_VERSION }} \ + --build-arg L1_NETWORK_NAME=${{ env.L1_NETWORK_NAME }} \ + --build-arg MOVEVM_VERSION=${{ env.MOVEVM_VERSION }} \ + --output type=local,dest=./output \ + . + + - name: Upload artifact + uses: actions/upload-artifact@v2 + with: + name: initia-${{ matrix.os }}-${{ matrix.arch }} + path: ./output/initia_${{ env.L1_VERSION }}_${{ matrix.os }}_${{ matrix.arch }}.tar.gz From 1e44dfa04f57c61e1d5fb7ee58126c2e3a6b3bec Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 14:18:33 +0900 Subject: [PATCH 39/75] Update Dockerfile --- .github/workflows/Dockerfile | 64 +++++++++++++++++++++++------------- 1 file changed, 42 insertions(+), 22 deletions(-) diff --git a/.github/workflows/Dockerfile b/.github/workflows/Dockerfile index 68fa9c87..a9298088 100644 --- a/.github/workflows/Dockerfile +++ b/.github/workflows/Dockerfile @@ -1,28 +1,48 @@ -# Stage 1: Build the Go project -FROM golang:1.22-alpine AS go-builder +ARG OS +ARG ARCH +FROM --platform=$OS/$ARCH golang:1.20 -# Use build arguments for the target architecture -ARG TARGETARCH +ARG OS +ARG ARCH +ARG L1_VERSION +ARG L1_NETWORK_NAME +ARG MOVEVM_VERSION -# Set environment variables -ENV GOOS=linux -ENV GOARCH=${TARGETARCH} +WORKDIR /workspace -# Set the working directory -WORKDIR /code +# 필요한 도구 설치 +RUN apt-get update && apt-get install -y make tar gzip -# Copy the source code +# 소스 코드 복사 COPY . . -# Download dependencies and build the project -RUN go mod download -RUN go build -o build/initiad ./cmd/initiad - -# Stage 2: Prepare the final image -FROM alpine:3.19 - -# Copy the binary from the builder stage -COPY --from=go-builder /code/build/initiad /usr/local/bin/initiad - -# Set the entrypoint -ENTRYPOINT ["/usr/local/bin/initiad"] +# 환경 변수 설정 +ENV OS=$OS +ENV ARCH=$ARCH +ENV L1_VERSION=$L1_VERSION +ENV L1_NETWORK_NAME=$L1_NETWORK_NAME +ENV MOVEVM_VERSION=$MOVEVM_VERSION + +# 빌드 스크립트 실행 +RUN if [ "$OS" = "darwin" ]; then \ + cd initia \ + && make build \ + && cd ./build \ + && cp /go/pkg/mod/github.com/initia-labs/movevm@${MOVEVM_VERSION}/api/libmovevm.dylib ./ \ + && cp /go/pkg/mod/github.com/initia-labs/movevm@${MOVEVM_VERSION}/api/libcompiler.dylib ./ \ + && tar -czvf initia_${L1_VERSION}_Darwin_${ARCH}.tar.gz initiad libmovevm.dylib libcompiler.dylib \ + && mkdir -p ../../networks/${L1_NETWORK_NAME}/binaries/ \ + && mv ./initia_${L1_VERSION}_Darwin_${ARCH}.tar.gz ../../networks/${L1_NETWORK_NAME}/binaries/ ; \ + elif [ "$OS" = "linux" ]; then \ + cd initia \ + && make build-linux-with-shared-library \ + && cd ./build \ + && mv libmovevm.so libmovevm.${ARCH}.so \ + && mv libcompiler.so libcompiler.${ARCH}.so \ + && tar -czvf initia_${L1_VERSION}_Linux_${ARCH}.tar.gz ./initiad libmovevm.${ARCH}.so libcompiler.${ARCH}.so \ + && mkdir -p ../../networks/${L1_NETWORK_NAME}/binaries/ \ + && mv ./initia_${L1_VERSION}_Linux_${ARCH}.tar.gz ../../networks/${L1_NETWORK_NAME}/binaries/ ; \ + fi + +# 결과물 복사 +RUN mkdir -p /output && cp networks/${L1_NETWORK_NAME}/binaries/initia_${L1_VERSION}_*_${ARCH}.tar.gz /output/ From b2fa6d2ea56572cf4ddf2f9d24f007a1a4536898 Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 14:19:25 +0900 Subject: [PATCH 40/75] Update build-linux-arm64.yml --- .github/workflows/build-linux-arm64.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-linux-arm64.yml b/.github/workflows/build-linux-arm64.yml index c490a755..1b9593b6 100644 --- a/.github/workflows/build-linux-arm64.yml +++ b/.github/workflows/build-linux-arm64.yml @@ -28,7 +28,7 @@ jobs: OS: ${{ matrix.os }} L1_VERSION: ${{ github.sha }} L1_NETWORK_NAME: testnet - MOVEVM_VERSION: v0.1.0 # 적절한 버전으로 변경하세요 + MOVEVM_VERSION: v0.2.12 # 적절한 버전으로 변경하세요 run: | docker buildx build --platform ${{ matrix.os }}/${{ matrix.arch }} \ --file .github/workflows/Dockerfile \ From 7167234d958a2ac051d99b2c8cc7f9729bd17e90 Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 14:22:29 +0900 Subject: [PATCH 41/75] Update Dockerfile --- .github/workflows/Dockerfile | 34 ++++++++++------------------------ 1 file changed, 10 insertions(+), 24 deletions(-) diff --git a/.github/workflows/Dockerfile b/.github/workflows/Dockerfile index a9298088..351e415b 100644 --- a/.github/workflows/Dockerfile +++ b/.github/workflows/Dockerfile @@ -1,8 +1,6 @@ -ARG OS ARG ARCH -FROM --platform=$OS/$ARCH golang:1.20 +FROM --platform=linux/${ARCH} golang:1.20 -ARG OS ARG ARCH ARG L1_VERSION ARG L1_NETWORK_NAME @@ -17,32 +15,20 @@ RUN apt-get update && apt-get install -y make tar gzip COPY . . # 환경 변수 설정 -ENV OS=$OS ENV ARCH=$ARCH ENV L1_VERSION=$L1_VERSION ENV L1_NETWORK_NAME=$L1_NETWORK_NAME ENV MOVEVM_VERSION=$MOVEVM_VERSION # 빌드 스크립트 실행 -RUN if [ "$OS" = "darwin" ]; then \ - cd initia \ - && make build \ - && cd ./build \ - && cp /go/pkg/mod/github.com/initia-labs/movevm@${MOVEVM_VERSION}/api/libmovevm.dylib ./ \ - && cp /go/pkg/mod/github.com/initia-labs/movevm@${MOVEVM_VERSION}/api/libcompiler.dylib ./ \ - && tar -czvf initia_${L1_VERSION}_Darwin_${ARCH}.tar.gz initiad libmovevm.dylib libcompiler.dylib \ - && mkdir -p ../../networks/${L1_NETWORK_NAME}/binaries/ \ - && mv ./initia_${L1_VERSION}_Darwin_${ARCH}.tar.gz ../../networks/${L1_NETWORK_NAME}/binaries/ ; \ - elif [ "$OS" = "linux" ]; then \ - cd initia \ - && make build-linux-with-shared-library \ - && cd ./build \ - && mv libmovevm.so libmovevm.${ARCH}.so \ - && mv libcompiler.so libcompiler.${ARCH}.so \ - && tar -czvf initia_${L1_VERSION}_Linux_${ARCH}.tar.gz ./initiad libmovevm.${ARCH}.so libcompiler.${ARCH}.so \ - && mkdir -p ../../networks/${L1_NETWORK_NAME}/binaries/ \ - && mv ./initia_${L1_VERSION}_Linux_${ARCH}.tar.gz ../../networks/${L1_NETWORK_NAME}/binaries/ ; \ - fi +RUN cd initia \ + && make build-linux-with-shared-library \ + && cd ./build \ + && mv libmovevm.so libmovevm.${ARCH}.so \ + && mv libcompiler.so libcompiler.${ARCH}.so \ + && tar -czvf initia_${L1_VERSION}_Linux_${ARCH}.tar.gz ./initiad libmovevm.${ARCH}.so libcompiler.${ARCH}.so \ + && mkdir -p ../../networks/${L1_NETWORK_NAME}/binaries/ \ + && mv ./initia_${L1_VERSION}_Linux_${ARCH}.tar.gz ../../networks/${L1_NETWORK_NAME}/binaries/ # 결과물 복사 -RUN mkdir -p /output && cp networks/${L1_NETWORK_NAME}/binaries/initia_${L1_VERSION}_*_${ARCH}.tar.gz /output/ +RUN mkdir -p /output && cp networks/${L1_NETWORK_NAME}/binaries/initia_${L1_VERSION}_Linux_${ARCH}.tar.gz /output/ From 188273746e67c4341089ce0dc71a1bd0a3e47ddc Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 14:22:46 +0900 Subject: [PATCH 42/75] Update build-linux-arm64.yml --- .github/workflows/build-linux-arm64.yml | 52 ++++++++++++++++++++----- 1 file changed, 42 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build-linux-arm64.yml b/.github/workflows/build-linux-arm64.yml index 1b9593b6..8ab88987 100644 --- a/.github/workflows/build-linux-arm64.yml +++ b/.github/workflows/build-linux-arm64.yml @@ -7,12 +7,11 @@ on: branches: [ main ] jobs: - build: + build-linux: runs-on: ubuntu-latest strategy: matrix: arch: [amd64, arm64] - os: [linux, darwin] steps: - uses: actions/checkout@v2 @@ -22,18 +21,16 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v1 - - name: Build for ${{ matrix.os }}-${{ matrix.arch }} + - name: Build for Linux-${{ matrix.arch }} env: ARCH: ${{ matrix.arch }} - OS: ${{ matrix.os }} L1_VERSION: ${{ github.sha }} L1_NETWORK_NAME: testnet - MOVEVM_VERSION: v0.2.12 # 적절한 버전으로 변경하세요 + MOVEVM_VERSION: v0.1.0 # 적절한 버전으로 변경하세요 run: | - docker buildx build --platform ${{ matrix.os }}/${{ matrix.arch }} \ - --file .github/workflows/Dockerfile \ + docker buildx build --platform linux/${{ matrix.arch }} \ + --file .github/workflows/Dockerfile.linux \ --build-arg ARCH=${{ matrix.arch }} \ - --build-arg OS=${{ matrix.os }} \ --build-arg L1_VERSION=${{ env.L1_VERSION }} \ --build-arg L1_NETWORK_NAME=${{ env.L1_NETWORK_NAME }} \ --build-arg MOVEVM_VERSION=${{ env.MOVEVM_VERSION }} \ @@ -43,5 +40,40 @@ jobs: - name: Upload artifact uses: actions/upload-artifact@v2 with: - name: initia-${{ matrix.os }}-${{ matrix.arch }} - path: ./output/initia_${{ env.L1_VERSION }}_${{ matrix.os }}_${{ matrix.arch }}.tar.gz + name: initia-linux-${{ matrix.arch }} + path: ./output/initia_${{ env.L1_VERSION }}_Linux_${{ matrix.arch }}.tar.gz + + build-darwin: + runs-on: macos-latest + strategy: + matrix: + arch: [amd64, arm64] + steps: + - uses: actions/checkout@v2 + + - name: Set up Go + uses: actions/setup-go@v2 + with: + go-version: '1.20' + + - name: Build for Darwin-${{ matrix.arch }} + env: + ARCH: ${{ matrix.arch }} + L1_VERSION: ${{ github.sha }} + L1_NETWORK_NAME: testnet + MOVEVM_VERSION: v0.1.0 # 적절한 버전으로 변경하세요 + run: | + cd initia + GOOS=darwin GOARCH=${{ matrix.arch }} make build + cd ./build + cp ~/go/pkg/mod/github.com/initia-labs/movevm@${MOVEVM_VERSION}/api/libmovevm.dylib ./ + cp ~/go/pkg/mod/github.com/initia-labs/movevm@${MOVEVM_VERSION}/api/libcompiler.dylib ./ + tar -czvf initia_${L1_VERSION}_Darwin_${{ matrix.arch }}.tar.gz initiad libmovevm.dylib libcompiler.dylib + mkdir -p ../../networks/${L1_NETWORK_NAME}/binaries/ + mv ./initia_${L1_VERSION}_Darwin_${{ matrix.arch }}.tar.gz ../../networks/${L1_NETWORK_NAME}/binaries/ + + - name: Upload artifact + uses: actions/upload-artifact@v2 + with: + name: initia-darwin-${{ matrix.arch }} + path: networks/${{ env.L1_NETWORK_NAME }}/binaries/initia_${{ env.L1_VERSION }}_Darwin_${{ matrix.arch }}.tar.gz From 66bf2b0b517cfb9961198b2ee1d7eb258c354a66 Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 14:23:11 +0900 Subject: [PATCH 43/75] Update build-linux-arm64.yml --- .github/workflows/build-linux-arm64.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-linux-arm64.yml b/.github/workflows/build-linux-arm64.yml index 8ab88987..7d0c0d60 100644 --- a/.github/workflows/build-linux-arm64.yml +++ b/.github/workflows/build-linux-arm64.yml @@ -26,7 +26,7 @@ jobs: ARCH: ${{ matrix.arch }} L1_VERSION: ${{ github.sha }} L1_NETWORK_NAME: testnet - MOVEVM_VERSION: v0.1.0 # 적절한 버전으로 변경하세요 + MOVEVM_VERSION: v0.2.12 # 적절한 버전으로 변경하세요 run: | docker buildx build --platform linux/${{ matrix.arch }} \ --file .github/workflows/Dockerfile.linux \ @@ -61,7 +61,7 @@ jobs: ARCH: ${{ matrix.arch }} L1_VERSION: ${{ github.sha }} L1_NETWORK_NAME: testnet - MOVEVM_VERSION: v0.1.0 # 적절한 버전으로 변경하세요 + MOVEVM_VERSION: v0.2.12 # 적절한 버전으로 변경하세요 run: | cd initia GOOS=darwin GOARCH=${{ matrix.arch }} make build From e90d15b6a5c270f15e7cfd2bb6d9c36669b43bce Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 14:25:00 +0900 Subject: [PATCH 44/75] Rename Dockerfile to Dockerfile.linux --- .github/workflows/{Dockerfile => Dockerfile.linux} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .github/workflows/{Dockerfile => Dockerfile.linux} (100%) diff --git a/.github/workflows/Dockerfile b/.github/workflows/Dockerfile.linux similarity index 100% rename from .github/workflows/Dockerfile rename to .github/workflows/Dockerfile.linux From b5003da057fd8b032a547ebdf6f63e17dfc15569 Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 14:27:47 +0900 Subject: [PATCH 45/75] Update build-linux-arm64.yml --- .github/workflows/build-linux-arm64.yml | 40 ++----------------------- 1 file changed, 3 insertions(+), 37 deletions(-) diff --git a/.github/workflows/build-linux-arm64.yml b/.github/workflows/build-linux-arm64.yml index 7d0c0d60..0b8e195c 100644 --- a/.github/workflows/build-linux-arm64.yml +++ b/.github/workflows/build-linux-arm64.yml @@ -13,7 +13,8 @@ jobs: matrix: arch: [amd64, arm64] steps: - - uses: actions/checkout@v2 + - name: Checkout code + uses: actions/checkout@v2 - name: Set up QEMU uses: docker/setup-qemu-action@v1 @@ -29,7 +30,7 @@ jobs: MOVEVM_VERSION: v0.2.12 # 적절한 버전으로 변경하세요 run: | docker buildx build --platform linux/${{ matrix.arch }} \ - --file .github/workflows/Dockerfile.linux \ + --file Dockerfile \ --build-arg ARCH=${{ matrix.arch }} \ --build-arg L1_VERSION=${{ env.L1_VERSION }} \ --build-arg L1_NETWORK_NAME=${{ env.L1_NETWORK_NAME }} \ @@ -42,38 +43,3 @@ jobs: with: name: initia-linux-${{ matrix.arch }} path: ./output/initia_${{ env.L1_VERSION }}_Linux_${{ matrix.arch }}.tar.gz - - build-darwin: - runs-on: macos-latest - strategy: - matrix: - arch: [amd64, arm64] - steps: - - uses: actions/checkout@v2 - - - name: Set up Go - uses: actions/setup-go@v2 - with: - go-version: '1.20' - - - name: Build for Darwin-${{ matrix.arch }} - env: - ARCH: ${{ matrix.arch }} - L1_VERSION: ${{ github.sha }} - L1_NETWORK_NAME: testnet - MOVEVM_VERSION: v0.2.12 # 적절한 버전으로 변경하세요 - run: | - cd initia - GOOS=darwin GOARCH=${{ matrix.arch }} make build - cd ./build - cp ~/go/pkg/mod/github.com/initia-labs/movevm@${MOVEVM_VERSION}/api/libmovevm.dylib ./ - cp ~/go/pkg/mod/github.com/initia-labs/movevm@${MOVEVM_VERSION}/api/libcompiler.dylib ./ - tar -czvf initia_${L1_VERSION}_Darwin_${{ matrix.arch }}.tar.gz initiad libmovevm.dylib libcompiler.dylib - mkdir -p ../../networks/${L1_NETWORK_NAME}/binaries/ - mv ./initia_${L1_VERSION}_Darwin_${{ matrix.arch }}.tar.gz ../../networks/${L1_NETWORK_NAME}/binaries/ - - - name: Upload artifact - uses: actions/upload-artifact@v2 - with: - name: initia-darwin-${{ matrix.arch }} - path: networks/${{ env.L1_NETWORK_NAME }}/binaries/initia_${{ env.L1_VERSION }}_Darwin_${{ matrix.arch }}.tar.gz From 5140778330e7375059ae00bb74af32fdfa2a9be5 Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 14:34:26 +0900 Subject: [PATCH 46/75] Update build-linux-arm64.yml --- .github/workflows/build-linux-arm64.yml | 144 +++++++++++++++++------- 1 file changed, 104 insertions(+), 40 deletions(-) diff --git a/.github/workflows/build-linux-arm64.yml b/.github/workflows/build-linux-arm64.yml index 0b8e195c..a96a4514 100644 --- a/.github/workflows/build-linux-arm64.yml +++ b/.github/workflows/build-linux-arm64.yml @@ -1,45 +1,109 @@ -name: Multi-Architecture Build +name: Build and Upload Multi-Platform Binaries on: - push: - branches: [ main ] - pull_request: - branches: [ main ] + workflow_call: jobs: - build-linux: - runs-on: ubuntu-latest - strategy: - matrix: - arch: [amd64, arm64] + build: + runs-on: ubuntu-20.04 + timeout-minutes: 60 + steps: - - name: Checkout code - uses: actions/checkout@v2 - - - name: Set up QEMU - uses: docker/setup-qemu-action@v1 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v1 - - - name: Build for Linux-${{ matrix.arch }} - env: - ARCH: ${{ matrix.arch }} - L1_VERSION: ${{ github.sha }} - L1_NETWORK_NAME: testnet - MOVEVM_VERSION: v0.2.12 # 적절한 버전으로 변경하세요 - run: | - docker buildx build --platform linux/${{ matrix.arch }} \ - --file Dockerfile \ - --build-arg ARCH=${{ matrix.arch }} \ - --build-arg L1_VERSION=${{ env.L1_VERSION }} \ - --build-arg L1_NETWORK_NAME=${{ env.L1_NETWORK_NAME }} \ - --build-arg MOVEVM_VERSION=${{ env.MOVEVM_VERSION }} \ - --output type=local,dest=./output \ - . - - - name: Upload artifact - uses: actions/upload-artifact@v2 - with: - name: initia-linux-${{ matrix.arch }} - path: ./output/initia_${{ env.L1_VERSION }}_Linux_${{ matrix.arch }}.tar.gz + - name: Checkout code + uses: actions/checkout@v3 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Cache Go modules + uses: actions/cache@v3 + with: + path: | + ~/.cache/go-build + /go/pkg/mod + key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} + restore-keys: | + ${{ runner.os }}-go- + + - name: Set up Go + uses: actions/setup-go@v4 + with: + go-version: '1.22.4' + + - name: Build Multi-Platform Binaries + run: | + docker buildx create --use + docker buildx build \ + --platform linux/amd64,linux/arm64 \ + --output "type=local,dest=./build" \ + --file Dockerfile \ + --progress plain \ + . + echo "Multi-platform build completed" + ls -al build/ + + - name: Create output directories + run: | + mkdir -p ./build/initia_${GITHUB_REF#refs/tags/}_amd64 + mkdir -p ./build/initia_${GITHUB_REF#refs/tags/}_arm64 + + - name: Move binaries to output directories + run: | + mv ./build/linux/amd64/initiad ./build/initia_${GITHUB_REF#refs/tags/}_amd64/initiad || true + mv ./build/linux/amd64/libmovevm.so ./build/initia_${GITHUB_REF#refs/tags/}_amd64/libmovevm.so || true + mv ./build/linux/amd64/libcompiler.so ./build/initia_${GITHUB_REF#refs/tags/}_amd64/libcompiler.so || true + mv ./build/linux/arm64/initiad ./build/initia_${GITHUB_REF#refs/tags/}_arm64/initiad || true + mv ./build/linux/arm64/libmovevm.so ./build/initia_${GITHUB_REF#refs/tags/}_arm64/libmovevm.so || true + mv ./build/linux/arm64/libcompiler.so ./build/initia_${GITHUB_REF#refs/tags/}_arm64/libcompiler.so || true + + - name: Create tarballs + run: | + cd ./build + tar -czvf initia_${GITHUB_REF#refs/tags/}_Linux_amd64.tar.gz initia_${GITHUB_REF#refs/tags/}_amd64 + tar -czvf initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz initia_${GITHUB_REF#refs/tags/}_arm64 + + - name: Verify binary architecture + run: | + file ./build/initia_${GITHUB_REF#refs/tags/}_amd64/initiad || true + file ./build/initia_${GITHUB_REF#refs/tags/}_amd64/libmovevm.so || true + file ./build/initia_${GITHUB_REF#refs/tags/}_amd64/libcompiler.so || true + file ./build/initia_${GITHUB_REF#refs/tags/}_arm64/initiad || true + file ./build/initia_${GITHUB_REF#refs/tags/}_arm64/libmovevm.so || true + file ./build/initia_${GITHUB_REF#refs/tags/}_arm64/libcompiler.so || true + + - name: Google Auth + uses: 'google-github-actions/auth@v2' + with: + credentials_json: '${{ secrets.GCP_SA_KEY }}' + + - name: Set up Cloud SDK + uses: 'google-github-actions/setup-gcloud@v2' + + - name: Upload to GCS + env: + GCS_BUCKET: ${{ secrets.GCS_BUCKET }} + run: | + gsutil cp ./build/initia_${GITHUB_REF#refs/tags/}_Linux_amd64.tar.gz gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/ + gsutil cp ./build/initia_${GITHUB_REF#refs/tags/}_Linux_arm64.tar.gz gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/ + + - name: Verify upload and Generate public URL + env: + GCS_BUCKET: ${{ secrets.GCS_BUCKET }} + run: | + if gsutil stat gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/initia_${GITHUB_REF#refs/tags}_Linux_amd64.tar.gz; then + echo "File successfully uploaded" + echo "Public URL: https://storage.googleapis.com/${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/initia_${GITHUB_REF#refs/tags}_Linux_amd64.tar.gz" >> $GITHUB_STEP_SUMMARY + else + echo "File upload failed" + exit 1 + fi + if gsutil stat gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/initia_${GITHUB_REF#refs/tags}_Linux_arm64.tar.gz; then + echo "File successfully uploaded" + echo "Public URL: https://storage.googleapis.com/${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags}/initia_${GITHUB_REF#refs/tags}_Linux_arm64.tar.gz" >> $GITHUB_STEP_SUMMARY + else + echo "File upload failed" + exit 1 + fi From 393cd256d7e4b434ad5a7ba83a7e74e77abd92e8 Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 14:35:07 +0900 Subject: [PATCH 47/75] Update build-and-upload.yml --- .github/workflows/build-and-upload.yml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-and-upload.yml b/.github/workflows/build-and-upload.yml index 7872e576..37c5134a 100644 --- a/.github/workflows/build-and-upload.yml +++ b/.github/workflows/build-and-upload.yml @@ -1,10 +1,13 @@ name: Build and Upload to GCS on: + # push: + # tags: + # - 'v*' push: - tags: - - 'v*' - + branches: + - "main" + jobs: # build-linux-amd64: # uses: ./.github/workflows/build-linux-amd64.yml From 474c39dd4e2dc186ff403fbee30e2d8803cd3aa2 Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 14:59:25 +0900 Subject: [PATCH 48/75] Update build-darwin.yml --- .github/workflows/build-darwin.yml | 111 ++++++++++++++--------------- 1 file changed, 54 insertions(+), 57 deletions(-) diff --git a/.github/workflows/build-darwin.yml b/.github/workflows/build-darwin.yml index 8cc252ce..efe093ef 100644 --- a/.github/workflows/build-darwin.yml +++ b/.github/workflows/build-darwin.yml @@ -1,67 +1,64 @@ -name: Build Darwin +name: Build and Upload on: - workflow_call: - inputs: - arch: - required: true - type: string + push: + branches: [ main ] + pull_request: + branches: [ main ] + +env: + L1_NETWORK_NAME: testnet + MOVEVM_VERSION: v0.2.12 # 적절한 버전으로 변경하세요 jobs: - build: - runs-on: macos-latest + build-and-upload: + strategy: + matrix: + os: [ubuntu-latest, macos-latest] + arch: [amd64, arm64] + exclude: + - os: ubuntu-latest + arch: arm64 + runs-on: ${{ matrix.os }} steps: - - name: Checkout code - uses: actions/checkout@v3 + - uses: actions/checkout@v2 - - name: Set up Go - uses: actions/setup-go@v4 - with: - go-version: '1.22.4' + - name: Set up Go + uses: actions/setup-go@v2 + with: + go-version: '1.22' - - name: Build for Darwin - env: - GOARCH: ${{ inputs.arch }} - run: | - make build GOARCH=${{ inputs.arch }} + - name: Build for ${{ runner.os }}-${{ matrix.arch }} + env: + ARCH: ${{ matrix.arch }} + L1_VERSION: ${{ github.sha }} + run: | + if [ "${{ runner.os }}" == "Linux" ]; then + cd initia + make build-linux-with-shared-library cd ./build - mkdir -p initia_${GITHUB_REF#refs/tags/} - cp ~/go/pkg/mod/github.com/initia-labs/movevm@*/api/libmovevm.dylib initia_${GITHUB_REF#refs/tags/}/libmovevm.${{ inputs.arch }}.dylib - cp ~/go/pkg/mod/github.com/initia-labs/movevm@*/api/libcompiler.dylib initia_${GITHUB_REF#refs/tags/}/libcompiler.${{ inputs.arch }}.dylib - mv initiad initia_${GITHUB_REF#refs/tags/}/ - tar -czvf initia_${GITHUB_REF#refs/tags/}_Darwin_${{ inputs.arch }}.tar.gz initia_${GITHUB_REF#refs/tags/} - - - name: Verify binary architecture - run: | - file ./build/initia_${GITHUB_REF#refs/tags/}/initiad - - - name: Verify library architecture - run: | - file ./build/initia_${GITHUB_REF#refs/tags/}/libmovevm.${{ inputs.arch }}.dylib - file ./build/initia_${GITHUB_REF#refs/tags/}/libcompiler.${{ inputs.arch }}.dylib - - - name: Google Auth - uses: 'google-github-actions/auth@v2' - with: - credentials_json: '${{ secrets.GCP_SA_KEY }}' - - - name: Set up Cloud SDK - uses: 'google-github-actions/setup-gcloud@v2' + mv libmovevm.so libmovevm.${{ matrix.arch }}.so + mv libcompiler.so libcompiler.${{ matrix.arch }}.so + tar -czvf initia_${L1_VERSION}_Linux_${{ matrix.arch }}.tar.gz ./initiad libmovevm.${{ matrix.arch }}.so libcompiler.${{ matrix.arch }}.so + mkdir -p ../../networks/${L1_NETWORK_NAME}/binaries/ + mv ./initia_${L1_VERSION}_Linux_${{ matrix.arch }}.tar.gz ../../networks/${L1_NETWORK_NAME}/binaries/ + elif [ "${{ runner.os }}" == "macOS" ]; then + cd initia + make build + cd ./build + cp ~/go/pkg/mod/github.com/initia-labs/movevm@${MOVEVM_VERSION}/api/libmovevm.dylib ./ + cp ~/go/pkg/mod/github.com/initia-labs/movevm@${MOVEVM_VERSION}/api/libcompiler.dylib ./ + tar -czvf initia_${L1_VERSION}_Darwin_${{ matrix.arch }}.tar.gz initiad libmovevm.dylib libcompiler.dylib + mkdir -p ../../networks/${L1_NETWORK_NAME}/binaries/ + mv ./initia_${L1_VERSION}_Darwin_${{ matrix.arch }}.tar.gz ../../networks/${L1_NETWORK_NAME}/binaries/ + fi - - name: Upload to GCS - env: - GCS_BUCKET: ${{ secrets.GCS_BUCKET }} - run: | - gsutil cp ./build/initia_${GITHUB_REF#refs/tags/}_Darwin_${{ inputs.arch }}.tar.gz gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags/}/ + - uses: google-github-actions/setup-gcloud@v0.2.0 + with: + project_id: ${{ secrets.GCP_PROJECT_ID }} + service_account_key: ${{ secrets.GCP_SA_KEY }} + export_default_credentials: true - - name: Verify upload and Generate public URL - env: - GCS_BUCKET: ${{ secrets.GCS_BUCKET }} - run: | - if gsutil stat gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags/}/initia_${GITHUB_REF#refs/tags/}_Darwin_${{ inputs.arch }}.tar.gz; then - echo "File successfully uploaded" - echo "Public URL: https://storage.googleapis.com/${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags/}/initia_${GITHUB_REF#refs/tags/}_Darwin_${{ inputs.arch }}.tar.gz" >> $GITHUB_STEP_SUMMARY - else - echo "File upload failed" - exit 1 - fi + - name: Upload to GCS + run: | + gsutil cp networks/${L1_NETWORK_NAME}/binaries/initia_${L1_VERSION}_*.tar.gz gs://your-bucket-name/networks/${L1_NETWORK_NAME}/binaries/ From 92b13201621bd2f7f43bf7922b1a678b905e39a7 Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 15:38:13 +0900 Subject: [PATCH 49/75] Update build-darwin.yml --- .github/workflows/build-darwin.yml | 90 +++++++++++++++--------------- 1 file changed, 46 insertions(+), 44 deletions(-) diff --git a/.github/workflows/build-darwin.yml b/.github/workflows/build-darwin.yml index efe093ef..e75a1e6a 100644 --- a/.github/workflows/build-darwin.yml +++ b/.github/workflows/build-darwin.yml @@ -1,14 +1,15 @@ -name: Build and Upload +name: Cross-Platform Build and Upload on: push: - branches: [ main ] + branches: [ "main" ] pull_request: - branches: [ main ] + branches: [ "main" ] env: L1_NETWORK_NAME: testnet - MOVEVM_VERSION: v0.2.12 # 적절한 버전으로 변경하세요 + GO_VERSION: '1.22' + MOVEVM_VERSION: 'v0.2.12' # 적절한 버전으로 변경하세요 jobs: build-and-upload: @@ -16,49 +17,50 @@ jobs: matrix: os: [ubuntu-latest, macos-latest] arch: [amd64, arm64] - exclude: - - os: ubuntu-latest - arch: arm64 runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@v2 + - name: Checkout code + uses: actions/checkout@v3 - - name: Set up Go - uses: actions/setup-go@v2 - with: - go-version: '1.22' + - name: Set up Go + uses: actions/setup-go@v4 + with: + go-version: ${{ env.GO_VERSION }} - - name: Build for ${{ runner.os }}-${{ matrix.arch }} - env: - ARCH: ${{ matrix.arch }} - L1_VERSION: ${{ github.sha }} - run: | - if [ "${{ runner.os }}" == "Linux" ]; then - cd initia - make build-linux-with-shared-library - cd ./build - mv libmovevm.so libmovevm.${{ matrix.arch }}.so - mv libcompiler.so libcompiler.${{ matrix.arch }}.so - tar -czvf initia_${L1_VERSION}_Linux_${{ matrix.arch }}.tar.gz ./initiad libmovevm.${{ matrix.arch }}.so libcompiler.${{ matrix.arch }}.so - mkdir -p ../../networks/${L1_NETWORK_NAME}/binaries/ - mv ./initia_${L1_VERSION}_Linux_${{ matrix.arch }}.tar.gz ../../networks/${L1_NETWORK_NAME}/binaries/ - elif [ "${{ runner.os }}" == "macOS" ]; then - cd initia - make build - cd ./build - cp ~/go/pkg/mod/github.com/initia-labs/movevm@${MOVEVM_VERSION}/api/libmovevm.dylib ./ - cp ~/go/pkg/mod/github.com/initia-labs/movevm@${MOVEVM_VERSION}/api/libcompiler.dylib ./ - tar -czvf initia_${L1_VERSION}_Darwin_${{ matrix.arch }}.tar.gz initiad libmovevm.dylib libcompiler.dylib - mkdir -p ../../networks/${L1_NETWORK_NAME}/binaries/ - mv ./initia_${L1_VERSION}_Darwin_${{ matrix.arch }}.tar.gz ../../networks/${L1_NETWORK_NAME}/binaries/ - fi + - name: Set up QEMU + if: runner.os == 'Linux' + uses: docker/setup-qemu-action@v2 - - uses: google-github-actions/setup-gcloud@v0.2.0 - with: - project_id: ${{ secrets.GCP_PROJECT_ID }} - service_account_key: ${{ secrets.GCP_SA_KEY }} - export_default_credentials: true + - name: Build for ${{ runner.os }}-${{ matrix.arch }} + env: + ARCH: ${{ matrix.arch }} + L1_VERSION: ${{ github.sha }} + run: | + if [ "${{ runner.os }}" == "Linux" ]; then + GOOS=linux GOARCH=${{ matrix.arch }} make build-linux-with-shared-library + cd build + mv libmovevm.so libmovevm.${{ matrix.arch }}.so + mv libcompiler.so libcompiler.${{ matrix.arch }}.so + tar -czvf initia_${L1_VERSION}_Linux_${{ matrix.arch }}.tar.gz ./initiad libmovevm.${{ matrix.arch }}.so libcompiler.${{ matrix.arch }}.so + else + GOOS=darwin GOARCH=${{ matrix.arch }} make build + cd build + cp ~/go/pkg/mod/github.com/initia-labs/movevm@${MOVEVM_VERSION}/api/libmovevm.dylib ./ + cp ~/go/pkg/mod/github.com/initia-labs/movevm@${MOVEVM_VERSION}/api/libcompiler.dylib ./ + tar -czvf initia_${L1_VERSION}_Darwin_${{ matrix.arch }}.tar.gz initiad libmovevm.dylib libcompiler.dylib + fi - - name: Upload to GCS - run: | - gsutil cp networks/${L1_NETWORK_NAME}/binaries/initia_${L1_VERSION}_*.tar.gz gs://your-bucket-name/networks/${L1_NETWORK_NAME}/binaries/ + - name: Set up Cloud SDK + uses: google-github-actions/setup-gcloud@v1 + with: + project_id: ${{ secrets.GCP_PROJECT_ID }} + service_account_key: ${{ secrets.GCP_SA_KEY }} + export_default_credentials: true + + - name: Upload to GCS + run: | + if [ "${{ runner.os }}" == "Linux" ]; then + gsutil cp build/initia_${L1_VERSION}_Linux_${{ matrix.arch }}.tar.gz gs://your-bucket-name/networks/${{ env.L1_NETWORK_NAME }}/binaries/ + else + gsutil cp build/initia_${L1_VERSION}_Darwin_${{ matrix.arch }}.tar.gz gs://your-bucket-name/networks/${{ env.L1_NETWORK_NAME }}/binaries/ + fi From fd0c2b8d99d6ea046d53563f38d2bd33b6645835 Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 15:43:27 +0900 Subject: [PATCH 50/75] Update and rename Dockerfile.linux to Dockerfile --- .github/workflows/Dockerfile | 38 ++++++++++++++++++++++++++++++ .github/workflows/Dockerfile.linux | 34 -------------------------- 2 files changed, 38 insertions(+), 34 deletions(-) create mode 100644 .github/workflows/Dockerfile delete mode 100644 .github/workflows/Dockerfile.linux diff --git a/.github/workflows/Dockerfile b/.github/workflows/Dockerfile new file mode 100644 index 00000000..0fe8ccb3 --- /dev/null +++ b/.github/workflows/Dockerfile @@ -0,0 +1,38 @@ +# 빌드 단계 +FROM --platform=$BUILDPLATFORM golang:1.22-alpine AS builder + +ARG TARGETPLATFORM +ARG BUILDPLATFORM +ARG TARGETOS +ARG TARGETARCH + +WORKDIR /src + +# 필요한 빌드 도구 설치 +RUN apk add --no-cache git make + +# 소스 코드 복사 +COPY . . + +# MOVEVM 버전 설정 (필요에 따라 조정) +ENV MOVEVM_VERSION=v0.3.4 + +# TARGETOS와 TARGETARCH에 따라 빌드 명령 실행 +RUN if [ "$TARGETOS" = "linux" ]; then \ + make build-linux-with-shared-library ARCH=$TARGETARCH; \ + elif [ "$TARGETOS" = "darwin" ]; then \ + make build ARCH=$TARGETARCH; \ + fi + +# 실행 단계 +FROM --platform=$TARGETPLATFORM alpine + +WORKDIR /app + +# 빌드된 바이너리와 라이브러리 복사 +COPY --from=builder /src/build/initiad /app/ +COPY --from=builder /src/build/*.so /app/ +COPY --from=builder /src/build/*.dylib /app/ + +# 실행 명령 설정 +CMD ["/app/initiad", "version"] diff --git a/.github/workflows/Dockerfile.linux b/.github/workflows/Dockerfile.linux deleted file mode 100644 index 351e415b..00000000 --- a/.github/workflows/Dockerfile.linux +++ /dev/null @@ -1,34 +0,0 @@ -ARG ARCH -FROM --platform=linux/${ARCH} golang:1.20 - -ARG ARCH -ARG L1_VERSION -ARG L1_NETWORK_NAME -ARG MOVEVM_VERSION - -WORKDIR /workspace - -# 필요한 도구 설치 -RUN apt-get update && apt-get install -y make tar gzip - -# 소스 코드 복사 -COPY . . - -# 환경 변수 설정 -ENV ARCH=$ARCH -ENV L1_VERSION=$L1_VERSION -ENV L1_NETWORK_NAME=$L1_NETWORK_NAME -ENV MOVEVM_VERSION=$MOVEVM_VERSION - -# 빌드 스크립트 실행 -RUN cd initia \ - && make build-linux-with-shared-library \ - && cd ./build \ - && mv libmovevm.so libmovevm.${ARCH}.so \ - && mv libcompiler.so libcompiler.${ARCH}.so \ - && tar -czvf initia_${L1_VERSION}_Linux_${ARCH}.tar.gz ./initiad libmovevm.${ARCH}.so libcompiler.${ARCH}.so \ - && mkdir -p ../../networks/${L1_NETWORK_NAME}/binaries/ \ - && mv ./initia_${L1_VERSION}_Linux_${ARCH}.tar.gz ../../networks/${L1_NETWORK_NAME}/binaries/ - -# 결과물 복사 -RUN mkdir -p /output && cp networks/${L1_NETWORK_NAME}/binaries/initia_${L1_VERSION}_Linux_${ARCH}.tar.gz /output/ From ea329aea48934de9f12dd667e8fd9dd4c0e2a981 Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 15:43:59 +0900 Subject: [PATCH 51/75] Update build-darwin.yml --- .github/workflows/build-darwin.yml | 71 +++++++++++++++--------------- 1 file changed, 35 insertions(+), 36 deletions(-) diff --git a/.github/workflows/build-darwin.yml b/.github/workflows/build-darwin.yml index e75a1e6a..4e0b146f 100644 --- a/.github/workflows/build-darwin.yml +++ b/.github/workflows/build-darwin.yml @@ -1,4 +1,4 @@ -name: Cross-Platform Build and Upload +name: CI on: push: @@ -8,47 +8,47 @@ on: env: L1_NETWORK_NAME: testnet - GO_VERSION: '1.22' - MOVEVM_VERSION: 'v0.2.12' # 적절한 버전으로 변경하세요 jobs: - build-and-upload: + build: + runs-on: ubuntu-latest strategy: + fail-fast: false matrix: - os: [ubuntu-latest, macos-latest] - arch: [amd64, arm64] - runs-on: ${{ matrix.os }} + platform: + - linux/amd64 + - linux/arm64 + - darwin/amd64 + - darwin/arm64 + steps: - - name: Checkout code + - name: Checkout uses: actions/checkout@v3 - - name: Set up Go - uses: actions/setup-go@v4 - with: - go-version: ${{ env.GO_VERSION }} - - name: Set up QEMU - if: runner.os == 'Linux' uses: docker/setup-qemu-action@v2 - - name: Build for ${{ runner.os }}-${{ matrix.arch }} - env: - ARCH: ${{ matrix.arch }} - L1_VERSION: ${{ github.sha }} + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Build + uses: docker/build-push-action@v4 + with: + context: . + file: .github/workflows/Dockerfile + platforms: ${{ matrix.platform }} + load: true + tags: initia:${{ github.sha }} + + - name: Export binary run: | - if [ "${{ runner.os }}" == "Linux" ]; then - GOOS=linux GOARCH=${{ matrix.arch }} make build-linux-with-shared-library - cd build - mv libmovevm.so libmovevm.${{ matrix.arch }}.so - mv libcompiler.so libcompiler.${{ matrix.arch }}.so - tar -czvf initia_${L1_VERSION}_Linux_${{ matrix.arch }}.tar.gz ./initiad libmovevm.${{ matrix.arch }}.so libcompiler.${{ matrix.arch }}.so - else - GOOS=darwin GOARCH=${{ matrix.arch }} make build - cd build - cp ~/go/pkg/mod/github.com/initia-labs/movevm@${MOVEVM_VERSION}/api/libmovevm.dylib ./ - cp ~/go/pkg/mod/github.com/initia-labs/movevm@${MOVEVM_VERSION}/api/libcompiler.dylib ./ - tar -czvf initia_${L1_VERSION}_Darwin_${{ matrix.arch }}.tar.gz initiad libmovevm.dylib libcompiler.dylib - fi + platform=${{ matrix.platform }} + os=${platform%/*} + arch=${platform#*/} + container_id=$(docker create initia:${{ github.sha }}) + docker cp $container_id:/app ./app + tar -czvf initia_${{ github.sha }}_${os^}_${arch}.tar.gz -C app . + docker rm $container_id - name: Set up Cloud SDK uses: google-github-actions/setup-gcloud@v1 @@ -59,8 +59,7 @@ jobs: - name: Upload to GCS run: | - if [ "${{ runner.os }}" == "Linux" ]; then - gsutil cp build/initia_${L1_VERSION}_Linux_${{ matrix.arch }}.tar.gz gs://your-bucket-name/networks/${{ env.L1_NETWORK_NAME }}/binaries/ - else - gsutil cp build/initia_${L1_VERSION}_Darwin_${{ matrix.arch }}.tar.gz gs://your-bucket-name/networks/${{ env.L1_NETWORK_NAME }}/binaries/ - fi + platform=${{ matrix.platform }} + os=${platform%/*} + arch=${platform#*/} + gsutil cp initia_${{ github.sha }}_${os^}_${arch}.tar.gz gs://your-bucket-name/networks/${{ env.L1_NETWORK_NAME }}/binaries/ From 6dbd54dd6fe4b629bcb08498baf36b7af8bf7f71 Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 15:44:24 +0900 Subject: [PATCH 52/75] Update Dockerfile --- .github/workflows/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/Dockerfile b/.github/workflows/Dockerfile index 0fe8ccb3..84be60d3 100644 --- a/.github/workflows/Dockerfile +++ b/.github/workflows/Dockerfile @@ -15,7 +15,7 @@ RUN apk add --no-cache git make COPY . . # MOVEVM 버전 설정 (필요에 따라 조정) -ENV MOVEVM_VERSION=v0.3.4 +ENV MOVEVM_VERSION=v0.2.12 # TARGETOS와 TARGETARCH에 따라 빌드 명령 실행 RUN if [ "$TARGETOS" = "linux" ]; then \ From d8dadf28babdc205336bc728c07b2b7f1341b077 Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 15:46:55 +0900 Subject: [PATCH 53/75] Update Dockerfile --- .github/workflows/Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/Dockerfile b/.github/workflows/Dockerfile index 84be60d3..1e93f45f 100644 --- a/.github/workflows/Dockerfile +++ b/.github/workflows/Dockerfile @@ -1,5 +1,5 @@ # 빌드 단계 -FROM --platform=$BUILDPLATFORM golang:1.22-alpine AS builder +FROM --platform=$BUILDPLATFORM golang:1.22 AS builder ARG TARGETPLATFORM ARG BUILDPLATFORM @@ -9,7 +9,7 @@ ARG TARGETARCH WORKDIR /src # 필요한 빌드 도구 설치 -RUN apk add --no-cache git make +RUN apt-get update && apt-get install -y git make # 소스 코드 복사 COPY . . @@ -25,7 +25,7 @@ RUN if [ "$TARGETOS" = "linux" ]; then \ fi # 실행 단계 -FROM --platform=$TARGETPLATFORM alpine +FROM --platform=$TARGETPLATFORM golang:1.22-slim WORKDIR /app From 5fdb3029dc71c54a34a8b8d1990af941cab82467 Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 15:47:12 +0900 Subject: [PATCH 54/75] Update build-darwin.yml --- .github/workflows/build-darwin.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build-darwin.yml b/.github/workflows/build-darwin.yml index 4e0b146f..ace891a7 100644 --- a/.github/workflows/build-darwin.yml +++ b/.github/workflows/build-darwin.yml @@ -23,16 +23,16 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Set up QEMU - uses: docker/setup-qemu-action@v2 + uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 - name: Build - uses: docker/build-push-action@v4 + uses: docker/build-push-action@v5 with: context: . file: .github/workflows/Dockerfile @@ -51,7 +51,7 @@ jobs: docker rm $container_id - name: Set up Cloud SDK - uses: google-github-actions/setup-gcloud@v1 + uses: google-github-actions/setup-gcloud@v2 with: project_id: ${{ secrets.GCP_PROJECT_ID }} service_account_key: ${{ secrets.GCP_SA_KEY }} From 164fe8106104622f8193ab313232c09cde4b95f2 Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 15:50:14 +0900 Subject: [PATCH 55/75] Update Dockerfile --- .github/workflows/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/Dockerfile b/.github/workflows/Dockerfile index 1e93f45f..4bd1df34 100644 --- a/.github/workflows/Dockerfile +++ b/.github/workflows/Dockerfile @@ -25,7 +25,7 @@ RUN if [ "$TARGETOS" = "linux" ]; then \ fi # 실행 단계 -FROM --platform=$TARGETPLATFORM golang:1.22-slim +FROM --platform=$TARGETPLATFORM golang:1.22 WORKDIR /app From 04459f3bc81f27ea2676cd792b2287481279c087 Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 15:50:27 +0900 Subject: [PATCH 56/75] Update build-darwin.yml --- .github/workflows/build-darwin.yml | 52 ++++++++++++------------------ 1 file changed, 21 insertions(+), 31 deletions(-) diff --git a/.github/workflows/build-darwin.yml b/.github/workflows/build-darwin.yml index ace891a7..1dc4db3e 100644 --- a/.github/workflows/build-darwin.yml +++ b/.github/workflows/build-darwin.yml @@ -8,47 +8,40 @@ on: env: L1_NETWORK_NAME: testnet + MOVEVM_VERSION: v0.3.4 jobs: - build: + build-linux: runs-on: ubuntu-latest strategy: fail-fast: false matrix: - platform: - - linux/amd64 - - linux/arm64 - - darwin/amd64 - - darwin/arm64 + arch: [amd64, arm64] + steps: + # (이전과 동일한 steps) + build-darwin: + runs-on: macos-latest + strategy: + fail-fast: false + matrix: + arch: [amd64, arm64] steps: - name: Checkout uses: actions/checkout@v4 - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Build - uses: docker/build-push-action@v5 + - name: Set up Go + uses: actions/setup-go@v4 with: - context: . - file: .github/workflows/Dockerfile - platforms: ${{ matrix.platform }} - load: true - tags: initia:${{ github.sha }} + go-version: '1.22' - - name: Export binary + - name: Build run: | - platform=${{ matrix.platform }} - os=${platform%/*} - arch=${platform#*/} - container_id=$(docker create initia:${{ github.sha }}) - docker cp $container_id:/app ./app - tar -czvf initia_${{ github.sha }}_${os^}_${arch}.tar.gz -C app . - docker rm $container_id + make build ARCH=${{ matrix.arch }} + cd build + cp ~/go/pkg/mod/github.com/initia-labs/movevm@${MOVEVM_VERSION}/api/libmovevm.dylib ./ + cp ~/go/pkg/mod/github.com/initia-labs/movevm@${MOVEVM_VERSION}/api/libcompiler.dylib ./ + tar -czvf initia_${{ github.sha }}_Darwin_${{ matrix.arch }}.tar.gz initiad libmovevm.dylib libcompiler.dylib - name: Set up Cloud SDK uses: google-github-actions/setup-gcloud@v2 @@ -59,7 +52,4 @@ jobs: - name: Upload to GCS run: | - platform=${{ matrix.platform }} - os=${platform%/*} - arch=${platform#*/} - gsutil cp initia_${{ github.sha }}_${os^}_${arch}.tar.gz gs://your-bucket-name/networks/${{ env.L1_NETWORK_NAME }}/binaries/ + gsutil cp build/initia_${{ github.sha }}_Darwin_${{ matrix.arch }}.tar.gz gs://your-bucket-name/networks/${{ env.L1_NETWORK_NAME }}/binaries/ From e3f3edb40b2883ddc6d9a0ea346770342dbb597b Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 15:50:40 +0900 Subject: [PATCH 57/75] Update build-darwin.yml --- .github/workflows/build-darwin.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-darwin.yml b/.github/workflows/build-darwin.yml index 1dc4db3e..1f57c89b 100644 --- a/.github/workflows/build-darwin.yml +++ b/.github/workflows/build-darwin.yml @@ -8,7 +8,7 @@ on: env: L1_NETWORK_NAME: testnet - MOVEVM_VERSION: v0.3.4 + MOVEVM_VERSION: v0.2.12 jobs: build-linux: From 07149654f2fec933abb2caf9996a0c56e0402753 Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 15:52:05 +0900 Subject: [PATCH 58/75] Update build-darwin.yml --- .github/workflows/build-darwin.yml | 36 +++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-darwin.yml b/.github/workflows/build-darwin.yml index 1f57c89b..dcc83bfd 100644 --- a/.github/workflows/build-darwin.yml +++ b/.github/workflows/build-darwin.yml @@ -18,7 +18,41 @@ jobs: matrix: arch: [amd64, arm64] steps: - # (이전과 동일한 steps) + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Build + uses: docker/build-push-action@v5 + with: + context: . + file: .github/workflows/Dockerfile + platforms: linux/${{ matrix.arch }} + load: true + tags: initia:${{ github.sha }} + + - name: Export binary + run: | + container_id=$(docker create initia:${{ github.sha }}) + docker cp $container_id:/app ./app + tar -czvf initia_${{ github.sha }}_Linux_${{ matrix.arch }}.tar.gz -C app . + docker rm $container_id + + - name: Set up Cloud SDK + uses: google-github-actions/setup-gcloud@v2 + with: + project_id: ${{ secrets.GCP_PROJECT_ID }} + service_account_key: ${{ secrets.GCP_SA_KEY }} + export_default_credentials: true + + - name: Upload to GCS + run: | + gsutil cp initia_${{ github.sha }}_Linux_${{ matrix.arch }}.tar.gz gs://your-bucket-name/networks/${{ env.L1_NETWORK_NAME }}/binaries/ build-darwin: runs-on: macos-latest From 454fd4aae8873ec970af4dad4c13be18425dd8af Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 15:55:22 +0900 Subject: [PATCH 59/75] Update Dockerfile --- .github/workflows/Dockerfile | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/.github/workflows/Dockerfile b/.github/workflows/Dockerfile index 4bd1df34..63a76b2d 100644 --- a/.github/workflows/Dockerfile +++ b/.github/workflows/Dockerfile @@ -17,11 +17,23 @@ COPY . . # MOVEVM 버전 설정 (필요에 따라 조정) ENV MOVEVM_VERSION=v0.2.12 +# 디버깅을 위한 환경 출력 +RUN echo "TARGETOS: $TARGETOS" && \ + echo "TARGETARCH: $TARGETARCH" && \ + echo "Current directory:" && \ + pwd && \ + echo "Directory contents:" && \ + ls -la + # TARGETOS와 TARGETARCH에 따라 빌드 명령 실행 RUN if [ "$TARGETOS" = "linux" ]; then \ - make build-linux-with-shared-library ARCH=$TARGETARCH; \ + echo "Building for Linux" && \ + make build-linux-with-shared-library ARCH=$TARGETARCH || (echo "Make failed" && cat Makefile && exit 1); \ elif [ "$TARGETOS" = "darwin" ]; then \ - make build ARCH=$TARGETARCH; \ + echo "Building for Darwin" && \ + make build ARCH=$TARGETARCH || (echo "Make failed" && cat Makefile && exit 1); \ + else \ + echo "Unknown OS: $TARGETOS" && exit 1; \ fi # 실행 단계 From 795ede9f7b1465c3fb74304d2f79300f9b94e3cb Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 15:56:53 +0900 Subject: [PATCH 60/75] Update build-darwin.yml --- .github/workflows/build-darwin.yml | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-darwin.yml b/.github/workflows/build-darwin.yml index dcc83bfd..f0ad9abf 100644 --- a/.github/workflows/build-darwin.yml +++ b/.github/workflows/build-darwin.yml @@ -20,13 +20,13 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 - + - name: Set up QEMU uses: docker/setup-qemu-action@v3 - + - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - + - name: Build uses: docker/build-push-action@v5 with: @@ -36,6 +36,11 @@ jobs: load: true tags: initia:${{ github.sha }} + - name: Show Docker build logs + if: failure() + run: docker buildx build --progress=plain --platform linux/${{ matrix.arch }} -f .github/workflows/Dockerfile . + + - name: Export binary run: | container_id=$(docker create initia:${{ github.sha }}) From c0f3b81770d506cbe3cbb9375f09577949b4fe75 Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 16:01:14 +0900 Subject: [PATCH 61/75] Update and rename Dockerfile to Dockerfile.linux.amd64 --- .github/workflows/Dockerfile | 50 ------------------------ .github/workflows/Dockerfile.linux.amd64 | 20 ++++++++++ 2 files changed, 20 insertions(+), 50 deletions(-) delete mode 100644 .github/workflows/Dockerfile create mode 100644 .github/workflows/Dockerfile.linux.amd64 diff --git a/.github/workflows/Dockerfile b/.github/workflows/Dockerfile deleted file mode 100644 index 63a76b2d..00000000 --- a/.github/workflows/Dockerfile +++ /dev/null @@ -1,50 +0,0 @@ -# 빌드 단계 -FROM --platform=$BUILDPLATFORM golang:1.22 AS builder - -ARG TARGETPLATFORM -ARG BUILDPLATFORM -ARG TARGETOS -ARG TARGETARCH - -WORKDIR /src - -# 필요한 빌드 도구 설치 -RUN apt-get update && apt-get install -y git make - -# 소스 코드 복사 -COPY . . - -# MOVEVM 버전 설정 (필요에 따라 조정) -ENV MOVEVM_VERSION=v0.2.12 - -# 디버깅을 위한 환경 출력 -RUN echo "TARGETOS: $TARGETOS" && \ - echo "TARGETARCH: $TARGETARCH" && \ - echo "Current directory:" && \ - pwd && \ - echo "Directory contents:" && \ - ls -la - -# TARGETOS와 TARGETARCH에 따라 빌드 명령 실행 -RUN if [ "$TARGETOS" = "linux" ]; then \ - echo "Building for Linux" && \ - make build-linux-with-shared-library ARCH=$TARGETARCH || (echo "Make failed" && cat Makefile && exit 1); \ - elif [ "$TARGETOS" = "darwin" ]; then \ - echo "Building for Darwin" && \ - make build ARCH=$TARGETARCH || (echo "Make failed" && cat Makefile && exit 1); \ - else \ - echo "Unknown OS: $TARGETOS" && exit 1; \ - fi - -# 실행 단계 -FROM --platform=$TARGETPLATFORM golang:1.22 - -WORKDIR /app - -# 빌드된 바이너리와 라이브러리 복사 -COPY --from=builder /src/build/initiad /app/ -COPY --from=builder /src/build/*.so /app/ -COPY --from=builder /src/build/*.dylib /app/ - -# 실행 명령 설정 -CMD ["/app/initiad", "version"] diff --git a/.github/workflows/Dockerfile.linux.amd64 b/.github/workflows/Dockerfile.linux.amd64 new file mode 100644 index 00000000..298e45da --- /dev/null +++ b/.github/workflows/Dockerfile.linux.amd64 @@ -0,0 +1,20 @@ +FROM golang:1.22 + +WORKDIR /src + +RUN apt-get update && apt-get install -y git make + +COPY . . + +ENV MOVEVM_VERSION=v0.2.12 + +RUN make build-linux-with-shared-library ARCH=amd64 + +FROM ubuntu:20.04 + +WORKDIR /app + +COPY --from=0 /src/build/initiad /app/ +COPY --from=0 /src/build/*.so /app/ + +CMD ["/app/initiad", "version"] From b891f1ea88d63aa6994c618262097e649a38a5eb Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 16:01:47 +0900 Subject: [PATCH 62/75] Update build-darwin.yml --- .github/workflows/build-darwin.yml | 79 +++++------------------------- 1 file changed, 11 insertions(+), 68 deletions(-) diff --git a/.github/workflows/build-darwin.yml b/.github/workflows/build-darwin.yml index f0ad9abf..ff04bbf2 100644 --- a/.github/workflows/build-darwin.yml +++ b/.github/workflows/build-darwin.yml @@ -11,84 +11,27 @@ env: MOVEVM_VERSION: v0.2.12 jobs: - build-linux: + build-linux-amd64: runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - arch: [amd64, arm64] steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - + - uses: actions/checkout@v4 + - uses: docker/setup-buildx-action@v3 - name: Build uses: docker/build-push-action@v5 with: context: . - file: .github/workflows/Dockerfile - platforms: linux/${{ matrix.arch }} + file: .github/workflows/Dockerfile.linux.amd64 load: true - tags: initia:${{ github.sha }} - - - name: Show Docker build logs - if: failure() - run: docker buildx build --progress=plain --platform linux/${{ matrix.arch }} -f .github/workflows/Dockerfile . - - + tags: initia:linux-amd64 - name: Export binary run: | - container_id=$(docker create initia:${{ github.sha }}) - docker cp $container_id:/app ./app - tar -czvf initia_${{ github.sha }}_Linux_${{ matrix.arch }}.tar.gz -C app . - docker rm $container_id - - - name: Set up Cloud SDK - uses: google-github-actions/setup-gcloud@v2 - with: - project_id: ${{ secrets.GCP_PROJECT_ID }} - service_account_key: ${{ secrets.GCP_SA_KEY }} - export_default_credentials: true - - - name: Upload to GCS - run: | - gsutil cp initia_${{ github.sha }}_Linux_${{ matrix.arch }}.tar.gz gs://your-bucket-name/networks/${{ env.L1_NETWORK_NAME }}/binaries/ - - build-darwin: - runs-on: macos-latest - strategy: - fail-fast: false - matrix: - arch: [amd64, arm64] - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Set up Go - uses: actions/setup-go@v4 - with: - go-version: '1.22' - - - name: Build - run: | - make build ARCH=${{ matrix.arch }} - cd build - cp ~/go/pkg/mod/github.com/initia-labs/movevm@${MOVEVM_VERSION}/api/libmovevm.dylib ./ - cp ~/go/pkg/mod/github.com/initia-labs/movevm@${MOVEVM_VERSION}/api/libcompiler.dylib ./ - tar -czvf initia_${{ github.sha }}_Darwin_${{ matrix.arch }}.tar.gz initiad libmovevm.dylib libcompiler.dylib - - - name: Set up Cloud SDK - uses: google-github-actions/setup-gcloud@v2 + docker create --name temp initia:linux-amd64 + docker cp temp:/app ./app + tar -czvf initia_${{ github.sha }}_Linux_amd64.tar.gz -C app . + docker rm temp + - uses: google-github-actions/setup-gcloud@v2 with: project_id: ${{ secrets.GCP_PROJECT_ID }} service_account_key: ${{ secrets.GCP_SA_KEY }} - export_default_credentials: true - - name: Upload to GCS - run: | - gsutil cp build/initia_${{ github.sha }}_Darwin_${{ matrix.arch }}.tar.gz gs://your-bucket-name/networks/${{ env.L1_NETWORK_NAME }}/binaries/ + run: gsutil cp initia_${{ github.sha }}_Linux_amd64.tar.gz gs://your-bucket-name/networks/${{ env.L1_NETWORK_NAME }}/binaries/ From 5aac094b1ed0c3b47e31eff64fc9f212c10c394b Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 16:06:28 +0900 Subject: [PATCH 63/75] Update Dockerfile.linux.amd64 --- .github/workflows/Dockerfile.linux.amd64 | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/.github/workflows/Dockerfile.linux.amd64 b/.github/workflows/Dockerfile.linux.amd64 index 298e45da..57ffdf48 100644 --- a/.github/workflows/Dockerfile.linux.amd64 +++ b/.github/workflows/Dockerfile.linux.amd64 @@ -8,7 +8,27 @@ COPY . . ENV MOVEVM_VERSION=v0.2.12 -RUN make build-linux-with-shared-library ARCH=amd64 +# 디버깅을 위한 환경 출력 +RUN echo "Current directory:" && \ + pwd && \ + echo "Directory contents:" && \ + ls -la && \ + echo "Makefile contents:" && \ + cat Makefile + +# 빌드 명령 실행 및 오류 시 추가 정보 출력 +RUN make build-linux-with-shared-library ARCH=amd64 || { \ + echo "Make failed. Displaying debug information:"; \ + echo "Go version:"; \ + go version; \ + echo "Go environment:"; \ + go env; \ + echo "Make version:"; \ + make --version; \ + echo "Shell:"; \ + echo $SHELL; \ + exit 1; \ + } FROM ubuntu:20.04 From fff013afb6e7068d57c71509b26c24d74c6a3192 Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 16:09:14 +0900 Subject: [PATCH 64/75] Update Dockerfile.linux.amd64 --- .github/workflows/Dockerfile.linux.amd64 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/Dockerfile.linux.amd64 b/.github/workflows/Dockerfile.linux.amd64 index 57ffdf48..051d90e1 100644 --- a/.github/workflows/Dockerfile.linux.amd64 +++ b/.github/workflows/Dockerfile.linux.amd64 @@ -27,6 +27,8 @@ RUN make build-linux-with-shared-library ARCH=amd64 || { \ make --version; \ echo "Shell:"; \ echo $SHELL; \ + echo "Make verbose output:"; \ + make build-linux-with-shared-library ARCH=amd64 -n; \ exit 1; \ } From fa7c2afe62b9b5149280967717603addd4960357 Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 16:11:42 +0900 Subject: [PATCH 65/75] Update Dockerfile.linux.amd64 --- .github/workflows/Dockerfile.linux.amd64 | 31 ++++++------------------ 1 file changed, 8 insertions(+), 23 deletions(-) diff --git a/.github/workflows/Dockerfile.linux.amd64 b/.github/workflows/Dockerfile.linux.amd64 index 051d90e1..bba4e752 100644 --- a/.github/workflows/Dockerfile.linux.amd64 +++ b/.github/workflows/Dockerfile.linux.amd64 @@ -8,29 +8,14 @@ COPY . . ENV MOVEVM_VERSION=v0.2.12 -# 디버깅을 위한 환경 출력 -RUN echo "Current directory:" && \ - pwd && \ - echo "Directory contents:" && \ - ls -la && \ - echo "Makefile contents:" && \ - cat Makefile - -# 빌드 명령 실행 및 오류 시 추가 정보 출력 -RUN make build-linux-with-shared-library ARCH=amd64 || { \ - echo "Make failed. Displaying debug information:"; \ - echo "Go version:"; \ - go version; \ - echo "Go environment:"; \ - go env; \ - echo "Make version:"; \ - make --version; \ - echo "Shell:"; \ - echo $SHELL; \ - echo "Make verbose output:"; \ - make build-linux-with-shared-library ARCH=amd64 -n; \ - exit 1; \ - } +# 직접 빌드 수행 +RUN go mod download +RUN CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build -o /src/build/initiad ./cmd/initiad + +# 공유 라이브러리 복사 (이 부분은 프로젝트 구조에 따라 조정 필요) +RUN mkdir -p /src/build +RUN cp /go/pkg/mod/github.com/initia-labs/movevm@${MOVEVM_VERSION}/api/libmovevm.so /src/build/ +RUN cp /go/pkg/mod/github.com/initia-labs/movevm@${MOVEVM_VERSION}/api/libcompiler.so /src/build/ FROM ubuntu:20.04 From 22faf0ca4a6eead89aa7da8c02fc5d491ac7c103 Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 16:15:33 +0900 Subject: [PATCH 66/75] Update Dockerfile.linux.amd64 --- .github/workflows/Dockerfile.linux.amd64 | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/workflows/Dockerfile.linux.amd64 b/.github/workflows/Dockerfile.linux.amd64 index bba4e752..621ea44e 100644 --- a/.github/workflows/Dockerfile.linux.amd64 +++ b/.github/workflows/Dockerfile.linux.amd64 @@ -8,14 +8,19 @@ COPY . . ENV MOVEVM_VERSION=v0.2.12 -# 직접 빌드 수행 +# Go 모듈 다운로드 RUN go mod download + +# 직접 빌드 수행 RUN CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build -o /src/build/initiad ./cmd/initiad # 공유 라이브러리 복사 (이 부분은 프로젝트 구조에 따라 조정 필요) RUN mkdir -p /src/build -RUN cp /go/pkg/mod/github.com/initia-labs/movevm@${MOVEVM_VERSION}/api/libmovevm.so /src/build/ -RUN cp /go/pkg/mod/github.com/initia-labs/movevm@${MOVEVM_VERSION}/api/libcompiler.so /src/build/ +RUN go list -m all | grep github.com/initia-labs/movevm +RUN find /go/pkg/mod -name "libmovevm.so" +RUN find /go/pkg/mod -name "libcompiler.so" +RUN cp $(find /go/pkg/mod -name "libmovevm.so" | head -n 1) /src/build/ || echo "libmovevm.so not found" +RUN cp $(find /go/pkg/mod -name "libcompiler.so" | head -n 1) /src/build/ || echo "libcompiler.so not found" FROM ubuntu:20.04 From 9ffd42d93a1d66aad4236f257e8a21eb02d3dc3f Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 16:22:34 +0900 Subject: [PATCH 67/75] Update and rename build-darwin.yml to linux-amd64.yml --- .github/workflows/build-darwin.yml | 37 ------------------- .github/workflows/linux-amd64.yml | 57 ++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+), 37 deletions(-) delete mode 100644 .github/workflows/build-darwin.yml create mode 100644 .github/workflows/linux-amd64.yml diff --git a/.github/workflows/build-darwin.yml b/.github/workflows/build-darwin.yml deleted file mode 100644 index ff04bbf2..00000000 --- a/.github/workflows/build-darwin.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: CI - -on: - push: - branches: [ "main" ] - pull_request: - branches: [ "main" ] - -env: - L1_NETWORK_NAME: testnet - MOVEVM_VERSION: v0.2.12 - -jobs: - build-linux-amd64: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: docker/setup-buildx-action@v3 - - name: Build - uses: docker/build-push-action@v5 - with: - context: . - file: .github/workflows/Dockerfile.linux.amd64 - load: true - tags: initia:linux-amd64 - - name: Export binary - run: | - docker create --name temp initia:linux-amd64 - docker cp temp:/app ./app - tar -czvf initia_${{ github.sha }}_Linux_amd64.tar.gz -C app . - docker rm temp - - uses: google-github-actions/setup-gcloud@v2 - with: - project_id: ${{ secrets.GCP_PROJECT_ID }} - service_account_key: ${{ secrets.GCP_SA_KEY }} - - name: Upload to GCS - run: gsutil cp initia_${{ github.sha }}_Linux_amd64.tar.gz gs://your-bucket-name/networks/${{ env.L1_NETWORK_NAME }}/binaries/ diff --git a/.github/workflows/linux-amd64.yml b/.github/workflows/linux-amd64.yml new file mode 100644 index 00000000..f4df2c62 --- /dev/null +++ b/.github/workflows/linux-amd64.yml @@ -0,0 +1,57 @@ +name: CI + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + +env: + L1_NETWORK_NAME: testnet + MOVEVM_VERSION: v0.2.12 + +jobs: + build-linux-amd64: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: docker/setup-buildx-action@v3 + - name: Build + uses: docker/build-push-action@v5 + with: + context: . + file: .github/workflows/Dockerfile.linux.amd64 + load: true + tags: initia:linux-amd64 + - name: Export binary + run: | + docker create --name temp initia:linux-amd64 + docker cp temp:/app ./app + tar -czvf initia_${{ github.sha }}_Linux_amd64.tar.gz -C app . + docker rm temp + + - name: Google Auth + uses: 'google-github-actions/auth@v2' + with: + credentials_json: '${{ secrets.GCP_SA_KEY }}' + + - name: Set up Cloud SDK + uses: 'google-github-actions/setup-gcloud@v2' + + - name: Upload to GCS + env: + GCS_BUCKET: ${{ secrets.GCS_BUCKET }} + run: | + gsutil cp initia_${{ github.sha }}_Linux_amd64.tar.gz gs://${GCS_BUCKET}/networks/testnet/binaries/ + + - name: Verify upload and Generate public URL + env: + GCS_BUCKET: ${{ secrets.GCS_BUCKET }} + run: | + if gsutil stat gs://${GCS_BUCKET}/networks/testnet/binaries/initia_${{ github.sha }}_Linux_amd64.tar.gz; then + echo "File successfully uploaded" + echo "Public URL: https://storage.googleapis.com/${GCS_BUCKET}/networks/testnet/binaries/initia_${{ github.sha }}_Linux_amd64.tar.gz" >> $GITHUB_STEP_SUMMARY + else + echo "File upload failed" + exit 1 + fi From f0face0c47a09b68b670612bd4a5c897848dd188 Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 16:29:53 +0900 Subject: [PATCH 68/75] Update Dockerfile.linux.amd64 --- .github/workflows/Dockerfile.linux.amd64 | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/.github/workflows/Dockerfile.linux.amd64 b/.github/workflows/Dockerfile.linux.amd64 index 621ea44e..be44cace 100644 --- a/.github/workflows/Dockerfile.linux.amd64 +++ b/.github/workflows/Dockerfile.linux.amd64 @@ -8,25 +8,23 @@ COPY . . ENV MOVEVM_VERSION=v0.2.12 -# Go 모듈 다운로드 +# Go 모듈 다운로드 및 빌드 RUN go mod download +RUN make build-linux-with-shared-library ARCH=amd64 -# 직접 빌드 수행 -RUN CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build -o /src/build/initiad ./cmd/initiad - -# 공유 라이브러리 복사 (이 부분은 프로젝트 구조에 따라 조정 필요) -RUN mkdir -p /src/build -RUN go list -m all | grep github.com/initia-labs/movevm -RUN find /go/pkg/mod -name "libmovevm.so" -RUN find /go/pkg/mod -name "libcompiler.so" -RUN cp $(find /go/pkg/mod -name "libmovevm.so" | head -n 1) /src/build/ || echo "libmovevm.so not found" -RUN cp $(find /go/pkg/mod -name "libcompiler.so" | head -n 1) /src/build/ || echo "libcompiler.so not found" +# 결과물 준비 +RUN mkdir -p /output && \ + cd build && \ + mv libmovevm.so libmovevm.amd64.so && \ + mv libcompiler.so libcompiler.amd64.so && \ + cp initiad libmovevm.amd64.so libcompiler.amd64.so /output/ FROM ubuntu:20.04 WORKDIR /app -COPY --from=0 /src/build/initiad /app/ -COPY --from=0 /src/build/*.so /app/ +COPY --from=0 /output/initiad /app/ +COPY --from=0 /output/libmovevm.amd64.so /app/ +COPY --from=0 /output/libcompiler.amd64.so /app/ CMD ["/app/initiad", "version"] From f3198c0563eaa68ee4210380d4a81513b4f29d59 Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 16:30:36 +0900 Subject: [PATCH 69/75] Update build-linux-amd64.yml --- .github/workflows/build-linux-amd64.yml | 48 +++++++++++-------------- 1 file changed, 21 insertions(+), 27 deletions(-) diff --git a/.github/workflows/build-linux-amd64.yml b/.github/workflows/build-linux-amd64.yml index a3c6b70a..709d362e 100644 --- a/.github/workflows/build-linux-amd64.yml +++ b/.github/workflows/build-linux-amd64.yml @@ -7,32 +7,24 @@ jobs: build: runs-on: ubuntu-latest steps: - - name: Checkout code - uses: actions/checkout@v3 - - - name: Set up Go - uses: actions/setup-go@v4 + - uses: actions/checkout@v4 + - uses: docker/setup-buildx-action@v3 + - name: Build + uses: docker/build-push-action@v5 with: - go-version: '1.22.4' - - - name: Build for Linux AMD64 - env: - GOARCH: amd64 + context: . + file: .github/workflows/Dockerfile.linux.amd64 + load: true + tags: initia:linux-amd64 + - name: Export binary and libraries run: | - echo "Building for GOARCH=amd64" - make build-linux-with-shared-library GOARCH=amd64 - cd ./build - mkdir -p initia_${GITHUB_REF#refs/tags/} - mv libmovevm.so initia_${GITHUB_REF#refs/tags/}/libmovevm.amd64.so - mv libcompiler.so initia_${GITHUB_REF#refs/tags/}/libcompiler.amd64.so - mv initiad initia_${GITHUB_REF#refs/tags/}/ - tar -czvf initia_${GITHUB_REF#refs/tags/}_Linux_amd64.tar.gz initia_${GITHUB_REF#refs/tags/} - - - name: Verify binary architecture - run: | - file ./build/initia_${GITHUB_REF#refs/tags/}/initiad - file ./build/initia_${GITHUB_REF#refs/tags/}/libmovevm.amd64.so - file ./build/initia_${GITHUB_REF#refs/tags/}/libcompiler.amd64.so + mkdir -p ./output + docker create --name temp initia:linux-amd64 + docker cp temp:/app/initiad ./output/ + docker cp temp:/app/libmovevm.amd64.so ./output/ + docker cp temp:/app/libcompiler.amd64.so ./output/ + docker rm temp + tar -czvf initia_${{ github.sha }}_Linux_amd64.tar.gz -C output . - name: Google Auth uses: 'google-github-actions/auth@v2' @@ -46,16 +38,18 @@ jobs: env: GCS_BUCKET: ${{ secrets.GCS_BUCKET }} run: | - gsutil cp ./build/initia_${GITHUB_REF#refs/tags/}_Linux_amd64.tar.gz gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags/}/ + gsutil cp initia_${{ github.sha }}_Linux_amd64.tar.gz gs://${GCS_BUCKET}/networks/testnet/binaries/ - name: Verify upload and Generate public URL env: GCS_BUCKET: ${{ secrets.GCS_BUCKET }} run: | - if gsutil stat gs://${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags/}/initia_${GITHUB_REF#refs/tags/}_Linux_amd64.tar.gz; then + if gsutil stat gs://${GCS_BUCKET}/networks/testnet/binaries/initia_${{ github.sha }}_Linux_amd64.tar.gz; then echo "File successfully uploaded" - echo "Public URL: https://storage.googleapis.com/${GCS_BUCKET}/initia/${GITHUB_REF#refs/tags/}/initia_${GITHUB_REF#refs/tags/}_Linux_amd64.tar.gz" >> $GITHUB_STEP_SUMMARY + echo "Public URL: https://storage.googleapis.com/${GCS_BUCKET}/networks/testnet/binaries/initia_${{ github.sha }}_Linux_amd64.tar.gz" >> $GITHUB_STEP_SUMMARY else echo "File upload failed" exit 1 fi + exit 1 + fi From 75c51480402e8c8a658f2ad65a2b93d79314ff3a Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 16:32:41 +0900 Subject: [PATCH 70/75] Update Dockerfile.linux.amd64 --- .github/workflows/Dockerfile.linux.amd64 | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/Dockerfile.linux.amd64 b/.github/workflows/Dockerfile.linux.amd64 index be44cace..c901145a 100644 --- a/.github/workflows/Dockerfile.linux.amd64 +++ b/.github/workflows/Dockerfile.linux.amd64 @@ -14,10 +14,9 @@ RUN make build-linux-with-shared-library ARCH=amd64 # 결과물 준비 RUN mkdir -p /output && \ - cd build && \ - mv libmovevm.so libmovevm.amd64.so && \ - mv libcompiler.so libcompiler.amd64.so && \ - cp initiad libmovevm.amd64.so libcompiler.amd64.so /output/ + cp build/initiad /output/ && \ + cp build/libmovevm.so /output/libmovevm.amd64.so && \ + cp build/libcompiler.so /output/libcompiler.amd64.so FROM ubuntu:20.04 From 22f77201ff9c07adac4539a188c64d1d7e889a06 Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 16:33:21 +0900 Subject: [PATCH 71/75] Update build-linux-amd64.yml --- .github/workflows/build-linux-amd64.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-linux-amd64.yml b/.github/workflows/build-linux-amd64.yml index 709d362e..21556398 100644 --- a/.github/workflows/build-linux-amd64.yml +++ b/.github/workflows/build-linux-amd64.yml @@ -24,7 +24,7 @@ jobs: docker cp temp:/app/libmovevm.amd64.so ./output/ docker cp temp:/app/libcompiler.amd64.so ./output/ docker rm temp - tar -czvf initia_${{ github.sha }}_Linux_amd64.tar.gz -C output . + tar -czvf initia_${{ github.sha }}_Linux_amd64.tar.gz -C output initiad libmovevm.amd64.so libcompiler.amd64.so - name: Google Auth uses: 'google-github-actions/auth@v2' From 6616743441e6bea4b0a5371d133fe8536cc65338 Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 16:35:08 +0900 Subject: [PATCH 72/75] Update Dockerfile.linux.amd64 --- .github/workflows/Dockerfile.linux.amd64 | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/.github/workflows/Dockerfile.linux.amd64 b/.github/workflows/Dockerfile.linux.amd64 index c901145a..bd4e2ef8 100644 --- a/.github/workflows/Dockerfile.linux.amd64 +++ b/.github/workflows/Dockerfile.linux.amd64 @@ -8,15 +8,22 @@ COPY . . ENV MOVEVM_VERSION=v0.2.12 -# Go 모듈 다운로드 및 빌드 +# Go 모듈 다운로드 RUN go mod download -RUN make build-linux-with-shared-library ARCH=amd64 + +# 직접 빌드 수행 +RUN CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build -o /src/build/initiad ./cmd/initiad + +# movevm 라이브러리 다운로드 및 복사 +RUN go get github.com/initia-labs/movevm@${MOVEVM_VERSION} +RUN cp /go/pkg/mod/github.com/initia-labs/movevm@${MOVEVM_VERSION}/api/libmovevm.so /src/build/libmovevm.amd64.so +RUN cp /go/pkg/mod/github.com/initia-labs/movevm@${MOVEVM_VERSION}/api/libcompiler.so /src/build/libcompiler.amd64.so # 결과물 준비 RUN mkdir -p /output && \ - cp build/initiad /output/ && \ - cp build/libmovevm.so /output/libmovevm.amd64.so && \ - cp build/libcompiler.so /output/libcompiler.amd64.so + cp /src/build/initiad /output/ && \ + cp /src/build/libmovevm.amd64.so /output/ && \ + cp /src/build/libcompiler.amd64.so /output/ FROM ubuntu:20.04 From 48e9cddd2c47d2d88abb468c19492d339b61d338 Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 16:39:28 +0900 Subject: [PATCH 73/75] Update build-linux-amd64.yml --- .github/workflows/build-linux-amd64.yml | 105 +++++++++++++----------- 1 file changed, 56 insertions(+), 49 deletions(-) diff --git a/.github/workflows/build-linux-amd64.yml b/.github/workflows/build-linux-amd64.yml index 21556398..2f330589 100644 --- a/.github/workflows/build-linux-amd64.yml +++ b/.github/workflows/build-linux-amd64.yml @@ -1,55 +1,62 @@ -name: Build Linux AMD64 +name: Build and Upload Linux AMD64 on: - workflow_call: + push: + branches: [ main ] + pull_request: + branches: [ main ] + +env: + GO_VERSION: '1.22' + MOVEVM_VERSION: 'v0.2.12' + L1_NETWORK_NAME: 'testnet' jobs: - build: + build-and-upload: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - - uses: docker/setup-buildx-action@v3 - - name: Build - uses: docker/build-push-action@v5 - with: - context: . - file: .github/workflows/Dockerfile.linux.amd64 - load: true - tags: initia:linux-amd64 - - name: Export binary and libraries - run: | - mkdir -p ./output - docker create --name temp initia:linux-amd64 - docker cp temp:/app/initiad ./output/ - docker cp temp:/app/libmovevm.amd64.so ./output/ - docker cp temp:/app/libcompiler.amd64.so ./output/ - docker rm temp - tar -czvf initia_${{ github.sha }}_Linux_amd64.tar.gz -C output initiad libmovevm.amd64.so libcompiler.amd64.so - - - name: Google Auth - uses: 'google-github-actions/auth@v2' - with: - credentials_json: '${{ secrets.GCP_SA_KEY }}' - - - name: Set up Cloud SDK - uses: 'google-github-actions/setup-gcloud@v2' - - - name: Upload to GCS - env: - GCS_BUCKET: ${{ secrets.GCS_BUCKET }} - run: | - gsutil cp initia_${{ github.sha }}_Linux_amd64.tar.gz gs://${GCS_BUCKET}/networks/testnet/binaries/ - - - name: Verify upload and Generate public URL - env: - GCS_BUCKET: ${{ secrets.GCS_BUCKET }} - run: | - if gsutil stat gs://${GCS_BUCKET}/networks/testnet/binaries/initia_${{ github.sha }}_Linux_amd64.tar.gz; then - echo "File successfully uploaded" - echo "Public URL: https://storage.googleapis.com/${GCS_BUCKET}/networks/testnet/binaries/initia_${{ github.sha }}_Linux_amd64.tar.gz" >> $GITHUB_STEP_SUMMARY - else - echo "File upload failed" - exit 1 - fi - exit 1 - fi + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Go + uses: actions/setup-go@v4 + with: + go-version: ${{ env.GO_VERSION }} + + - name: Build initiad + run: | + make build-linux-with-shared-library ARCH=amd64 + + - name: Prepare artifacts + run: | + mkdir -p artifacts + cp build/initiad artifacts/ + cp build/libmovevm.so artifacts/libmovevm.amd64.so + cp build/libcompiler.so artifacts/libcompiler.amd64.so + tar -czvf initia_${{ github.sha }}_Linux_amd64.tar.gz -C artifacts . + + - name: Google Auth + uses: 'google-github-actions/auth@v2' + with: + credentials_json: '${{ secrets.GCP_SA_KEY }}' + + - name: Set up Cloud SDK + uses: 'google-github-actions/setup-gcloud@v2' + + - name: Upload to GCS + env: + GCS_BUCKET: ${{ secrets.GCS_BUCKET }} + run: | + gsutil cp initia_${{ github.sha }}_Linux_amd64.tar.gz gs://${GCS_BUCKET}/networks/${{ env.L1_NETWORK_NAME }}/binaries/ + + - name: Verify upload and Generate public URL + env: + GCS_BUCKET: ${{ secrets.GCS_BUCKET }} + run: | + if gsutil stat gs://${GCS_BUCKET}/networks/${{ env.L1_NETWORK_NAME }}/binaries/initia_${{ github.sha }}_Linux_amd64.tar.gz; then + echo "File successfully uploaded" + echo "Public URL: https://storage.googleapis.com/${GCS_BUCKET}/networks/${{ env.L1_NETWORK_NAME }}/binaries/initia_${{ github.sha }}_Linux_amd64.tar.gz" >> $GITHUB_STEP_SUMMARY + else + echo "File upload failed" + exit 1 + fi From 10e7d21015451500639a68fd9165a7c0ee1bee6e Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 16:45:47 +0900 Subject: [PATCH 74/75] Create build-darwin-amd64.yml --- .github/workflows/build-darwin-amd64.yml | 62 ++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 .github/workflows/build-darwin-amd64.yml diff --git a/.github/workflows/build-darwin-amd64.yml b/.github/workflows/build-darwin-amd64.yml new file mode 100644 index 00000000..eb178c76 --- /dev/null +++ b/.github/workflows/build-darwin-amd64.yml @@ -0,0 +1,62 @@ +name: Build and Upload Darwin AMD64 + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + +env: + GO_VERSION: '1.22' + MOVEVM_VERSION: 'v0.2.12' + L1_NETWORK_NAME: 'testnet' + +jobs: + build-and-upload: + runs-on: macos-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Go + uses: actions/setup-go@v4 + with: + go-version: ${{ env.GO_VERSION }} + + - name: Build initiad + run: | + make build ARCH=amd64 + + - name: Prepare artifacts + run: | + mkdir -p artifacts + cp build/initiad artifacts/ + cp ~/go/pkg/mod/github.com/initia-labs/movevm@${MOVEVM_VERSION}/api/libmovevm.dylib artifacts/ + cp ~/go/pkg/mod/github.com/initia-labs/movevm@${MOVEVM_VERSION}/api/libcompiler.dylib artifacts/ + tar -czvf initia_${{ github.sha }}_Darwin_amd64.tar.gz -C artifacts . + + - name: Google Auth + uses: 'google-github-actions/auth@v2' + with: + credentials_json: '${{ secrets.GCP_SA_KEY }}' + + - name: Set up Cloud SDK + uses: 'google-github-actions/setup-gcloud@v2' + + - name: Upload to GCS + env: + GCS_BUCKET: ${{ secrets.GCS_BUCKET }} + run: | + gsutil cp initia_${{ github.sha }}_Darwin_amd64.tar.gz gs://${GCS_BUCKET}/networks/${{ env.L1_NETWORK_NAME }}/binaries/ + + - name: Verify upload and Generate public URL + env: + GCS_BUCKET: ${{ secrets.GCS_BUCKET }} + run: | + if gsutil stat gs://${GCS_BUCKET}/networks/${{ env.L1_NETWORK_NAME }}/binaries/initia_${{ github.sha }}_Darwin_amd64.tar.gz; then + echo "File successfully uploaded" + echo "Public URL: https://storage.googleapis.com/${GCS_BUCKET}/networks/${{ env.L1_NETWORK_NAME }}/binaries/initia_${{ github.sha }}_Darwin_amd64.tar.gz" >> $GITHUB_STEP_SUMMARY + else + echo "File upload failed" + exit 1 + fi From 3923cd9110c37b056c33f715d47d2746e4f1ba17 Mon Sep 17 00:00:00 2001 From: LizJeong Date: Mon, 15 Jul 2024 16:46:50 +0900 Subject: [PATCH 75/75] Update build-and-upload.yml --- .github/workflows/build-and-upload.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-and-upload.yml b/.github/workflows/build-and-upload.yml index 37c5134a..597e49c3 100644 --- a/.github/workflows/build-and-upload.yml +++ b/.github/workflows/build-and-upload.yml @@ -4,9 +4,9 @@ on: # push: # tags: # - 'v*' - push: - branches: - - "main" + # push: + # branches: + # - "main" jobs: # build-linux-amd64: