gf/.github/workflows/gf.yml

167 lines
4.1 KiB
YAML
Raw Normal View History

name: GoFrame Main CI
2021-07-19 23:20:51 +08:00
2022-02-08 23:52:29 +08:00
2021-07-19 23:20:51 +08:00
on:
push:
2021-07-21 00:02:15 +08:00
branches:
2022-01-24 16:32:59 +08:00
- master
- develop
2022-05-07 16:43:28 +08:00
- feature/**
- fix/**
2021-07-19 23:20:51 +08:00
pull_request:
2022-01-24 16:32:59 +08:00
branches:
- master
- develop
2022-05-07 16:43:28 +08:00
- feature/**
- fix/**
2022-02-08 23:52:29 +08:00
2021-12-04 23:07:54 +08:00
env:
2022-05-11 17:51:27 +08:00
GF_DEBUG: 0
2021-07-21 00:02:15 +08:00
2022-02-08 23:52:29 +08:00
2021-07-19 23:20:51 +08:00
jobs:
code-test:
runs-on: ubuntu-latest
2022-02-08 23:52:29 +08:00
2021-07-19 23:20:51 +08:00
# Service containers to run with `code-test`
services:
2022-05-11 13:58:04 +08:00
# Redis backend server.
2021-07-19 23:20:51 +08:00
redis:
2022-05-19 19:59:41 +08:00
image : loads/redis:latest
2022-05-18 21:38:13 +08:00
options: >-
2021-08-01 09:33:12 +08:00
--health-cmd "redis-cli ping"
2021-07-19 23:20:51 +08:00
--health-interval 10s
2021-08-01 09:33:12 +08:00
--health-timeout 5s
--health-retries 5
2021-07-19 23:20:51 +08:00
ports:
# Maps tcp port 6379 on service container to the host
- 6379:6379
2022-02-08 23:52:29 +08:00
2022-05-11 13:58:04 +08:00
# MySQL backend server.
2021-07-19 23:20:51 +08:00
mysql:
2022-05-19 19:59:41 +08:00
image: loads/mysql:5.7
2021-07-19 23:20:51 +08:00
env:
2021-08-01 09:33:12 +08:00
MYSQL_DATABASE : test
2021-07-19 23:20:51 +08:00
MYSQL_ROOT_PASSWORD: 12345678
ports:
# Maps tcp port 3306 on service container to the host
- 3306:3306
2021-07-22 09:29:26 +08:00
2022-05-12 15:33:48 +08:00
# PostgreSQL backend server.
postgres:
2022-05-19 19:59:41 +08:00
image: loads/postgres:13
2022-05-12 15:33:48 +08:00
env:
POSTGRES_PASSWORD: 12345678
POSTGRES_USER: root
POSTGRES_DB: test
TZ: Asia/Shanghai
ports:
- 5432:5432
# Set health checks to wait until postgres has started
2022-05-18 21:38:13 +08:00
options: >-
2022-05-12 15:33:48 +08:00
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
# MSSQL backend server.
mssql:
2022-05-19 19:59:41 +08:00
image: loads/mssqldocker:latest
2022-05-12 15:33:48 +08:00
env:
ACCEPT_EULA: Y
SA_PASSWORD: LoremIpsum86
MSSQL_DB: test
MSSQL_USER: root
MSSQL_PASSWORD: LoremIpsum86
ports:
- 1433:1433
2022-05-18 21:38:13 +08:00
options: >-
2022-05-12 15:33:48 +08:00
--health-cmd="/opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P LoremIpsum86 -l 30 -Q \"SELECT 1\" || exit 1"
--health-start-period 10s
--health-interval 10s
--health-timeout 5s
--health-retries 10
2022-02-08 23:52:29 +08:00
2022-05-12 15:33:48 +08:00
# ClickHouse backend server.
clickhouse-server:
2022-05-19 19:59:41 +08:00
image: loads/clickhouse-server:latest
2022-05-12 15:33:48 +08:00
ports:
- 9000:9000
- 8123:8123
- 9001:9001
2022-05-19 19:59:41 +08:00
polaris:
image: houseme/polaris-server-with-config:latest
ports:
- 8090:8090
- 8091:8091
2022-02-08 23:52:29 +08:00
2022-05-25 21:55:27 +08:00
#oracle 11g server
oracle-server:
image: loads/oracle-xe-11g-r2:latest
env:
ORACLE_ALLOW_REMOTE: true
ORACLE_SID: XE
ORACLE_DB_USER_NAME: system
ORACLE_DB_PASSWORD: oracle
ports:
- 1521:1521
2021-07-22 09:29:26 +08:00
strategy:
matrix:
2022-05-25 21:55:27 +08:00
go: [ "1.15", "1.16", "1.17" ]
goarch: [ "386", "amd64" ]
2021-07-22 09:29:26 +08:00
2022-02-08 23:52:29 +08:00
2021-07-19 23:20:51 +08:00
steps:
2021-08-01 09:33:12 +08:00
- name: Set Up Timezone
uses: szenius/set-timezone@v1.0
2021-07-20 23:26:53 +08:00
with:
timezoneLinux: "Asia/Shanghai"
2021-07-19 23:20:51 +08:00
- name: Checkout Repository
2021-08-01 09:33:12 +08:00
uses: actions/checkout@v2
2021-07-19 23:20:51 +08:00
2021-08-01 09:33:12 +08:00
- name: Set Up Go
2021-07-19 23:20:51 +08:00
uses: actions/setup-go@v2
with:
2021-07-22 09:29:26 +08:00
go-version: ${{ matrix.go }}
2021-07-19 23:20:51 +08:00
2021-08-01 09:33:12 +08:00
- name: Before Script
2021-07-19 23:20:51 +08:00
run: |
find . -name "*.go" | xargs gofmt -w
git diff --name-only --exit-code || if [ $? != 0 ]; then echo "Notice: gofmt check failed,please gofmt before pr." && exit 1; fi
2021-11-18 11:56:03 +08:00
echo "gofmt check pass."
2021-07-19 23:20:51 +08:00
sudo echo "127.0.0.1 local" | sudo tee -a /etc/hosts
2022-05-18 21:24:15 +08:00
2022-05-18 21:18:49 +08:00
- name: Build & Test
2022-05-12 15:33:48 +08:00
run: |
2022-05-18 21:18:49 +08:00
GOARCH=${{ matrix.goarch }}
2022-05-12 15:33:48 +08:00
for file in `find . -name go.mod`; do
dirpath=$(dirname $file)
2022-05-18 21:18:49 +08:00
2022-05-12 15:33:48 +08:00
if [ "oracle" = $(basename $dirpath) ]; then
2022-05-25 21:55:27 +08:00
if ! go version|grep -q "1.17"; then
continue 1
fi
2022-05-12 15:33:48 +08:00
fi
2022-05-18 21:18:49 +08:00
2022-05-12 15:33:48 +08:00
cd $dirpath
go mod tidy
go build ./...
2022-05-18 21:18:49 +08:00
go test ./... -race -coverprofile=coverage.out -covermode=atomic -coverpkg=./...,github.com/gogf/gf/... || exit 1
if grep -q "/gogf/gf/.*/v2" go.mod; then
sed -i "s/gogf\/gf\(\/.*\)\/v2/gogf\/gf\/v2\1/g" coverage.out
fi
2022-05-12 15:33:48 +08:00
cd -
done
2022-05-18 21:24:15 +08:00
2021-08-01 09:33:12 +08:00
- name: Report Coverage
2021-09-19 10:36:43 +08:00
uses: codecov/codecov-action@v2
with:
2022-05-18 21:18:49 +08:00
flags: go-${{ matrix.go }}-${{ matrix.goarch }}
2021-07-21 00:02:15 +08:00