name: Go CI on: push: branches: [main, develop] pull_request: branches: [main, develop] jobs: test: name: Test runs-on: ubuntu-latest services: postgres: image: postgres:15-alpine env: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: tercul_test ports: - 5432:5432 options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 redis: image: redis:alpine ports: - 6379:6379 options: >- --health-cmd "redis-cli ping" --health-interval 10s --health-timeout 5s --health-retries 5 steps: - name: Set up Go uses: actions/setup-go@v4 with: go-version: "1.22" - name: Check out code uses: actions/checkout@v4 - name: Install dependencies run: go mod download - name: Verify dependencies run: go mod verify - name: Run vet run: go vet ./... - name: Run tests run: go test -v -race -coverprofile=coverage.txt -covermode=atomic ./... env: DB_HOST: localhost DB_PORT: 5432 DB_USER: postgres DB_PASSWORD: postgres DB_NAME: tercul_test REDIS_HOST: localhost REDIS_PORT: 6379 - name: Upload coverage to Codecov uses: codecov/codecov-action@v3 with: file: ./coverage.txt flags: unittests lint: name: Lint runs-on: ubuntu-latest steps: - name: Set up Go uses: actions/setup-go@v4 with: go-version: "1.22" - name: Check out code uses: actions/checkout@v4 - name: Run golangci-lint uses: golangci/golangci-lint-action@v3 with: version: latest