Releasing process updates #3678
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: Test | |
on: | |
push: | |
branches: | |
- master | |
pull_request: | |
defaults: | |
run: | |
shell: bash | |
jobs: | |
test-prev: | |
strategy: | |
fail-fast: false | |
matrix: | |
go-version: [1.21.x] | |
platform: [ubuntu-latest, windows-2019] | |
runs-on: ${{ matrix.platform }} | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Get the k6 version | |
id: get_k6_version | |
run: | | |
echo "Running tests on '${GITHUB_REF}' with '$(git describe --tags --always --long --dirty)' checked out..." | |
- name: Install Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: ${{ matrix.go-version }} | |
check-latest: true | |
- name: Run tests | |
run: | | |
set -x | |
go version | |
export GOMAXPROCS=2 | |
args=("-p" "2" "-race") | |
# Run with less concurrency on Windows/MacOS to minimize flakiness. | |
if [[ "${{ matrix.platform }}" == windows* || "${{ matrix.platform }}" == macos* ]]; then | |
unset args[2] | |
args[1]="1" | |
export GOMAXPROCS=1 | |
fi | |
go test "${args[@]}" -timeout 800s ./... | |
test-tip: | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: [ubuntu-latest, windows-2019] | |
runs-on: ${{ matrix.platform }} | |
continue-on-error: true | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Download Go tip | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
gh release download ${{ matrix.platform }} --repo grafana/gotip --pattern 'go.zip' | |
- name: Install Go tip | |
run: | | |
unzip go.zip -d $HOME/sdk | |
echo "GOROOT=$HOME/sdk/gotip" >> "$GITHUB_ENV" | |
echo "GOPATH=$HOME/go" >> "$GITHUB_ENV" | |
echo "$HOME/go/bin" >> "$GITHUB_PATH" | |
echo "$HOME/sdk/gotip/bin" >> "$GITHUB_PATH" | |
- name: Run tests | |
run: | | |
set -x | |
which go | |
go version | |
export GOMAXPROCS=2 | |
args=("-p" "2" "-race") | |
# Run with less concurrency on Windows/MacOS to minimize flakiness. | |
if [[ "${{ matrix.platform }}" == windows* || "${{ matrix.platform }}" == macos* ]]; then | |
unset args[2] | |
args[1]="1" | |
export GOMAXPROCS=1 | |
fi | |
go test "${args[@]}" -timeout 800s ./... | |
test-current-cov: | |
strategy: | |
fail-fast: false | |
matrix: | |
go-version: [1.22.x] | |
platform: [ubuntu-latest, windows-2019] | |
runs-on: ${{ matrix.platform }} | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Install Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: ${{ matrix.go-version }} | |
check-latest: true | |
- name: Run tests with code coverage | |
run: | | |
go version | |
export GOMAXPROCS=2 | |
args=("-p" "2" "-race") | |
# Run with less concurrency on Windows/MacOS to minimize flakiness. | |
if [[ "${{ matrix.platform }}" == windows* || "${{ matrix.platform }}" == macos* ]]; then | |
unset args[2] | |
args[1]="1" | |
export GOMAXPROCS=1 | |
fi | |
echo "mode: set" > coverage.txt | |
for pkg in $(go list ./... | grep -v vendor); do | |
list=$(go list -test -f '{{ join .Deps "\n"}}' $pkg | grep go.k6.io/k6 | grep -v vendor || true) | |
if [ -n "$list" ]; then | |
list=$(echo "$list" | cut -f1 -d ' ' | sort -u | paste -sd, -) | |
fi | |
go test "${args[@]}" -timeout 800s --coverpkg="$list" -coverprofile=$(echo $pkg | tr / -).coverage $pkg | |
done | |
grep -h -v "^mode:" *.coverage >> coverage.txt | |
rm -f *.coverage | |
- name: Upload coverage to Codecov | |
env: | |
CODECOV_BASH_VERSION: 1.0.1 | |
CODECOV_BASH_SHA512SUM: d075b412a362a9a2b7aedfec3b8b9a9a927b3b99e98c7c15a2b76ef09862aeb005e91d76a5fd71b511141496d0fd23d1b42095f722ebcd509d768fba030f159e | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
run: | | |
if [[ "${{ matrix.platform }}" == macos* ]]; then | |
shopt -s expand_aliases | |
alias sha512sum='shasum -a 512' | |
fi | |
curl -fsSLO "https://raw.githubusercontent.com/codecov/codecov-bash/${CODECOV_BASH_VERSION}/codecov" | |
echo "$CODECOV_BASH_SHA512SUM codecov" | sha512sum -c - | |
platform="${{ matrix.platform }}" | |
bash ./codecov -F "${platform%%-*}" | |
- name: Generate coverage HTML report | |
run: go tool cover -html=coverage.txt -o coverage.html | |
- name: Upload coverage report | |
uses: actions/upload-artifact@v4 | |
with: | |
name: test-coverage-report-${{ matrix.platform }} | |
path: coverage.html |