diff --git a/.github/workflows/build-binaries.yml b/.github/workflows/build-binaries.yml index 6407c809a248..60f1a48d5752 100644 --- a/.github/workflows/build-binaries.yml +++ b/.github/workflows/build-binaries.yml @@ -34,105 +34,91 @@ on: description: "Build for Windows amd64?" required: false type: boolean - default: true + default: false jobs: - # prepare-matrix: - # runs-on: ubuntu-latest - # outputs: - # matrix: ${{ steps.prepare-matrix.outputs.matrix }} - # steps: - # - name: Prepare matrix - # id: prepare-matrix - # run: | - # # Define general matrix parameters - # # Uncomment after fixing llvm-check on Windows - # # WINDOWS='{"name":"Windows","runner":"windows-2022-github-hosted-64core"}' - # MACOS_AMD64='{"name":"MacOS-x86","runner":"macos-12-large"}' - # MACOS_ARM64='{"name":"MacOS-arm64","runner":["self-hosted","macOS","ARM64"]}' - # LINUX_AMD64='{"name":"Linux-AMD64","runner":"matterlabs-ci-runner","image":"matterlabs/llvm_runner:ubuntu22-llvm17-latest"}' - # LINUX_ARM64='{"name":"Linux-ARM64","runner":"matterlabs-ci-runner-arm","image":"matterlabs/llvm_runner:ubuntu22-llvm17-latest"}' - # # Disable platforms for non-tag builds if user requested - # if [ ${GITHUB_EVENT_NAME} = workflow_dispatch ]; then - # [ ${{ github.event.inputs.build_windows_amd64 }} != true ] && WINDOWS= - # [ ${{ github.event.inputs.build_macos_amd64 }} != true ] && MACOS_AMD64= - # [ ${{ github.event.inputs.build_macos_arm64 }} != true ] && MACOS_ARM64= - # [ ${{ github.event.inputs.build_linux_amd64 }} != true ] && LINUX_AMD64= - # [ ${{ github.event.inputs.build_linux_arm64 }} != true ] && LINUX_ARM64= - # fi - # PLATFORMS=(${WINDOWS} ${MACOS_AMD64} ${MACOS_ARM64} ${LINUX_AMD64} ${LINUX_ARM64}) - # echo "matrix={ \"include\": [ $(IFS=, ; echo "${PLATFORMS[*]}") ] }" | tee -a "${GITHUB_OUTPUT}" - - integration-tests: - uses: matter-labs/era-compiler-ci/.github/workflows/integration-tests.yaml@aba-multiplatform-integration-tests - secrets: inherit - with: - compiler-tester-ref: 'main' - llvm-ref: ${{ github.head_ref }} - ccache-key-type: 'static' # rotate ccache key every month - compiler-llvm-repo: ${{ github.event.repository.full_name }} - enable-linux-amd64: ${{ github.event.inputs.build_linux_amd64 || true }} - enable-linux-arm64: ${{ github.event.inputs.build_linux_arm64 || true }} - enable-macos-amd64: ${{ github.event.inputs.build_macos_amd64 || true }} - enable-macos-arm64: ${{ github.event.inputs.build_macos_arm64 || true }} - enable-windows-amd64: ${{ github.event.inputs.build_windows_amd64 || false }} # not supported yet + prepare-matrix: + runs-on: ubuntu-latest + outputs: + matrix: ${{ steps.prepare-matrix.outputs.matrix }} + steps: + - name: Prepare matrix + id: prepare-matrix + run: | + # Define general matrix parameters + # Uncomment after fixing llvm-check on Windows + # WINDOWS='{"name":"Windows","runner":"windows-2022-github-hosted-64core"}' + MACOS_AMD64='{"name":"MacOS-x86","runner":"macos-12-large"}' + MACOS_ARM64='{"name":"MacOS-arm64","runner":["self-hosted","macOS","ARM64"]}' + LINUX_AMD64='{"name":"Linux-AMD64","runner":"matterlabs-ci-runner","image":"matterlabs/llvm_runner:ubuntu22-llvm17-latest"}' + LINUX_ARM64='{"name":"Linux-ARM64","runner":"matterlabs-ci-runner-arm","image":"matterlabs/llvm_runner:ubuntu22-llvm17-latest"}' + # Disable platforms for non-tag builds if user requested + if [ ${GITHUB_EVENT_NAME} = workflow_dispatch ]; then + [ ${{ github.event.inputs.build_windows_amd64 }} != true ] && WINDOWS= + [ ${{ github.event.inputs.build_macos_amd64 }} != true ] && MACOS_AMD64= + [ ${{ github.event.inputs.build_macos_arm64 }} != true ] && MACOS_ARM64= + [ ${{ github.event.inputs.build_linux_amd64 }} != true ] && LINUX_AMD64= + [ ${{ github.event.inputs.build_linux_arm64 }} != true ] && LINUX_ARM64= + fi + PLATFORMS=(${WINDOWS} ${MACOS_AMD64} ${MACOS_ARM64} ${LINUX_AMD64} ${LINUX_ARM64}) + echo "matrix={ \"include\": [ $(IFS=, ; echo "${PLATFORMS[*]}") ] }" | tee -a "${GITHUB_OUTPUT}" - # build: - # needs: prepare-matrix - # strategy: - # fail-fast: false - # matrix: ${{ fromJson(needs.prepare-matrix.outputs.matrix) }} - # runs-on: ${{ matrix.runner }} - # container: - # image: ${{ matrix.image || '' }} # Special workaround to allow matrix builds with optional container - # name: ${{ matrix.name }} - # steps: - # - name: Checkout source - # uses: actions/checkout@v4 - # with: - # ref: ${{ inputs.ref }} - # path: "llvm" + build: + needs: prepare-matrix + strategy: + fail-fast: false + matrix: ${{ fromJson(needs.prepare-matrix.outputs.matrix) }} + runs-on: ${{ matrix.runner }} + container: + image: ${{ matrix.image || '' }} # Special workaround to allow matrix builds with optional container + name: ${{ matrix.name }} + steps: + - name: Checkout source + uses: actions/checkout@v4 + with: + ref: ${{ inputs.ref }} + path: "llvm" - # - name: Prepare Windows env - # if: runner.os == 'Windows' - # uses: matter-labs/era-compiler-ci/.github/actions/prepare-msys@v1 + - name: Prepare Windows env + if: runner.os == 'Windows' + uses: matter-labs/era-compiler-ci/.github/actions/prepare-msys@v1 - # - name: Build LLVM - # uses: matter-labs/era-compiler-ci/.github/actions/build-llvm@v1 - # with: - # extra-args: "\\-DLLVM_ENABLE_WERROR=On \\-DCMAKE_EXPORT_COMPILE_COMMANDS=ON" - # enable-tests: true - # enable-assertions: true - # clone-llvm: false - # ccache-key-type: 'static' - # save-ccache: ${{ matrix.name == 'Linux x86' }} + - name: Build LLVM + uses: matter-labs/era-compiler-ci/.github/actions/build-llvm@v1 + with: + extra-args: "\\-DLLVM_ENABLE_WERROR=On \\-DCMAKE_EXPORT_COMPILE_COMMANDS=ON" + enable-tests: true + enable-assertions: true + clone-llvm: false + ccache-key-type: 'static' + save-ccache: ${{ matrix.name == 'Linux x86' }} - # # Required to keep executable permissions for binaries - # - name: Prepare tarball - # run: tar -czf ${{ runner.os }}-${{ runner.arch }}-target-final.tar.gz ./target-llvm/target-final + # Required to keep executable permissions for binaries + - name: Prepare tarball + run: tar -czf ${{ runner.os }}-${{ runner.arch }}-target-final.tar.gz ./target-llvm/target-final - # - name: Upload LLVM binaries - # uses: actions/upload-artifact@v4 - # with: - # name: llvm-bins-${{ runner.os }}-${{ runner.arch }} - # path: ./${{ runner.os }}-${{ runner.arch }}-target-final.tar.gz + - name: Upload LLVM binaries + uses: actions/upload-artifact@v4 + with: + name: llvm-bins-${{ runner.os }}-${{ runner.arch }} + path: ./${{ runner.os }}-${{ runner.arch }}-target-final.tar.gz - # - name: Running Lit tests (Windows) - # if: runner.os == 'Windows' - # shell: 'msys2 {0}' - # run: ninja -C './target-llvm/build-final' verify-llvm -v + - name: Running Lit tests (Windows) + if: runner.os == 'Windows' + shell: 'msys2 {0}' + run: ninja -C './target-llvm/build-final' verify-llvm -v - # - name: Running Lit tests - # if: runner.os != 'Windows' - # run: ninja -C './target-llvm/build-final' verify-llvm -v + - name: Running Lit tests + if: runner.os != 'Windows' + run: ninja -C './target-llvm/build-final' verify-llvm -v - # - name: Send Slack notification - # uses: 8398a7/action-slack@v3 - # if: failure() && github.event_name == 'schedule' - # with: - # status: ${{ job.status }} - # fields: repo,commit,author,action,eventName,ref,workflow,job,took - # env: - # SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }} + - name: Send Slack notification + uses: 8398a7/action-slack@v3 + if: failure() && github.event_name == 'schedule' + with: + status: ${{ job.status }} + fields: repo,commit,author,action,eventName,ref,workflow,job,took + env: + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }} diff --git a/.github/workflows/multiplatform-integration-tests.yml b/.github/workflows/multiplatform-integration-tests.yml new file mode 100644 index 000000000000..d4533bb457ac --- /dev/null +++ b/.github/workflows/multiplatform-integration-tests.yml @@ -0,0 +1,54 @@ +name: Build LLVM binaries + +on: + pull_request: + schedule: + - cron: '0 0 1 * *' # every month to regenerate ccache + workflow_dispatch: + inputs: + ref: + description: "Git REF to use for the build" + required: false + type: string + enable_macos_amd64: + description: "Enable MacOS amd64?" + required: false + type: boolean + default: true + enable_macos_arm64: + description: "Enable MacOS arm64?" + required: false + type: boolean + default: true + enable_linux_amd64: + description: "Enable Linux amd64?" + required: false + type: boolean + default: true + enable_linux_arm64: + description: "Enable Linux arm64?" + required: false + type: boolean + default: true + enable_windows_amd64: + description: "Enable Windows amd64?" + required: false + type: boolean + default: true + + +jobs: + + integration-tests: + uses: matter-labs/era-compiler-ci/.github/workflows/integration-tests.yaml@aba-multiplatform-integration-tests + secrets: inherit + with: + compiler-tester-ref: 'main' + llvm-ref: ${{ inputs.ref || github.head_ref }} + ccache-key-type: 'static' + compiler-llvm-repo: ${{ github.event.repository.full_name }} + enable-linux-amd64: ${{ inputs.enable_linux_amd64 || true }} + enable-macos-amd64: ${{ inputs.enable_macos_amd64 || true }} + enable-macos-arm64: ${{ inputs.enable_macos_arm64 || true }} + enable-linux-arm64: ${{ inputs.enable_linux_arm64 || false }} # not supported yet, compiler-tester issue with vyper linux arm64 binaries + enable-windows-amd64: ${{ inputs.enable_windows_amd64 || false }} # not supported, long paths issue