diff --git a/.github/workflows/build-test-linux-arm64.yml b/.github/workflows/build-test-linux-arm64.yml new file mode 100644 index 000000000..8fbeb9e09 --- /dev/null +++ b/.github/workflows/build-test-linux-arm64.yml @@ -0,0 +1,62 @@ +name: Build and Test on Linux ARCH64 + +on: + push: + branches: + - main + pull_request: + branches: + - main + +jobs: + build-and-test-arm64: + name: Build and Test on Linux ARM64 + runs-on: ubuntu-latest + steps: + - name: Check out code + uses: actions/checkout@v3 + with: + submodules: "true" + + - name: Set up Go 1.19 + uses: actions/setup-go@v2 + with: + go-version: 1.19 + + - name: Install prerequisites + run: | + sudo apt-get update + sudo apt-get install -y git wget curl make python3 python3-pip clang-12 lld-12 + sudo ln -sf /usr/bin/clang-12 /usr/bin/clang + + - name: Install rust nightly toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: 1.73 + override: true + components: clippy, rustfmt + + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + with: + platforms: linux/amd64,linux/arm64 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Pull custom ARM64 Docker image + run: | + docker pull --platform linux/arm64 kcllang/kcl-builder-arm64 + + - name: Run custom ARM64 Docker image + run: | + docker run --rm --platform linux/arm64 \ + -v ${{ github.workspace }}:/workspace -w /workspace \ + kcllang/kcl-builder-arm64 \ + make && make release + + - name: Upload Artifact + uses: actions/upload-artifact@v3 + with: + name: kcl-linux-arm64 + path: _build/dist/ubuntu/kclvm