Fix issue 1567 (#1570) #473
Workflow file for this run
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: | |
pull_request: | |
push: | |
workflow_dispatch: | |
env: | |
MYSQL_TEST_USER: gotest | |
MYSQL_TEST_PASS: secret | |
MYSQL_TEST_ADDR: 127.0.0.1:3306 | |
MYSQL_TEST_CONCURRENT: 1 | |
jobs: | |
lint: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dominikh/[email protected] | |
with: | |
version: "2023.1.6" | |
list: | |
runs-on: ubuntu-latest | |
outputs: | |
matrix: ${{ steps.set-matrix.outputs.matrix }} | |
steps: | |
- name: list | |
id: set-matrix | |
run: | | |
import json | |
import os | |
go = [ | |
# Keep the most recent production release at the top | |
'1.21', | |
# Older production releases | |
'1.20', | |
'1.19', | |
'1.18', | |
] | |
mysql = [ | |
'8.1', | |
'8.0', | |
'5.7', | |
'5.6', | |
'mariadb-10.11', | |
'mariadb-10.6', | |
'mariadb-10.5', | |
'mariadb-10.4', | |
'mariadb-10.3', | |
] | |
includes = [] | |
# Go versions compatibility check | |
for v in go[1:]: | |
includes.append({'os': 'ubuntu-latest', 'go': v, 'mysql': mysql[0]}) | |
matrix = { | |
# OS vs MySQL versions | |
'os': [ 'ubuntu-latest', 'macos-latest', 'windows-latest' ], | |
'go': [ go[0] ], | |
'mysql': mysql, | |
'include': includes | |
} | |
output = json.dumps(matrix, separators=(',', ':')) | |
with open(os.environ["GITHUB_OUTPUT"], 'a', encoding="utf-8") as f: | |
f.write('matrix={0}\n'.format(output)) | |
shell: python | |
test: | |
needs: list | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: ${{ fromJSON(needs.list.outputs.matrix) }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-go@v5 | |
with: | |
go-version: ${{ matrix.go }} | |
- uses: shogo82148/actions-setup-mysql@v1 | |
with: | |
mysql-version: ${{ matrix.mysql }} | |
user: ${{ env.MYSQL_TEST_USER }} | |
password: ${{ env.MYSQL_TEST_PASS }} | |
my-cnf: | | |
innodb_log_file_size=256MB | |
innodb_buffer_pool_size=512MB | |
max_allowed_packet=16MB | |
; TestConcurrent fails if max_connections is too large | |
max_connections=50 | |
local_infile=1 | |
performance_schema=on | |
- name: setup database | |
run: | | |
mysql --user 'root' --host '127.0.0.1' -e 'create database gotest;' | |
- name: test | |
run: | | |
go test -v '-race' '-covermode=atomic' '-coverprofile=coverage.out' -parallel 10 | |
- name: Send coverage | |
uses: shogo82148/actions-goveralls@v1 | |
with: | |
path-to-profile: coverage.out | |
flag-name: ${{ runner.os }}-Go-${{ matrix.go }}-DB-${{ matrix.mysql }} | |
parallel: true | |
# notifies that all test jobs are finished. | |
finish: | |
needs: test | |
if: always() | |
runs-on: ubuntu-latest | |
steps: | |
- uses: shogo82148/actions-goveralls@v1 | |
with: | |
parallel-finished: true |