name: Go on: push: branches: [ master ] pull_request: branches: [ '*' ] jobs: formatting: name: Formatting runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 - name: Go mod tidy checker id: gomodtidy uses: ./.github/actions/gomodtidy - name: Gofmt checker id: gofmt uses: ./.github/actions/gofmt with: path: ./ - name: GoImports checker id: goimports uses: Jerome1337/goimports-action@v1.0.2 with: goimports-path: ./ gosec: name: Gosec scan runs-on: ubuntu-latest env: GO111MODULE: on steps: - name: Checkout uses: actions/checkout@v2 - name: Set up Go 1.18 uses: actions/setup-go@v3 with: go-version: 1.18 - name: Run Gosec Security Scanner run: | # https://github.com/securego/gosec/issues/469 export PATH=$PATH:$(go env GOPATH)/bin go install github.com/securego/gosec/v2/cmd/gosec@latest gosec -exclude=G307 -exclude-dir=crypto/bls/herumi ./... lint: name: Lint runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 - name: Set up Go 1.18 uses: actions/setup-go@v3 with: go-version: 1.18 id: go - name: Golangci-lint uses: golangci/golangci-lint-action@v2 with: args: --print-issued-lines --sort-results --no-config --timeout=10m --disable-all -E deadcode -E errcheck -E gosimple --skip-files=validator/web/site_data.go --skip-dirs=proto --go=1.18 version: v1.45.2 skip-go-installation: true build: name: Build runs-on: ubuntu-latest steps: - name: Set up Go 1.x uses: actions/setup-go@v2 with: go-version: 1.18 id: go - name: Check out code into the Go module directory uses: actions/checkout@v2 - name: Get dependencies run: | go get -v -t -d ./... - name: Build # Use blst tag to allow go and bazel builds for blst. run: go build -v ./... # fuzz leverage go tag based stubs at compile time. # Building and testing with these tags should be checked and enforced at pre-submit. - name: Test for fuzzing run: go test -tags=fuzz,develop ./... -test.run=^Fuzz # Tests run via Bazel for now... # - name: Test # run: go test -v ./...