| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- # Part of the Carbon Language project, under the Apache License v2.0 with LLVM
- # Exceptions. See /LICENSE for license information.
- # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- name: test
- on:
- push:
- branches: [trunk]
- paths:
- # Conservatively run the tests. However, skip them if the only paths in
- # the pull request match files that we know don't impact the build.
- - '**'
- - '!**/*.md'
- - '!LICENSE'
- - '!CODEOWNERS'
- - '!.git*'
- pull_request_target:
- paths:
- # Conservatively run the tests. However, skip them if the only paths in
- # the pull request match files that we know don't impact the build.
- - '**'
- - '!**/*.md'
- - '!LICENSE'
- - '!CODEOWNERS'
- - '!.git*'
- jobs:
- test:
- strategy:
- matrix:
- os: [ubuntu-latest, macos-latest]
- build_mode: [fastbuild, opt]
- runs-on: ${{ matrix.os }}
- steps:
- # Checkout the pull request head or the branch.
- - name: Checkout pull request
- if: github.event_name == 'pull_request_target'
- uses: actions/checkout@v3
- with:
- ref: ${{ github.event.pull_request.head.sha }}
- - name: Checkout branch
- if: github.event_name != 'pull_request_target'
- uses: actions/checkout@v3
- # Setup Python and related tools.
- - uses: actions/setup-python@v4
- with:
- # Match the min version listed in docs/project/contribution_tools.md
- python-version: '3.9'
- # On macOS we need Go and to use it to install Bazelisk.
- - uses: actions/setup-go@v3
- if: matrix.os == 'macos-latest'
- - name: Install bazelisk
- if: matrix.os == 'macos-latest'
- run: |
- go get github.com/bazelbuild/bazelisk
- echo "$(go env GOPATH)/bin" >> $GITHUB_PATH
- # Setup to the latest LLVM and Clang release.
- #
- # Ideally we would use the pre-installed versions in the image, but the
- # debian packages for LLVM-15 currently don't work for fastbuild.
- #
- # For now, we rely on Homebrew to manage installing a correctly built
- # toolchain. We also take some care to be as resilient as possible to
- # issues fetching and installing the toolchain.
- - name: Install Clang/LLVM using brew
- env:
- HOMEBREW_NO_INSTALL_CLEANUP: 1
- HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: 1
- run: |
- echo '*** Updating brew'
- brew update
- echo '*** Installing LLVM deps'
- brew install --force-bottle --only-dependencies llvm
- echo '*** Installing LLVM itself'
- brew install --force-bottle --force --verbose llvm
- echo '*** brew info llvm'
- brew info llvm
- echo '*** brew config'
- brew config
- echo '*** Updating PATH'
- echo "$(brew --prefix llvm)/bin" >> $GITHUB_PATH
- # Print the various tool paths and versions to help in debugging.
- - name: Print tool debugging info
- run: |
- echo '*** PATH'
- echo $PATH
- echo '*** bazelisk'
- which bazelisk
- bazelisk --version
- echo '*** python'
- which python
- python --version
- echo '*** clang'
- which clang
- clang --version
- echo '*** clang++'
- which clang++
- clang++ --version
- # Extract our access key for our build cache.
- - name: Extract access key
- env:
- GCP_BUILDS_SERVICE_ACCOUNT: ${{ secrets.GCP_BUILDS_SERVICE_ACCOUNT }}
- run: |
- echo "$GCP_BUILDS_SERVICE_ACCOUNT" \
- | base64 -d > $HOME/gcp-builds-service-account.json
- # Add our bazel configuration and print basic info to ease debugging.
- - name: Configure Bazel and print info
- run: |
- cat >user.bazelrc <<EOF
- # Enable remote cache for our CI.
- build --remote_cache=https://storage.googleapis.com/carbon-builds-github-${{ matrix.os }}
- build --google_credentials=$HOME/gcp-builds-service-account.json
- # General build options.
- build --verbose_failures
- test --test_output=errors
- EOF
- bazelisk info
- # Build all targets first to isolate build failures.
- - name: Build (${{ matrix.build_mode }})
- env:
- # 'libtool_check_unique failed to generate' workaround.
- # https://github.com/bazelbuild/bazel/issues/14113#issuecomment-999794586
- BAZEL_USE_CPP_ONLY_TOOLCHAIN: 1
- run: bazelisk build -c ${{ matrix.build_mode }} //...:all
- # Run all test targets.
- - name: Test (${{ matrix.build_mode }})
- env:
- # 'libtool_check_unique failed to generate' workaround.
- # https://github.com/bazelbuild/bazel/issues/14113#issuecomment-999794586
- BAZEL_USE_CPP_ONLY_TOOLCHAIN: 1
- run: bazelisk test -c ${{ matrix.build_mode }} //...:all
|