first commit
This commit is contained in:
+23
@@ -0,0 +1,23 @@
|
||||
# Contributing Guidelines
|
||||
|
||||
## Reporting Issues
|
||||
|
||||
Before creating a new Issue, please check first if a similar Issue [already exists](https://github.com/go-sql-driver/mysql/issues?state=open) or was [recently closed](https://github.com/go-sql-driver/mysql/issues?direction=desc&page=1&sort=updated&state=closed).
|
||||
|
||||
## Contributing Code
|
||||
|
||||
By contributing to this project, you share your code under the Mozilla Public License 2, as specified in the LICENSE file.
|
||||
Don't forget to add yourself to the AUTHORS file.
|
||||
|
||||
### Code Review
|
||||
|
||||
Everyone is invited to review and comment on pull requests.
|
||||
If it looks fine to you, comment with "LGTM" (Looks good to me).
|
||||
|
||||
If changes are required, notice the reviewers with "PTAL" (Please take another look) after committing the fixes.
|
||||
|
||||
Before merging the Pull Request, at least one [team member](https://github.com/go-sql-driver?tab=members) must have commented with "LGTM".
|
||||
|
||||
## Development Ideas
|
||||
|
||||
If you are looking for ideas for code contributions, please check our [Development Ideas](https://github.com/go-sql-driver/mysql/wiki/Development-Ideas) Wiki page.
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
### Issue description
|
||||
Tell us what should happen and what happens instead
|
||||
|
||||
### Example code
|
||||
```go
|
||||
If possible, please enter some example code here to reproduce the issue.
|
||||
```
|
||||
|
||||
### Error log
|
||||
```
|
||||
If you have an error log, please paste it here.
|
||||
```
|
||||
|
||||
### Configuration
|
||||
*Driver version (or git SHA):*
|
||||
|
||||
*Go version:* run `go version` in your console
|
||||
|
||||
*Server version:* E.g. MySQL 5.6, MariaDB 10.0.20
|
||||
|
||||
*Server OS:* E.g. Debian 8.1 (Jessie), Windows 10
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
### Description
|
||||
Please explain the changes you made here.
|
||||
|
||||
### Checklist
|
||||
- [ ] Code compiles correctly
|
||||
- [ ] Created tests which fail without the change (if possible)
|
||||
- [ ] All tests passing
|
||||
- [ ] Extended the README / documentation, if necessary
|
||||
- [ ] Added myself / the copyright holder to the AUTHORS file
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
# To get started with Dependabot version updates, you'll need to specify which
|
||||
# package ecosystems to update and where the package manifests are located.
|
||||
# Please see the documentation for all configuration options:
|
||||
# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
|
||||
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: "gomod"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
groups:
|
||||
all-dependencies:
|
||||
patterns:
|
||||
- "*"
|
||||
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
groups:
|
||||
all-dependencies:
|
||||
patterns:
|
||||
- "*"
|
||||
+41
@@ -0,0 +1,41 @@
|
||||
name: "CodeQL"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ "master" ]
|
||||
pull_request:
|
||||
branches: [ "master" ]
|
||||
schedule:
|
||||
- cron: "18 19 * * 1"
|
||||
|
||||
jobs:
|
||||
analyze:
|
||||
name: Analyze
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
actions: read
|
||||
contents: read
|
||||
security-events: write
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
language: [ go ]
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v4
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
queries: +security-and-quality
|
||||
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@v4
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v4
|
||||
with:
|
||||
category: "/language:${{ matrix.language }}"
|
||||
+118
@@ -0,0 +1,118 @@
|
||||
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@v6
|
||||
- uses: dominikh/staticcheck-action@v1.4.1
|
||||
|
||||
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.26',
|
||||
# Older production releases
|
||||
'1.25',
|
||||
'1.24',
|
||||
]
|
||||
mysql = [
|
||||
'9.0',
|
||||
'8.4', # LTS
|
||||
'8.0',
|
||||
'5.7',
|
||||
'mariadb-11.4', # LTS
|
||||
'mariadb-11.2',
|
||||
'mariadb-11.1',
|
||||
'mariadb-10.11', # LTS
|
||||
'mariadb-10.6', # LTS
|
||||
'mariadb-10.5', # LTS
|
||||
]
|
||||
|
||||
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:
|
||||
print(f"matrix={output}", file=f)
|
||||
shell: python
|
||||
test:
|
||||
needs: list
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix: ${{ fromJSON(needs.list.outputs.matrix) }}
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- uses: actions/setup-go@v6
|
||||
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=48MB
|
||||
; 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: benchmark
|
||||
run: |
|
||||
go test -run '^$' -bench .
|
||||
|
||||
- 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
|
||||
Reference in New Issue
Block a user