name: Go tests (linux w/ localstack) on: push: branches: [master] paths-ignore: - 'README.md' pull_request: branches: [master] paths-ignore: - 'README.md' # these env variables are for localstack, so we can emulate aws services env: RICHGO_FORCE_COLOR: 1 AWS_HOST: localstack SERVICES: cloudwatch,logs,kinesis # these are to mimic aws config AWS_ACCESS_KEY_ID: AKIAIOSFODNN7EXAMPLE AWS_SECRET_ACCESS_KEY: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY AWS_REGION: us-east-1 # and to override our endpoint in aws sdk AWS_ENDPOINT_FORCE: http://localhost:4566 KINESIS_INITIALIZE_STREAMS: "stream-1-shard:1,stream-2-shards:2" jobs: build: name: "Build + tests" runs-on: ubuntu-latest services: localstack: image: localstack/localstack:0.13.3 ports: - 4566:4566 # Localstack exposes all services on the same port env: SERVICES: ${{ env.SERVICES }} DEBUG: "" DATA_DIR: "" LAMBDA_EXECUTOR: "" KINESIS_ERROR_PROBABILITY: "" DOCKER_HOST: unix:///var/run/docker.sock HOST_TMP_FOLDER: "/tmp" KINESIS_INITIALIZE_STREAMS: ${{ env.KINESIS_INITIALIZE_STREAMS }} HOSTNAME_EXTERNAL: ${{ env.AWS_HOST }} # Required so that resource urls are provided properly # e.g sqs url will get localhost if we don't set this env to map our service options: >- --name=localstack --health-cmd="curl -sS 127.0.0.1:4566 || exit 1" --health-interval=10s --health-timeout=5s --health-retries=3 steps: - name: "Set up Go 1.17" uses: actions/setup-go@v3 with: go-version: 1.17 id: go - name: Check out CrowdSec repository uses: actions/checkout@v3 with: fetch-depth: 0 submodules: false - name: Build run: | make build - name: Run tests run: | go install github.com/ory/go-acc@v0.2.8 go install github.com/kyoh86/richgo@v0.3.10 go-acc ./... -o coverage.out --ignore database,notifications,protobufs,cwversion,cstest,models \ | sed 's/ *coverage:.*of statements in.*//' \ | richgo testfilter - name: Upload unit coverage to Codecov uses: codecov/codecov-action@v2 with: files: coverage.out flags: unit-linux