name: UnitTest on: workflow_dispatch: inputs: tags: description: "Comment" push: branches: [main] env: YAO_DEV: ${{ github.WORKSPACE }} YAO_ENV: development YAO_ROOT: ${{ github.WORKSPACE }}/tests YAO_HOST: 0.0.0.0 YAO_PORT: 5099 YAO_SESSION: "memory" YAO_LOG: "./logs/application.log" YAO_LOG_MODE: "TEXT" YAO_JWT_SECRET: "bLp@bi!oqo-2U+hoTRUG" YAO_DB_AESKEY: "ZLX=T&f6refeCh-ro*r@" OSS_TEST_ID: ${{ secrets.OSS_TEST_ID}} OSS_TEST_SECRET: ${{ secrets.OSS_TEST_SECRET}} ROOT_PLUGIN: ${{ github.WORKSPACE }}/../../../data/gou-unit/plugins REPO_KUN: ${{ github.repository_owner }}/kun REPO_XUN: ${{ github.repository_owner }}/xun REPO_GOU: ${{ github.repository_owner }}/gou MYSQL_TEST_HOST: "127.0.0.1" MYSQL_TEST_PORT: "3308" MYSQL_TEST_USER: test MYSQL_TEST_PASS: "123456" SQLITE_DB: "./app/db/yao.db" REDIS_TEST_HOST: "127.0.0.1" REDIS_TEST_PORT: "6379" REDIS_TEST_DB: "2" MONGO_TEST_HOST: "127.0.0.1" MONGO_TEST_PORT: "27017" MONGO_TEST_USER: "root" MONGO_TEST_PASS: "123456" TAB_NAME: "::PET ADMIN" PAGE_SIZE: "20" PAGE_LINK: "https://yaoapps.com" PAGE_ICON: "icon-trash" DEMO_APP: ${{ github.WORKSPACE }}/../app YAO_TEST_APPLICATION: ${{ github.WORKSPACE }}/../app YAO_EXTENSION_ROOT: ${{ github.WORKSPACE }}/../extension jobs: unit-test: runs-on: ubuntu-20.04 strategy: matrix: go: [1.19.5, 1.20.0] db: [MySQL8.0, MySQL5.7, SQLite3] redis: [4, 5, 6] mongo: ["6.0"] steps: - name: Setup Cache uses: actions/cache@v3 with: path: | ~/.cache/go-build ~/go/pkg/mod key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} restore-keys: | ${{ runner.os }}-go- - name: Checkout Kun uses: actions/checkout@v3 with: repository: ${{ env.REPO_KUN }} path: kun - name: Checkout Xun uses: actions/checkout@v3 with: repository: ${{ env.REPO_XUN }} path: xun - name: Checkout Gou uses: actions/checkout@v3 with: repository: ${{ env.REPO_GOU }} path: gou - name: Checkout V8Go uses: actions/checkout@v3 with: repository: yaoapp/v8go ref: aac4923ed74083e58ae7b42b1acb0fa0d11a26cb path: v8go - name: Checkout Demo App uses: actions/checkout@v3 with: repository: yaoapp/yao-dev-app path: app - name: Checkout Extension uses: actions/checkout@v3 with: repository: yaoapp/yao-extensions-dev path: extension - name: Move Kun, Xun, Gou, V8Go, Extension run: | mv kun ../ mv xun ../ mv gou ../ mv v8go ../ mv app ../ mv extension ../ ls -l . ls -l ../ - name: Checkout Code uses: actions/checkout@v3 - name: Start Redis uses: supercharge/redis-github-action@1.4.0 with: redis-version: ${{ matrix.redis }} - name: Start MongoDB uses: supercharge/mongodb-github-action@1.8.0 with: mongodb-version: ${{ matrix.mongo }} mongodb-username: root mongodb-password: 123456 mongodb-db: test - name: Setup MySQL8.0 (connector) uses: ./.github/actions/setup-db with: kind: "MySQL8.0" db: "test" user: "test" password: "123456" port: "3308" - name: Setup ${{ matrix.db }} uses: ./.github/actions/setup-db with: kind: "${{ matrix.db }}" db: "xiang" user: "xiang" password: ${{ secrets.UNIT_PASS }} - name: Setup Go ${{ matrix.go }} uses: actions/setup-go@v3 with: go-version: ${{ matrix.go }} - name: Setup Go Tools run: | make tools - name: Setup ENV & Host env: PASSWORD: ${{ secrets.UNIT_PASS }} run: | sudo echo "127.0.0.1 local.iqka.com" | sudo tee -a /etc/hosts echo "YAO_DB_DRIVER=$DB_DRIVER" >> $GITHUB_ENV echo "GITHUB_WORKSPACE:\n" && ls -l $GITHUB_WORKSPACE if [ "$DB_DRIVER" = "mysql" ]; then echo "YAO_DB_PRIMARY=$DB_USER:$PASSWORD@$DB_HOST" >> $GITHUB_ENV elif [ "$DB_DRIVER" = "postgres" ]; then echo "YAO_DB_PRIMARY=postgres://$DB_USER:$PASSWORD@$DB_HOST" >> $GITHUB_ENV else echo "YAO_DB_PRIMARY=$YAO_ROOT/$DB_HOST" >> $GITHUB_ENV fi echo ".:\n" && ls -l . echo "..:\n" && ls -l .. ping -c 1 -t 1 local.iqka.com - name: Test Prepare run: | make vet make fmt-check make misspell-check - name: Run test run: | make test - name: Codecov Report uses: codecov/codecov-action@v3 with: token: ${{ secrets.CODECOV_TOKEN }} # not required for public repos