#Continuous integration action # largely inspired by https://brunopaz.dev/blog/building-a-basic-ci-cd-pipeline-for-a-golang-application-using-github-actions name: Build & Test on: push: branches: - 'master' pull_request: branches: - '*' jobs: lint: name: Lint runs-on: ubuntu-latest steps: - name: Set up Go uses: actions/setup-go@v5 with: go-version: '^1.21.3' - name: Check out code uses: actions/checkout@v4 - name: Lint Go Code with golangci-lint uses: golangci/golangci-lint-action@v4 - name: Vet Go Code run: | make vet test: name: Test runs-on: ubuntu-latest steps: - name: Set up Go uses: actions/setup-go@v5 with: go-version: '^1.21.3' - name: Check out code uses: actions/checkout@v4 - name: Run Unit tests. run: | make test-coverage - name: Upload Coverage report to CodeCov uses: codecov/codecov-action@v4.1.0 with: token: ${{secrets.CODECOV_TOKEN}} file: ./coverage.txt build: runs-on: ubuntu-latest name: Build and Integration tests needs: [lint, test] steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: go-version: '^1.21.3' - run: go mod download - name: Validates GO releaser config uses: goreleaser/goreleaser-action@v5 with: distribution: goreleaser args: check - name: Run GoReleaser uses: goreleaser/goreleaser-action@v5 with: distribution: goreleaser args: release --snapshot --skip=publish --clean - name: Setup BATS run: test/install-bats.sh - name: Run End-To_end testing with the docker container run: test/bats/bin/bats test/bats-scripts