diff --git a/.github/workflows/github-actions.yml b/.github/workflows/github-actions.yml new file mode 100644 index 00000000..50480b8c --- /dev/null +++ b/.github/workflows/github-actions.yml @@ -0,0 +1,113 @@ +name: CI + +on: + push: + branches: [ master ] + pull_request: + branches: "*" + +jobs: + build: + name: ${{ matrix.os }} - Go${{ matrix.go_version }} - JDK${{ matrix.jdk_version }} + + runs-on: ${{ matrix.os }} + + strategy: + matrix: + os: + - ubuntu-latest + go_version: + - 1.12 + jdk_version: + - 1.8 + env: + DING_TOKEN: 049ae645b5dfb16e3240f81c1757333549ca46b30a5d6b40df562c63c36cf166 + DING_SIGN: SEC128fb97348610e9d4529bfb59ad7f3fd716b972785a0d04f1cee2c83ec160e59 + + steps: + - uses: actions/checkout@v2 + + - name: Set up JDK ${{ matrix.jdk_version }} + uses: actions/setup-java@v1 + with: + java-version: ${{ matrix.jdk_version }} + + - name: Set up Go ${{ matrix.go_version }} + uses: actions/setup-go@v2 + with: + go-version: ${{ matrix.go_version }} + id: go + + - name: Cache Go Dependence + uses: actions/cache@v2 + with: + path: ~/go/pkg/mod + key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} + restore-keys: ${{ runner.os }}-go- + + - name: Cache local Maven repository + uses: actions/cache@v2 + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + restore-keys: ${{ runner.os }}-maven- + + - name: Java Test And Package + run: | + mvn clean package -DskipTests=true -f test_hessian/pom.xml + mvn test -f test_hessian/pom.xml + mvn clean package -f test_dubbo/pom.xml + + - name: Validate License + run: | + sh before_validate_license.sh + chmod u+x /tmp/tools/license/license-header-checker + /tmp/tools/license/license-header-checker -v -a -r -i vendor /tmp/tools/license/license.txt . go && [[ -z `git status -s` ]] + + - name: Go Test + run: go mod vendor && go test -race -v && go test -bench . -race -coverprofile=coverage.txt + + - name: Coverage + run: bash <(curl -s https://codecov.io/bash) + + + # Because the contexts of push and PR are different, there are two Notify. + # Notifications are triggered only in the apache/dubbo-go-hessian2 repository. + - name: DingTalk Message Notify only Push + uses: zcong1993/actions-ding@v3.0.1 + # Whether job is successful or not, always () is always true. + if: | + always() && + github.event_name == 'push' && + github.repository == 'apache/dubbo-go-hessian2' + with: + # DingDing bot token + dingToken: ${{ env.DING_TOKEN }} + secret: ${{ env.DING_SIGN }} + # Post Body to send + body: | + { + "msgtype": "markdown", + "markdown": { + "title": "Github Actions", + "text": "## Github Actions \n - name: CI \n - repository: ${{ github.repository }} \n - trigger: ${{ github.actor }} \n - event: ${{ github.event_name }} \n - ref: ${{ github.ref }} \n - status: [${{ job.status }}](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}) \n - environment: ${{ runner.os }} \n > SHA: [${{ github.sha }}](${{ github.event.compare }})" + } + } + + - name: DingTalk Message Notify only PR + uses: zcong1993/actions-ding@v3.0.1 + if: | + always() && + github.event_name == 'pull_request' && + github.repository == 'apache/dubbo-go-hessian2' + with: + dingToken: ${{ env.DING_TOKEN }} + secret: ${{ env.DING_SIGN }} + body: | + { + "msgtype": "markdown", + "markdown": { + "title": "Github Actions", + "text": "## Github Actions \n - name: CI \n - repository: ${{ github.repository }} \n - pr_title: **${{ github.event.pull_request.title }}** \n - trigger: ${{ github.actor }} \n - event: ${{ github.event_name }} \n - ref: [${{ github.ref }}](${{ github.event.pull_request._links.html.href }}) \n - status: [${{ job.status }}](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}) \n - environment: ${{ runner.os }} \n > SHA: [${{ github.sha }}](${{ github.event.pull_request._links.html.href }})" + } + }