diff --git a/.github/workflows/if-go-pr-testing.yml b/.github/workflows/if-go-pr-testing.yml new file mode 100644 index 000000000..4a4078ff1 --- /dev/null +++ b/.github/workflows/if-go-pr-testing.yml @@ -0,0 +1,58 @@ +#This action is centrally managed in https://github.com/asyncapi/.github/ +#Don't make changes to this file in this repo as they will be overwritten with changes made to the same file in above mentioned repo +#It does magic only if there is go.mod file in the root of the project +name: PR testing - if Go project + +on: + pull_request: + types: [opened, reopened, synchronize, ready_for_review] + +jobs: + lint: + if: github.event.pull_request.draft == false + name: lint + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v2 + - name: Check if Go project and has go.mod + id: gomod + run: test -e ./go.mod && echo "::set-output name=exists::true" || echo "::set-output name=exists::false" + shell: bash + - if: steps.gomod.outputs.exists == 'true' + name: Setup Go + uses: actions/setup-go@v2.1.3 + with: + go-version: 1.16 + - if: steps.gomod.outputs.exists == 'true' + name: golangci-lint + uses: golangci/golangci-lint-action@v2 # golangci-lint version extracted from go.mod. `latest` if missing. + with: + skip-go-installation: true # we wanna control the version of Go in use + + test: + if: github.event.pull_request.draft == false + name: ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + steps: + - name: Checkout repository + uses: actions/checkout@v2 + - name: Check if Go project and has go.mod + id: gomod + run: test -e ./go.mod && echo "::set-output name=exists::true" || echo "::set-output name=exists::false" + shell: bash + - if: steps.gomod.outputs.exists == 'true' + name: Setup Go + uses: actions/setup-go@v2.1.3 + with: + go-version: 1.16 + - if: steps.gomod.outputs.exists == 'true' + name: Build + run: go build -v ./... + - if: steps.gomod.outputs.exists == 'true' + name: Test + run: go test -v ./... +