ci #2198
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.20', '1.21', '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: Update Go version using setup-go | |
uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 | |
if: matrix.go != 'tip' | |
with: | |
go-version: ${{ matrix.go }} | |
- 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: Checkout the repo | |
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 | |
with: | |
path: ${{ env.WORKING_DIR }} | |
- 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@e28ff129e5465c2c0dcc6f003fc735cb6ae0c673 # v4.5.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.20', '1.21', 'tip'] | |
os: ['ubuntu-22.04', 'ubuntu-20.04'] | |
steps: | |
- name: Update Go version using setup-go | |
uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 | |
if: matrix.go != 'tip' | |
with: | |
go-version: ${{ matrix.go }} | |
- 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: Checkout the repo | |
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 | |
with: | |
path: ${{ env.WORKING_DIR }} | |
- name: Check chrome for browser tests | |
run: | | |
google-chrome --version | |
- 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: Run the script | |
run: | | |
go version | |
./test.sh | |
- name: Code coverage | |
uses: codecov/codecov-action@e28ff129e5465c2c0dcc6f003fc735cb6ae0c673 # v4.5.0 | |
with: | |
file: ${{ env.WORKING_DIR }}/coverage.txt | |
test-windows: | |
runs-on: windows-2019 | |
strategy: | |
fail-fast: false | |
matrix: | |
go: ['1.20', '1.21'] | |
steps: | |
- name: Update Go version using setup-go | |
uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 | |
with: | |
go-version: ${{ matrix.go }} | |
- name: Checkout the repo | |
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 | |
with: | |
path: ${{ env.WORKING_DIR }} | |
- 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) }} |