name: Test Pipeline on: workflow_dispatch: workflow_call: env: GO_VERSION: '1.25' jobs: lint-and-unit: name: Lint & Unit Tests runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up Go uses: actions/setup-go@v4 with: go-version: ${{ env.GO_VERSION }} - name: Cache Go toolchain uses: actions/cache@v3 with: path: | ~/go/pkg/mod ~/.cache/go-build key: ${{ runner.os }}-go-${{ env.GO_VERSION }}-${{ hashFiles('**/go.sum') }} restore-keys: | ${{ runner.os }}-go-${{ env.GO_VERSION }}- - name: Download dependencies run: go mod download - name: Run golangci-lint uses: golangci/golangci-lint-action@v3 with: version: latest args: --timeout=10m - name: Run go test (race, cover) run: | GOCACHE=$(pwd)/.gocache go test -race -coverprofile=coverage.out ./... - name: Upload coverage uses: actions/upload-artifact@v3 with: name: unit-test-coverage path: coverage.out smoke-binary: name: Build & Smoke Test Binary runs-on: ubuntu-latest needs: lint-and-unit steps: - uses: actions/checkout@v4 - name: Set up Go uses: actions/setup-go@v4 with: go-version: ${{ env.GO_VERSION }} - name: Restore Go build cache uses: actions/cache@v3 with: path: | ~/go/pkg/mod ~/.cache/go-build key: ${{ runner.os }}-go-${{ env.GO_VERSION }}-${{ hashFiles('**/go.sum') }} restore-keys: | ${{ runner.os }}-go-${{ env.GO_VERSION }}- - name: Build binary run: go build -o bin/mev-bot ./cmd/mev-bot - name: Smoke test startup run: | export MEV_BOT_ENCRYPTION_KEY="test_key_32_chars_minimum_length" timeout 5s ./bin/mev-bot start || true echo "✓ Binary builds and starts"