name: tests #those env variables are for localstack, so we can emulate aws services env: AWS_HOST: localstack SERVICES: cloudwatch,logs,kinesis #those 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" on: push: branches: [ master ] paths-ignore: - 'docs/**' - 'mkdocs.yml' - 'README.md' pull_request: branches: [ master ] paths-ignore: - 'docs/**' - 'mkdocs.yml' - 'README.md' jobs: build: name: Build runs-on: ubuntu-latest services: localstack: image: localstack/localstack:0.13.3 ports: - 4566:4566 # Localstack exposes all services on 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@v1 with: go-version: 1.17 id: go - name: Check out code into the Go module directory uses: actions/checkout@v2 - name: Build run: make build && go get -u github.com/jandelgado/gcov2lcov - name: Build package run: make package - name: All tests run: go test -coverprofile=coverage.out -covermode=atomic ./... - name: gcov2lcov uses: jandelgado/gcov2lcov-action@v1.0.2 with: infile: coverage.out outfile: coverage.txt - name: Coveralls uses: coverallsapp/github-action@master continue-on-error: true with: github-token: ${{ secrets.GITHUB_TOKEN }} path-to-lcov: coverage.txt