diff --git a/.github/workflows/linux.yaml b/.github/workflows/linux.yaml new file mode 100644 index 000000000..c00bd72c4 --- /dev/null +++ b/.github/workflows/linux.yaml @@ -0,0 +1,50 @@ +name: Test on Linux +on: + push: + pull_request: + +jobs: + test: + runs-on: ubuntu-20.04 + strategy: + matrix: + go: [1.15, 1.14, 1.13, 1.12, 1.11, "1.10"] + mysql: ["mysql:8.0"] + include: + - go: 1.15 + mysql: "mysql:5.7" + - go: 1.15 + mysql: "mysql:5.5" + - go: 1.15 + mysql: "mariadb:5.5" + - go: 1.15 + mysql: "mariadb:10.1" + + services: + mysql: + image: ${{ matrix.mysql }} + ports: + - 3306:3306 + env: + MYSQL_DATABASE: gotest + MYSQL_USER: gotest + MYSQL_PASSWORD: secret + MYSQL_ALLOW_EMPTY_PASSWORD: yes + # How can we add these options? + #options: --innodb_log_file_size=256MB --innodb_buffer_pool_size=512MB --max_allowed_packet=16MB --local-infile=1 + + steps: + - uses: actions/setup-go@v2 + with: + go-version: ${{ matrix.go }} + - uses: actions/checkout@v2 + - name: Run test + env: + MYSQL_TEST_USER: gotest + MYSQL_TEST_PASS: secret + MYSQL_TEST_ADDR: 127.0.0.1:3307 + MYSQL_TEST_CONCURRENT: 1 + run: | + go test -v -covermode=count -coverprofile=coverage.out + go vet ./... + gofmt -d -s . diff --git a/.github/workflows/mac.yaml b/.github/workflows/mac.yaml new file mode 100644 index 000000000..f80a90b6e --- /dev/null +++ b/.github/workflows/mac.yaml @@ -0,0 +1,36 @@ +name: Test on macOS +on: + push: + pull_request: + +jobs: + build: + runs-on: macos-latest + + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Set up MySQL + run: | + brew install mysql + echo -e "[server]\ninnodb_log_file_size=256MB\ninnodb_buffer_pool_size=512MB\nmax_allowed_packet=16MB\nlocal_infile=1" >> /usr/local/etc/my.cnf + mysql.server start + mysql -uroot -e 'CREATE USER gotest IDENTIFIED BY "secret"' + mysql -uroot -e 'GRANT ALL ON *.* TO gotest' + mysql -uroot -e 'create database gotest;' + + - name: Set up Go + run: | + go install golang.org/x/tools/cmd/cover + + - name: Run tests + env: + MYSQL_TEST_USER: gotest + MYSQL_TEST_PASS: secret + MYSQL_TEST_ADDR: 127.0.0.1:3306 + MYSQL_TEST_CONCURRENT: 1 + run: | + go test -v -covermode=count -coverprofile=coverage.out + go vet ./... + gofmt -d -s . diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 2926bdd11..000000000 --- a/.travis.yml +++ /dev/null @@ -1,138 +0,0 @@ -language: go -go: - # Keep the most recent production release at the top - - 1.15.x - # Go development version - - master - # Older production releases - - 1.14.x - - 1.13.x - - 1.12.x - - 1.11.x - - 1.10.x - -before_install: - - go get golang.org/x/tools/cmd/cover - - go get github.com/mattn/goveralls - -before_script: - - echo -e "[server]\ninnodb_log_file_size=256MB\ninnodb_buffer_pool_size=512MB\nmax_allowed_packet=16MB" | sudo tee -a /etc/mysql/my.cnf - - sudo service mysql restart - - .travis/wait_mysql.sh - - mysql -e 'create database gotest;' - -jobs: - allow_failures: - - go: master - - include: - - env: DB=MYSQL8 - dist: xenial - go: 1.15.x - services: - - docker - before_install: - - go get golang.org/x/tools/cmd/cover - - go get github.com/mattn/goveralls - - docker pull mysql:8.0 - - docker run -d -p 127.0.0.1:3307:3306 --name mysqld -e MYSQL_DATABASE=gotest -e MYSQL_USER=gotest -e MYSQL_PASSWORD=secret -e MYSQL_ALLOW_EMPTY_PASSWORD=yes - mysql:8.0 --innodb_log_file_size=256MB --innodb_buffer_pool_size=512MB --max_allowed_packet=16MB --local-infile=1 - - cp .travis/docker.cnf ~/.my.cnf - - .travis/wait_mysql.sh - before_script: - - export cross_compile=false - - export MYSQL_TEST_USER=gotest - - export MYSQL_TEST_PASS=secret - - export MYSQL_TEST_ADDR=127.0.0.1:3307 - - export MYSQL_TEST_CONCURRENT=1 - - - env: DB=MYSQL57 - dist: xenial - go: 1.15.x - services: - - docker - before_install: - - go get golang.org/x/tools/cmd/cover - - go get github.com/mattn/goveralls - - docker pull mysql:5.7 - - docker run -d -p 127.0.0.1:3307:3306 --name mysqld -e MYSQL_DATABASE=gotest -e MYSQL_USER=gotest -e MYSQL_PASSWORD=secret -e MYSQL_ALLOW_EMPTY_PASSWORD=yes - mysql:5.7 --innodb_log_file_size=256MB --innodb_buffer_pool_size=512MB --max_allowed_packet=16MB --local-infile=1 - - cp .travis/docker.cnf ~/.my.cnf - - .travis/wait_mysql.sh - before_script: - - export cross_compile=false - - export MYSQL_TEST_USER=gotest - - export MYSQL_TEST_PASS=secret - - export MYSQL_TEST_ADDR=127.0.0.1:3307 - - export MYSQL_TEST_CONCURRENT=1 - - - env: DB=MARIA55 - dist: xenial - go: 1.15.x - services: - - docker - before_install: - - go get golang.org/x/tools/cmd/cover - - go get github.com/mattn/goveralls - - docker pull mariadb:5.5 - - docker run -d -p 127.0.0.1:3307:3306 --name mysqld -e MYSQL_DATABASE=gotest -e MYSQL_USER=gotest -e MYSQL_PASSWORD=secret -e MYSQL_ALLOW_EMPTY_PASSWORD=yes - mariadb:5.5 --innodb_log_file_size=256MB --innodb_buffer_pool_size=512MB --max_allowed_packet=16MB --local-infile=1 - - cp .travis/docker.cnf ~/.my.cnf - - .travis/wait_mysql.sh - before_script: - - export cross_compile=false - - export MYSQL_TEST_USER=gotest - - export MYSQL_TEST_PASS=secret - - export MYSQL_TEST_ADDR=127.0.0.1:3307 - - export MYSQL_TEST_CONCURRENT=1 - - - env: DB=MARIA10_1 - dist: xenial - go: 1.15.x - services: - - docker - before_install: - - go get golang.org/x/tools/cmd/cover - - go get github.com/mattn/goveralls - - docker pull mariadb:10.1 - - docker run -d -p 127.0.0.1:3307:3306 --name mysqld -e MYSQL_DATABASE=gotest -e MYSQL_USER=gotest -e MYSQL_PASSWORD=secret -e MYSQL_ALLOW_EMPTY_PASSWORD=yes - mariadb:10.1 --innodb_log_file_size=256MB --innodb_buffer_pool_size=512MB --max_allowed_packet=16MB --local-infile=1 - - cp .travis/docker.cnf ~/.my.cnf - - .travis/wait_mysql.sh - before_script: - - export cross_compile=false - - export MYSQL_TEST_USER=gotest - - export MYSQL_TEST_PASS=secret - - export MYSQL_TEST_ADDR=127.0.0.1:3307 - - export MYSQL_TEST_CONCURRENT=1 - - - os: osx - osx_image: xcode11.4 - addons: - homebrew: - packages: - - mysql - update: true - go: 1.15.x - before_install: - - go get golang.org/x/tools/cmd/cover - - go get github.com/mattn/goveralls - before_script: - - export cross_compile=false - - echo -e "[server]\ninnodb_log_file_size=256MB\ninnodb_buffer_pool_size=512MB\nmax_allowed_packet=16MB\nlocal_infile=1" >> /usr/local/etc/my.cnf - - mysql.server start - - mysql -uroot -e 'CREATE USER gotest IDENTIFIED BY "secret"' - - mysql -uroot -e 'GRANT ALL ON *.* TO gotest' - - mysql -uroot -e 'create database gotest;' - - export MYSQL_TEST_USER=gotest - - export MYSQL_TEST_PASS=secret - - export MYSQL_TEST_ADDR=127.0.0.1:3306 - - export MYSQL_TEST_CONCURRENT=1 - -script: - - go test -v -covermode=count -coverprofile=coverage.out - - go vet ./... - - .travis/gofmt.sh - - if [ "$cross_compile" != "false" ]; then .travis/compile_check.sh; fi -after_script: - - $HOME/gopath/bin/goveralls -coverprofile=coverage.out -service=travis-ci