# This workflow will build a golang project # For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-go name: Go on: push: branches: [ "main" ] pull_request: branches: [ "main" ] jobs: test: strategy: matrix: os: [macos-latest, ubuntu-latest] llvm: [18] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 - name: Update Homebrew # needed as long as LLVM 18 is still fresh if: matrix.llvm == 18 && startsWith(matrix.os, 'macos') run: brew update - name: Install LLVM ${{ matrix.llvm }} and bdw-gc if: startsWith(matrix.os, 'macos') run: | HOMEBREW_NO_AUTO_UPDATE=1 brew install llvm@${{ matrix.llvm }} bdw-gc echo `brew --prefix llvm@${{ matrix.llvm }}`/bin >> $GITHUB_PATH - name: Install LLVM ${{ matrix.llvm }} and libgc-dev if: startsWith(matrix.os, 'ubuntu') run: | echo "deb http://apt.llvm.org/$(lsb_release -cs)/ llvm-toolchain-$(lsb_release -cs)-${{ matrix.llvm }} main" | sudo tee /etc/apt/sources.list.d/llvm.list wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - sudo apt-get update sudo apt-get install -y llvm-${{ matrix.llvm }}-dev clang-${{ matrix.llvm }} lld-${{ matrix.llvm }} pkg-config libgc-dev libcjson-dev libsqlite3-dev python3.11-dev echo /usr/lib/llvm-${{ matrix.llvm }}/bin >> $GITHUB_PATH - name: Clang information run: | echo $PATH which clang clang --version - name: Set up Go uses: actions/setup-go@v5 with: go-version: '1.20' - name: Build run: go build -v ./... - name: Test if: matrix.os != 'macos-latest' run: go test -v ./... - name: Test with coverage if: matrix.os == 'macos-latest' run: go test -v -coverprofile="coverage.txt" -covermode=atomic ./... - name: Install run: go install ./... - name: LLGO tests if: matrix.os != 'ubuntu-latest' run: | echo "Test result on ${{ matrix.os }} with LLVM ${{ matrix.llvm }}" > result.md LLGOROOT=$PWD bash .github/workflows/test_llgo.sh - name: Test _demo and _pydemo run: | set +e LLGOROOT=$PWD bash .github/workflows/test_demo.sh exit 0 - name: Show test result run: cat result.md - name: PR comment with test result uses: thollander/actions-comment-pull-request@v2 if: false with: filePath: result.md comment_tag: test-result-on-${{ matrix.os }}-with-llvm-${{ matrix.llvm }} - name: Upload coverage reports to Codecov uses: codecov/codecov-action@v4 with: token: ${{ secrets.CODECOV_TOKEN }} slug: goplus/llgo