# Used as inspiration: https://github.com/mvdan/github-actions-golang name: Tests on: push: branches: - master pull_request: branches: - master jobs: test: strategy: # Default is true, cancels jobs for other platforms in the matrix if one fails fail-fast: false matrix: os: [ ubuntu-latest, macos-latest, windows-latest ] go: [ '1.16' ] runs-on: ${{ matrix.os }} steps: - name: Install Go uses: actions/setup-go@v2 with: go-version: ${{ matrix.go }} - name: Checkout code uses: actions/checkout@v2 - name: Print Go version and environment id: vars run: | printf "Using go at: $(which go)\n" printf "Go version: $(go version)\n" printf "\n\nGo environment:\n\n" go env printf "\n\nSystem environment:\n\n" env echo "::set-output name=go_cache::$(go env GOCACHE)" - name: Cache the build cache uses: actions/cache@v2 with: path: ${{ steps.vars.outputs.go_cache }} key: ${{ runner.os }}-${{ matrix.go }}-go-ci-${{ hashFiles('**/go.sum') }} restore-keys: | ${{ runner.os }}-${{ matrix.go }}-go-ci - name: Get dependencies run: go get -v -t -d ./... # To ensure the project compiles, and not just its tests are passing - name: Build webdav working-directory: . env: CGO_ENABLED: 0 run: go build -trimpath -ldflags="-w -s" -v - name: Run tests run: go test -v -race ./... golangci-lint: name: runner / golangci-lint runs-on: ubuntu-latest steps: - name: Checkout code into the Go module directory uses: actions/checkout@v2 - name: Run golangci-lint uses: reviewdog/action-golangci-lint@v1 with: github_token: ${{ secrets.github_token }} goreleaser-check: # goreleaser --rm-dist --skip-validate --skip-publish runs-on: ubuntu-latest steps: - name: checkout uses: actions/checkout@v2 - uses: goreleaser/goreleaser-action@v2 with: version: latest args: check env: TAG: ${{ steps.vars.outputs.version_tag }}