name: CI on: [ push, pull_request ] jobs: build: name: Build (PHP ${{ matrix.php }}, Go ${{ matrix.go }}, OS ${{ matrix.os }}) runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: php: [ 7.4 ] go: [ 1.14, 1.15 ] os: [ ubuntu-latest ] env: GO111MODULE: on steps: - name: Set up Go ${{ matrix.go }} uses: actions/setup-go@v1 with: go-version: ${{ matrix.go }} - name: Set up PHP ${{ matrix.php }} uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php }} extensions: dom coverage: xdebug - name: Check out code uses: actions/checkout@v2 with: fetch-depth: 1 - name: Show versions run: php -v ; composer -V ; go version - name: Debug if needed env: DEBUG: ${{ secrets.DEBUG }} run: if [[ "$DEBUG" == "true" ]]; then env && go env; fi - name: Syntax check only (lint) run: find ./src/ -name "*.php" -print0 | xargs -0 -n1 -P8 php -l - name: Get Composer Cache Directory # Docs: id: composer-cache run: echo "::set-output name=dir::$(composer config cache-files-dir)" - name: Cache dependencies # Docs: uses: actions/cache@v1 with: path: ${{ steps.composer-cache.outputs.dir }} key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }} restore-keys: ${{ runner.os }}-composer- - name: Install Composer dependencies run: composer install --prefer-dist --no-interaction --no-suggest # --prefer-source # - name: Analyze PHP sources # run: composer analyze - name: Install Go dependencies run: go mod download - name: Run golang tests run: | go test -v -race . -tags=debug -coverprofile=lib.txt -covermode=atomic go test -v -race ./plugins/rpc -tags=debug -coverprofile=rpc_config.txt -covermode=atomic go test -v -race ./plugins/rpc/tests -tags=debug -coverprofile=rpc.txt -covermode=atomic go test -v -race ./plugins/config/tests -tags=debug -coverprofile=plugin_config.txt -covermode=atomic go test -v -race ./plugins/logger/tests -tags=debug -coverprofile=logger.txt -covermode=atomic go test -v -race ./plugins/server/tests -tags=debug -coverprofile=server.txt -covermode=atomic go test -v -race ./plugins/metrics/tests -tags=debug -coverprofile=metrics.txt -covermode=atomic go test -v -race ./plugins/informer/tests -tags=debug -coverprofile=informer.txt -covermode=atomic go test -v -race ./plugins/resetter/tests -tags=debug -coverprofile=informer.txt -covermode=atomic - name: Run code coverage uses: codecov/codecov-action@v1 with: token: ${{ secrets.CODECOV_TOKEN }} files: lib.txt, rpc_config.txt, rpc.txt, plugin_config.txt, logger.txt, server.txt, metrics.txt, informer.txt flags: unittests name: codecov-umbrella fail_ci_if_error: false verbose: true golangci-check: name: runner / golangci-lint runs-on: ubuntu-latest steps: - name: Check out code into the Go module directory uses: actions/checkout@v1 - name: golangci-lint uses: reviewdog/action-golangci-lint@v1 with: github_token: ${{ secrets.github_token }} # image: # name: Build docker image # runs-on: ubuntu-latest # steps: # - name: Check out code # uses: actions/checkout@v2 # with: # fetch-depth: 1 # # - name: Build image # run: docker build -t rr:local -f Dockerfile .