name: Build on: push: branches: - '**' tags: - '*.*.*' pull_request: jobs: build: runs-on: ubuntu-latest services: redis: image: redis:7-alpine options: >- --health-cmd "redis-cli ping" --health-interval 10s --health-timeout 5s --health-retries 5 ports: - 6379:6379 steps: - uses: actions/checkout@v4 - id: version name: Set up build version run: | if [[ $GITHUB_REF_TYPE == "tag" ]]; then VERSION=${GITHUB_REF#refs/tags/} else BRANCH_NAME=${GITHUB_REF#refs/heads/} SHORT_SHA=$(git rev-parse --short $GITHUB_SHA) VERSION="${BRANCH_NAME}-${SHORT_SHA}" fi echo "### Version: $VERSION" >> $GITHUB_STEP_SUMMARY echo "version=$VERSION" >> "$GITHUB_OUTPUT" - name: Setup Go uses: actions/setup-go@v5 with: cache-dependency-path: go.sum go-version-file: go.mod - name: Install dependencies run: go get ./... - name: Go Format run: gofmt -s -w . && git diff --exit-code - name: Go Vet run: go vet ./... - name: Go Test run: go test -v -race --tags redis -coverprofile=coverage.txt -covermode=atomic ./... - name: Upload coverage to Codecov uses: codecov/codecov-action@v4 env: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} - name: Build env: CGO_ENABLED: 'false' run: > go build -trimpath -ldflags "-w -s -X ely.by/chrly/internal/version.version=${{ steps.version.outputs.version }} -X ely.by/chrly/internal/version.commit=${{ github.sha }}" -o ./chrly ./cmd/chrly/... - name: Upload artifact uses: actions/upload-artifact@v4 with: name: chrly-build-linux-amd64-${{ steps.version.outputs.version }} path: ./chrly compression-level: 0