gpt4 book ai didi

go - 忽略 librd kafka 中的测试

转载 作者:行者123 更新时间:2023-12-01 19:46:53 25 4
gpt4 key购买 nike

我的golang项目依赖librd kafka

当我尝试从我的 jenkin 运行 go vet ./...go test ./... 时,出现以下错误。我相信这是因为我正在运行 ./... 但即使我不得不忽略 vendor ,我也不确定应该是什么我尝试了 go test $( go list ./... | grep -v/vendor/librdkafka) 但它没有帮助。

/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: /go/pkg/mod/gopkg.in/confluentinc/confluent-kafka-go.v1@v1.4.2/kafka/librdkafka/librdkafka_glibc_linux.a(rdkafka_mock_cgrp.o): in function `rd_kafka_mock_cgrp_member_add':

(.text+0x8e5): undefined reference to `__strndup'

/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: /go/pkg/mod/gopkg.in/confluentinc/confluent-kafka-go.v1@v1.4.2/kafka/librdkafka/librdkafka_glibc_linux.a(rdkafka_mock_cgrp.o): in function `rd_kafka_mock_cgrp_get':

(.text+0xd1e): undefined reference to `__strndup'

/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: (.text+0xd46): undefined reference to `__strndup'

/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: /go/pkg/mod/gopkg.in/confluentinc/confluent-kafka-go.v1@v1.4.2/kafka/librdkafka/librdkafka_glibc_linux.a(rdkafka_mock_cgrp.o): in function `rd_kafka_mcgrp_rebalance_timer_cb':

(.text+0x13dd): undefined reference to `__strndup'

我想知道如何在测试我的项目时解决 gcc 错误

我的 Dockerfile :

FROM golang:1.14-alpine AS builder

WORKDIR /src
ENV CGO_ENABLED=0
RUN apk add --no-cache git make
RUN go get \
github.com/AlekSi/gocov-xml \
github.com/axw/gocov \
github.com/tebeka/go2xunit \
github.com/wadey/gocovmerge



COPY go.mod go.sum ./
RUN go get -d -v ./...
RUN go mod download

COPY . .

FROM test AS builder
ENV CGO_ENABLED=1
#this config is for lib rd kafka setup
RUN set -ex &&\
apk add --no-progress --no-cache \
gcc \
musl-dev

WORKDIR /src

RUN go install -tags musl ./...

我的 jenkins 文件片段

    stage("Test") {
agent {
dockerfile {
label 'docker'
additionalBuildArgs '--target test'
args '-v test:/src/test'
reuseNode true
}
}

steps {
parallel(
'Unit Test': {
sh "make ${makeArgs} test/unit-test"
},
Coverage: {
sh "make ${makeArgs} test/coverage"
},
Vet: {
sh "make ${makeArgs} test/vet"
}
)
}
post {
always {
junit 'test/*xml'
publishHTML([allowMissing: false, alwaysLinkToLastBuild: false, keepAll: false, reportDir: 'test', reportFiles: 'coverage.html', reportName: 'Code Coverage Report'])
sh "make ${makeArgs} clean"
}
}
}

最佳答案

我只需要运行它-tags musl

go vet -tags musl ./...

关于go - 忽略 librd kafka 中的测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63583633/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com