Skip to content

ci

ci #2407

Workflow file for this run

name: ci
on:
push:
branches:
- main
pull_request:
schedule:
- cron: '0 2 * * *' # Run every day, at 2AM UTC.
env:
GOPATH: ${{ github.workspace }}
WORKING_DIR: ./src/github.com/google/pprof/
jobs:
test-mac:
runs-on: ${{ matrix.os }}
defaults:
run:
working-directory: ${{ env.WORKING_DIR }}
strategy:
fail-fast: false
matrix:
go: ['1.22', '1.23', 'tip']
# Supported macOS versions can be found in
# https://github.com/actions/virtual-environments#available-environments.
# TODO: Add macos-13. As of now there are build errors when installing graphviz.
os: ['macos-12']
# Supported Xcode versions can be found in:
# - https://github.com/actions/virtual-environments/blob/main/images/macos/macos-12-Readme.md#xcode
# - https://github.com/actions/virtual-environments/blob/main/images/macos/macos-13-Readme.md#xcode
xcode-version: ['14.2', '14.1', '14.0.1', '13.4.1', '13.3.1', '13.2.1', '13.1']
steps:
- name: Checkout the repo
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
path: ${{ env.WORKING_DIR }}
- name: Update Go version using setup-go
uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # v5.1.0
if: matrix.go != 'tip'
with:
# Include cache directives to allow proper caching. Without them, we
# get setup-go "Restore cache failed" warnings.
go-version: ${{ matrix.go }}
cache: true
cache-dependency-path: '**/go.sum'
- name: Install Go bootstrap compiler
uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # v5.1.0
if: matrix.go == 'tip'
with:
# Bootstrapping go tip requires 1.22.6
# Include cache directives to allow proper caching. Without them, we
# get setup-go "Restore cache failed" warnings.
go-version: 1.22
cache: true
cache-dependency-path: '**/go.sum'
- name: Update Go version manually
if: matrix.go == 'tip'
working-directory: ${{ github.workspace }}
run: |
git clone https://go.googlesource.com/go $HOME/gotip
cd $HOME/gotip/src
./make.bash
echo "GOROOT=$HOME/gotip" >> $GITHUB_ENV
echo "RUN_STATICCHECK=false" >> $GITHUB_ENV
echo "RUN_GOLANGCI_LINTER=false" >> $GITHUB_ENV
echo "$HOME/gotip/bin:$PATH" >> $GITHUB_PATH
- name: Set up Xcode
uses: maxim-lobanov/setup-xcode@60606e260d2fc5762a71e64e74b2174e8ea3c8bd # v1.6.0
with:
xcode-version: ${{ matrix.xcode-version }}
- name: Fetch dependencies
run: |
brew install graphviz
# Do not let tools interfere with the main module's go.mod.
cd && go mod init tools
go install honnef.co/go/tools/cmd/[email protected]
go install github.com/golangci/golangci-lint/cmd/[email protected]
# Add PATH for installed tools.
echo "$GOPATH/bin:$PATH" >> $GITHUB_PATH
- name: Run the script
run: |
go version
./test.sh
- name: Code coverage
uses: codecov/codecov-action@b9fd7d16f6d7d1b5d2bec1a2887e65ceed900238 # v4.6.0
with:
file: ${{ env.WORKING_DIR }}/coverage.txt
test-linux:
runs-on: ${{ matrix.os }}
defaults:
run:
working-directory: ${{ env.WORKING_DIR }}
strategy:
fail-fast: false
matrix:
go: ['1.22', '1.23', 'tip']
os: ['ubuntu-22.04', 'ubuntu-20.04']
steps:
- name: Checkout the repo
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
path: ${{ env.WORKING_DIR }}
- name: Update Go version using setup-go
uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # v5.1.0
if: matrix.go != 'tip'
with:
# Include cache directives to allow proper caching. Without them, we
# get setup-go "Restore cache failed" warnings.
go-version: ${{ matrix.go }}
cache: true
cache-dependency-path: '**/go.sum'
- name: Install Go bootstrap compiler
uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # v5.1.0
if: matrix.go == 'tip'
with:
# Bootstrapping go tip requires 1.22.6
# Include cache directives to allow proper caching. Without them, we
# get setup-go "Restore cache failed" warnings.
go-version: 1.22
cache: true
cache-dependency-path: '**/go.sum'
- name: Update Go version manually
if: matrix.go == 'tip'
working-directory: ${{ github.workspace }}
run: |
git clone https://go.googlesource.com/go $HOME/gotip
cd $HOME/gotip/src
./make.bash
echo "GOROOT=$HOME/gotip" >> $GITHUB_ENV
echo "RUN_STATICCHECK=false" >> $GITHUB_ENV
echo "RUN_GOLANGCI_LINTER=false" >> $GITHUB_ENV
echo "$HOME/gotip/bin" >> $GITHUB_PATH
- name: Check chrome for browser tests
run: |
google-chrome --version
- name: Add LLVM 14.0 repository to ensure llvm-symbolizer 14.0.0+ on Ubuntu 20.04
if: matrix.os == 'ubuntu-20.04'
run: |
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
sudo add-apt-repository "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-14 main"
sudo apt-get update
- name: Install llvm-symbolizer
run: |
if [ "${{ matrix.os }}" = "ubuntu-20.04" ]; then
sudo apt-get install -y llvm-14 clang-14
sudo update-alternatives --install /usr/bin/llvm-symbolizer llvm-symbolizer /usr/bin/llvm-symbolizer-14 100
else
sudo apt-get update
sudo apt-get install -y llvm clang
fi
- name: Fetch dependencies
run: |
sudo apt-get install graphviz
# Do not let tools interfere with the main module's go.mod.
cd && go mod init tools
go install honnef.co/go/tools/cmd/[email protected]
go install github.com/golangci/golangci-lint/cmd/[email protected]
# Add PATH for installed tools.
echo "$GOPATH/bin:$PATH" >> $GITHUB_PATH
- name: Check llvm-symbolizer installation
run: |
llvm-symbolizer --version
- name: Run the script
run: |
go version
./test.sh
- name: Code coverage
uses: codecov/codecov-action@b9fd7d16f6d7d1b5d2bec1a2887e65ceed900238 # v4.6.0
with:
file: ${{ env.WORKING_DIR }}/coverage.txt
test-windows:
runs-on: windows-2019
strategy:
fail-fast: false
matrix:
go: ['1.22', '1.23']
steps:
- name: Checkout the repo
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
path: ${{ env.WORKING_DIR }}
- name: Update Go version using setup-go
uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # v5.1.0
with:
# Include cache directives to allow proper caching. Without them, we
# get setup-go "Restore cache failed" warnings.
go-version: ${{ matrix.go }}
cache: true
cache-dependency-path: '**/go.sum'
- name: Fetch Windows dependency
uses: crazy-max/ghaction-chocolatey@0e015857dd851f84fcb7fb53380eb5c4c8202333 # v3.0.0
with:
args: install graphviz llvm
- name: Run the test
run: |
go version
# This is a workaround to make graphviz installed through choco work.
# It generates a config file to tell dot what layout engine and
# format types are available. See
# https://github.com/google/pprof/issues/585 for more details.
dot -c
go env
go build github.com/google/pprof
go test -v ./...
working-directory: ${{ env.WORKING_DIR }}
check:
if: always()
runs-on: ubuntu-latest
needs:
- test-mac
- test-linux
- test-windows
steps:
- name: Decide whether the needed jobs succeeded or failed
uses: re-actors/alls-green@05ac9388f0aebcb5727afa17fcccfecd6f8ec5fe # v1.2.2
with:
jobs: ${{ toJSON(needs) }}