ci #2376
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 | |
with: | |
path: ${{ env.WORKING_DIR }} | |
- name: Update Go version using setup-go | |
uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 | |
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@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 | |
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@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 | |
with: | |
path: ${{ env.WORKING_DIR }} | |
- name: Update Go version using setup-go | |
uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 | |
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@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 | |
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@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 | |
with: | |
path: ${{ env.WORKING_DIR }} | |
- name: Update Go version using setup-go | |
uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 | |
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) }} |