Skip to content

Conversation

@ivanvc
Copy link
Member

@ivanvc ivanvc commented Oct 11, 2025

With #19423 merged, we can start cleaning up our tangled scripts. This PR aims to run golangci-lint from the top level of the repository.

Part of #18409.

Please read https://github.com/etcd-io/etcd/blob/main/CONTRIBUTING.md#contribution-flow.

Adds workspace_relative_modules, and run_for_all_workspace_modules which
runs a given function for all the workspace module from the top-level of
the repository, without iterating by module/directory.

Signed-off-by: Ivan Valdes <[email protected]>
@codecov
Copy link

codecov bot commented Oct 11, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 69.22%. Comparing base (ef06060) to head (a2c1df5).
⚠️ Report is 9 commits behind head on main.

Additional details and impacted files

see 29 files with indirect coverage changes

@@            Coverage Diff             @@
##             main   #20788      +/-   ##
==========================================
+ Coverage   69.14%   69.22%   +0.08%     
==========================================
  Files         422      422              
  Lines       34821    34824       +3     
==========================================
+ Hits        24076    24107      +31     
+ Misses       9340     9323      -17     
+ Partials     1405     1394      -11     

Continue to review full report in Codecov by Sentry.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update ef06060...a2c1df5. Read the comment docs.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

# run_for_all_workspace_modules [cmd]
# run given command across all workspace modules
# (unless the set is limited using ${PKG} or / ${USERMOD})
function run_for_all_workspace_modules {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm I was hoping that tools like golangci-lint support workspaces. So we could just call it directly and remove the needs for dedicated scripts.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The problem is that golangci-lint receives the list of modules to check. If we don't pass one, then it would only check the top-level module. We'd need to evaluate tool by tool, as each one may work differently. I did this work before in #19314. There are even some tools that still need the old (current) way of changing directories, if I remember correctly.

This is somewhat similar to how k/k runs golangci-lint (https://github.com/kubernetes/kubernetes/blob/adce99702ab66c41b816b13206000b882deaf0e0/hack/verify-golangci-lint.sh#L179-L199).

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would removing a top level module help? Do need it with go.sum managing dependencies.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we remove the top-level module, many things will require changes. On top of that, this wouldn't address calling golangci-lint. It fails with the error:

ERRO [linters_context] typechecking error: pattern ./...: directory prefix . does not contain modules listed in go.work or their selected dependencies

🤕

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I simplified lint_pass, but we still need this helper so tools receive the list of modules as an argument.

@ivanvc ivanvc force-pushed the use-go-workspace-for-golangci-lint branch from eae8bd1 to a2c1df5 Compare October 15, 2025 23:54
@ivanvc
Copy link
Member Author

ivanvc commented Oct 16, 2025

/retest

@serathius
Copy link
Member

Unrelated to the PR, but look slike the migration to workspaces broke BOM:

�[0;31mFAIL: (code:1):
  % '/home/prow/go/bin/license-bill-of-materials' '--override-file' './bill-of-materials.override.json' 'go.etcd.io/etcd/api/v3/...' 'go.etcd.io/etcd/pkg/v3/...' 'go.etcd.io/etcd/client/pkg/v3/...' 'go.etcd.io/etcd/client/v3/...' 'go.etcd.io/etcd/server/v3/...' 'go.etcd.io/etcd/etcdutl/v3/...' 'go.etcd.io/etcd/etcdctl/v3/...' 'go.etcd.io/etcd/tests/v3/...' 'go.etcd.io/etcd/v3/...'
stderr: 2025/10/15 23:55:09 could not list go.etcd.io/etcd/api/v3/... go.etcd.io/etcd/pkg/v3/... go.etcd.io/etcd/client/pkg/v3/... go.etcd.io/etcd/client/v3/... go.etcd.io/etcd/server/v3/... go.etcd.io/etcd/etcdutl/v3/... go.etcd.io/etcd/etcdctl/v3/... go.etcd.io/etcd/tests/v3/... go.etcd.io/etcd/v3/... dependencies: 'go list -f {{range .Deps}}{{.}}|{{end}} go: downloading go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738 go.etcd.io/etcd/api/v3/authpb go.etcd.io/etcd/api/v3/etcdserverpb go.etcd.io/etcd/api/v3/etcdserverpb/gw go.etcd.io/etcd/api/v3/membershippb go.etcd.io/etcd/api/v3/mvccpb go.etcd.io/etcd/api/v3/v3rpc/rpctypes go.etcd.io/etcd/api/v3/version go.etcd.io/etcd/api/v3/versionpb go.etcd.io/etcd/pkg/v3/adt go.etcd.io/etcd/pkg/v3/cobrautl go.etcd.io/etcd/pkg/v3/contention go.etcd.io/etcd/pkg/v3/cpuutil go.etcd.io/etcd/pkg/v3/crc go.etcd.io/etcd/pkg/v3/debugutil go.etcd.io/etcd/pkg/v3/expect go.etcd.io/etcd/pkg/v3/featuregate go.etcd.io/etcd/pkg/v3/flags go.etcd.io/etcd/pkg/v3/grpctesting go.etcd.io/etcd/pkg/v3/httputil go.etcd.io/etcd/pkg/v3/idutil go.etcd.io/etcd/pkg/v3/ioutil go.etcd.io/etcd/pkg/v3/netutil go.etcd.io/etcd/pkg/v3/notify go.etcd.io/etcd/pkg/v3/osutil go.etcd.io/etcd/pkg/v3/pbutil go.etcd.io/etcd/pkg/v3/proxy go.etcd.io/etcd/pkg/v3/report go.etcd.io/etcd/pkg/v3/runtime go.etcd.io/etcd/pkg/v3/schedule go.etcd.io/etcd/pkg/v3/stringutil go.etcd.io/etcd/pkg/v3/traceutil go.etcd.io/etcd/pkg/v3/wait go.etcd.io/etcd/client/pkg/v3/fileutil go.etcd.io/etcd/client/pkg/v3/logutil go.etcd.io/etcd/client/pkg/v3/pathutil go.etcd.io/etcd/client/pkg/v3/srv go.etcd.io/etcd/client/pkg/v3/systemd go.etcd.io/etcd/client/pkg/v3/testutil go.etcd.io/etcd/client/pkg/v3/tlsutil go.etcd.io/etcd/client/pkg/v3/transport go.etcd.io/etcd/client/pkg/v3/types go.etcd.io/etcd/client/pkg/v3/verify go.etcd.io/etcd/client/v3 go.etcd.io/etcd/client/v3/clientv3util go.etcd.io/etcd/client/v3/concurrency go.etcd.io/etcd/client/v3/credentials go.etcd.io/etcd/client/v3/experimental/recipes go.etcd.io/etcd/client/v3/internal/endpoint go.etcd.io/etcd/client/v3/internal/resolver go.etcd.io/etcd/client/v3/kubernetes go.etcd.io/etcd/client/v3/leasing go.etcd.io/etcd/client/v3/mirror go.etcd.io/etcd/client/v3/mock/mockserver go.etcd.io/etcd/client/v3/namespace go.etcd.io/etcd/client/v3/naming go.etcd.io/etcd/client/v3/naming/endpoints go.etcd.io/etcd/client/v3/naming/endpoints/internal go.etcd.io/etcd/client/v3/naming/resolver go.etcd.io/etcd/client/v3/ordering go.etcd.io/etcd/client/v3/snapshot go.etcd.io/etcd/client/v3/yaml go.etcd.io/etcd/server/v3 go.etcd.io/etcd/server/v3/auth go.etcd.io/etcd/server/v3/config go.etcd.io/etcd/server/v3/embed go.etcd.io/etcd/server/v3/etcdmain go.etcd.io/etcd/server/v3/etcdserver go.etcd.io/etcd/server/v3/etcdserver/api go.etcd.io/etcd/server/v3/etcdserver/api/etcdhttp go.etcd.io/etcd/server/v3/etcdserver/api/etcdhttp/types go.etcd.io/etcd/server/v3/etcdserver/api/membership go.etcd.io/etcd/server/v3/etcdserver/api/rafthttp go.etcd.io/etcd/server/v3/etcdserver/api/snap go.etcd.io/etcd/server/v3/etcdserver/api/snap/snappb go.etcd.io/etcd/server/v3/etcdserver/api/v2error go.etcd.io/etcd/server/v3/etcdserver/api/v2stats go.etcd.io/etcd/server/v3/etcdserver/api/v2store go.etcd.io/etcd/server/v3/etcdserver/api/v3alarm go.etcd.io/etcd/server/v3/etcdserver/api/v3client go.etcd.io/etcd/server/v3/etcdserver/api/v3compactor go.etcd.io/etcd/server/v3/etcdserver/api/v3discovery go.etcd.io/etcd/server/v3/etcdserver/api/v3election go.etcd.io/etcd/server/v3/etcdserver/api/v3election/v3electionpb go.etcd.io/etcd/server/v3/etcdserver/api/v3election/v3electionpb/gw go.etcd.io/etcd/server/v3/etcdserver/api/v3lock go.etcd.io/etcd/server/v3/etcdserver/api/v3lock/v3lockpb go.etcd.io/etcd/server/v3/etcdserver/api/v3lock/v3lockpb/gw go.etcd.io/etcd/server/v3/etcdserver/api/v3rpc go.etcd.io/etcd/server/v3/etcdserver/apply go.etcd.io/etcd/server/v3/etcdserver/cindex go.etcd.io/etcd/server/v3/etcdserver/errors go.etcd.io/etcd/server/v3/etcdserver/txn go.etcd.io/etcd/server/v3/etcdserver/version go.etcd.io/etcd/server/v3/features go.etcd.io/etcd/server/v3/lease go.etcd.io/etcd/server/v3/lease/leasehttp go.etcd.io/etcd/server/v3/lease/leasepb go.etcd.io/etcd/server/v3/mock/mockstorage go.etcd.io/etcd/server/v3/mock/mockstore go.etcd.io/etcd/server/v3/mock/mockwait go.etcd.io/etcd/server/v3/proxy/grpcproxy go.etcd.io/etcd/server/v3/proxy/grpcproxy/adapter go.etcd.io/etcd/server/v3/proxy/grpcproxy/cache go.etcd.io/etcd/server/v3/proxy/tcpproxy go.etcd.io/etcd/server/v3/storage go.etcd.io/etcd/server/v3/storage/backend go.etcd.io/etcd/server/v3/storage/backend/testing go.etcd.io/etcd/server/v3/storage/datadir go.etcd.io/etcd/server/v3/storage/mvcc go.etcd.io/etcd/server/v3/storage/mvcc/testutil go.etcd.io/etcd/server/v3/storage/schema go.etcd.io/etcd/server/v3/storage/wal go.etcd.io/etcd/server/v3/storage/wal/testing go.etcd.io/etcd/server/v3/storage/wal/walpb go.etcd.io/etcd/server/v3/verify go.etcd.io/etcd/etcdutl/v3 go.etcd.io/etcd/etcdutl/v3/etcdutl go.etcd.io/etcd/etcdutl/v3/snapshot go.etcd.io/etcd/etcdctl/v3 go.etcd.io/etcd/etcdctl/v3/ctlv3 go.etcd.io/etcd/etcdctl/v3/ctlv3/command go.etcd.io/etcd/etcdctl/v3/util go.etcd.io/etcd/tests/v3/antithesis/test-template/entrypoint go.etcd.io/etcd/tests/v3/antithesis/test-template/robustness/common go.etcd.io/etcd/tests/v3/antithesis/test-template/robustness/finally go.etcd.io/etcd/tests/v3/antithesis/test-template/robustness/traffic go.etcd.io/etcd/tests/v3/common go.etcd.io/etcd/tests/v3/e2e go.etcd.io/etcd/tests/v3/framework go.etcd.io/etcd/tests/v3/framework/config go.etcd.io/etcd/tests/v3/framework/e2e go.etcd.io/etcd/tests/v3/framework/integration go.etcd.io/etcd/tests/v3/framework/interfaces go.etcd.io/etcd/tests/v3/framework/testutils go.etcd.io/etcd/tests/v3/framework/unit go.etcd.io/etcd/tests/v3/integration go.etcd.io/etcd/tests/v3/integration/clientv3 go.etcd.io/etcd/tests/v3/integration/clientv3/concurrency go.etcd.io/etcd/tests/v3/integration/clientv3/connectivity go.etcd.io/etcd/tests/v3/integration/clientv3/examples go.etcd.io/etcd/tests/v3/integration/clientv3/experimental/recipes go.etcd.io/etcd/tests/v3/integration/clientv3/lease go.etcd.io/etcd/tests/v3/integration/clientv3/naming go.etcd.io/etcd/tests/v3/integration/clientv3/snapshot go.etcd.io/etcd/tests/v3/integration/clientv3/watch go.etcd.io/etcd/tests/v3/integration/embed go.etcd.io/etcd/tests/v3/integration/proxy/grpcproxy go.etcd.io/etcd/tests/v3/integration/snapshot go.etcd.io/etcd/tests/v3/integration/v2store go.etcd.io/etcd/tests/v3/robustness go.etcd.io/etcd/tests/v3/robustness/client go.etcd.io/etcd/tests/v3/robustness/coverage go.etcd.io/etcd/tests/v3/robustness/failpoint go.etcd.io/etcd/tests/v3/robustness/identity go.etcd.io/etcd/tests/v3/robustness/model go.etcd.io/etcd/tests/v3/robustness/options go.etcd.io/etcd/tests/v3/robustness/random go.etcd.io/etcd/tests/v3/robustness/report go.etcd.io/etcd/tests/v3/robustness/scenarios go.etcd.io/etcd/tests/v3/robustness/traffic go.etcd.io/etcd/tests/v3/robustness/validate go.etcd.io/etcd/v3 go.etcd.io/etcd/v3/contrib/lock/client go.etcd.io/etcd/v3/contrib/lock/storage go.etcd.io/etcd/v3/contrib/raftexample go.etcd.io/etcd/v3/tools/benchmark go.etcd.io/etcd/v3/tools/benchmark/cmd go.etcd.io/etcd/v3/tools/etcd-dump-db go.etcd.io/etcd/v3/tools/etcd-dump-logs go.etcd.io/etcd/v3/tools/etcd-dump-metrics go.etcd.io/etcd/v3/tools/local-tester/bridge go.etcd.io/etcd/v3/tools/proto-annotations go.etcd.io/etcd/v3/tools/proto-annotations/cmd' failed with:
% (cd tools/mod && 'go' 'install' 'github.com/appscodelabs/license-bill-of-materials')
              
stderr: malformed import path "go: downloading go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738": invalid char ':'

@k8s-ci-robot
Copy link

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: ivanvc, serathius

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@serathius serathius merged commit fc98ad0 into etcd-io:main Oct 16, 2025
31 checks passed
@ivanvc ivanvc deleted the use-go-workspace-for-golangci-lint branch October 16, 2025 15:58
@ivanvc
Copy link
Member Author

ivanvc commented Oct 16, 2025

Unrelated to the PR, but look slike the migration to workspaces broke BOM:

�[0;31mFAIL: (code:1):
  % '/home/prow/go/bin/license-bill-of-materials' '--override-file' './bill-of-materials.override.json' 'go.etcd.io/etcd/api/v3/...' 'go.etcd.io/etcd/pkg/v3/...' 'go.etcd.io/etcd/client/pkg/v3/...' 'go.etcd.io/etcd/client/v3/...' 'go.etcd.io/etcd/server/v3/...' 'go.etcd.io/etcd/etcdutl/v3/...' 'go.etcd.io/etcd/etcdctl/v3/...' 'go.etcd.io/etcd/tests/v3/...' 'go.etcd.io/etcd/v3/...'
stderr: 2025/10/15 23:55:09 could not list go.etcd.io/etcd/api/v3/... go.etcd.io/etcd/pkg/v3/... go.etcd.io/etcd/client/pkg/v3/... go.etcd.io/etcd/client/v3/... go.etcd.io/etcd/server/v3/... go.etcd.io/etcd/etcdutl/v3/... go.etcd.io/etcd/etcdctl/v3/... go.etcd.io/etcd/tests/v3/... go.etcd.io/etcd/v3/... dependencies: 'go list -f {{range .Deps}}{{.}}|{{end}} go: downloading go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738 go.etcd.io/etcd/api/v3/authpb go.etcd.io/etcd/api/v3/etcdserverpb go.etcd.io/etcd/api/v3/etcdserverpb/gw go.etcd.io/etcd/api/v3/membershippb go.etcd.io/etcd/api/v3/mvccpb go.etcd.io/etcd/api/v3/v3rpc/rpctypes go.etcd.io/etcd/api/v3/version go.etcd.io/etcd/api/v3/versionpb go.etcd.io/etcd/pkg/v3/adt go.etcd.io/etcd/pkg/v3/cobrautl go.etcd.io/etcd/pkg/v3/contention go.etcd.io/etcd/pkg/v3/cpuutil go.etcd.io/etcd/pkg/v3/crc go.etcd.io/etcd/pkg/v3/debugutil go.etcd.io/etcd/pkg/v3/expect go.etcd.io/etcd/pkg/v3/featuregate go.etcd.io/etcd/pkg/v3/flags go.etcd.io/etcd/pkg/v3/grpctesting go.etcd.io/etcd/pkg/v3/httputil go.etcd.io/etcd/pkg/v3/idutil go.etcd.io/etcd/pkg/v3/ioutil go.etcd.io/etcd/pkg/v3/netutil go.etcd.io/etcd/pkg/v3/notify go.etcd.io/etcd/pkg/v3/osutil go.etcd.io/etcd/pkg/v3/pbutil go.etcd.io/etcd/pkg/v3/proxy go.etcd.io/etcd/pkg/v3/report go.etcd.io/etcd/pkg/v3/runtime go.etcd.io/etcd/pkg/v3/schedule go.etcd.io/etcd/pkg/v3/stringutil go.etcd.io/etcd/pkg/v3/traceutil go.etcd.io/etcd/pkg/v3/wait go.etcd.io/etcd/client/pkg/v3/fileutil go.etcd.io/etcd/client/pkg/v3/logutil go.etcd.io/etcd/client/pkg/v3/pathutil go.etcd.io/etcd/client/pkg/v3/srv go.etcd.io/etcd/client/pkg/v3/systemd go.etcd.io/etcd/client/pkg/v3/testutil go.etcd.io/etcd/client/pkg/v3/tlsutil go.etcd.io/etcd/client/pkg/v3/transport go.etcd.io/etcd/client/pkg/v3/types go.etcd.io/etcd/client/pkg/v3/verify go.etcd.io/etcd/client/v3 go.etcd.io/etcd/client/v3/clientv3util go.etcd.io/etcd/client/v3/concurrency go.etcd.io/etcd/client/v3/credentials go.etcd.io/etcd/client/v3/experimental/recipes go.etcd.io/etcd/client/v3/internal/endpoint go.etcd.io/etcd/client/v3/internal/resolver go.etcd.io/etcd/client/v3/kubernetes go.etcd.io/etcd/client/v3/leasing go.etcd.io/etcd/client/v3/mirror go.etcd.io/etcd/client/v3/mock/mockserver go.etcd.io/etcd/client/v3/namespace go.etcd.io/etcd/client/v3/naming go.etcd.io/etcd/client/v3/naming/endpoints go.etcd.io/etcd/client/v3/naming/endpoints/internal go.etcd.io/etcd/client/v3/naming/resolver go.etcd.io/etcd/client/v3/ordering go.etcd.io/etcd/client/v3/snapshot go.etcd.io/etcd/client/v3/yaml go.etcd.io/etcd/server/v3 go.etcd.io/etcd/server/v3/auth go.etcd.io/etcd/server/v3/config go.etcd.io/etcd/server/v3/embed go.etcd.io/etcd/server/v3/etcdmain go.etcd.io/etcd/server/v3/etcdserver go.etcd.io/etcd/server/v3/etcdserver/api go.etcd.io/etcd/server/v3/etcdserver/api/etcdhttp go.etcd.io/etcd/server/v3/etcdserver/api/etcdhttp/types go.etcd.io/etcd/server/v3/etcdserver/api/membership go.etcd.io/etcd/server/v3/etcdserver/api/rafthttp go.etcd.io/etcd/server/v3/etcdserver/api/snap go.etcd.io/etcd/server/v3/etcdserver/api/snap/snappb go.etcd.io/etcd/server/v3/etcdserver/api/v2error go.etcd.io/etcd/server/v3/etcdserver/api/v2stats go.etcd.io/etcd/server/v3/etcdserver/api/v2store go.etcd.io/etcd/server/v3/etcdserver/api/v3alarm go.etcd.io/etcd/server/v3/etcdserver/api/v3client go.etcd.io/etcd/server/v3/etcdserver/api/v3compactor go.etcd.io/etcd/server/v3/etcdserver/api/v3discovery go.etcd.io/etcd/server/v3/etcdserver/api/v3election go.etcd.io/etcd/server/v3/etcdserver/api/v3election/v3electionpb go.etcd.io/etcd/server/v3/etcdserver/api/v3election/v3electionpb/gw go.etcd.io/etcd/server/v3/etcdserver/api/v3lock go.etcd.io/etcd/server/v3/etcdserver/api/v3lock/v3lockpb go.etcd.io/etcd/server/v3/etcdserver/api/v3lock/v3lockpb/gw go.etcd.io/etcd/server/v3/etcdserver/api/v3rpc go.etcd.io/etcd/server/v3/etcdserver/apply go.etcd.io/etcd/server/v3/etcdserver/cindex go.etcd.io/etcd/server/v3/etcdserver/errors go.etcd.io/etcd/server/v3/etcdserver/txn go.etcd.io/etcd/server/v3/etcdserver/version go.etcd.io/etcd/server/v3/features go.etcd.io/etcd/server/v3/lease go.etcd.io/etcd/server/v3/lease/leasehttp go.etcd.io/etcd/server/v3/lease/leasepb go.etcd.io/etcd/server/v3/mock/mockstorage go.etcd.io/etcd/server/v3/mock/mockstore go.etcd.io/etcd/server/v3/mock/mockwait go.etcd.io/etcd/server/v3/proxy/grpcproxy go.etcd.io/etcd/server/v3/proxy/grpcproxy/adapter go.etcd.io/etcd/server/v3/proxy/grpcproxy/cache go.etcd.io/etcd/server/v3/proxy/tcpproxy go.etcd.io/etcd/server/v3/storage go.etcd.io/etcd/server/v3/storage/backend go.etcd.io/etcd/server/v3/storage/backend/testing go.etcd.io/etcd/server/v3/storage/datadir go.etcd.io/etcd/server/v3/storage/mvcc go.etcd.io/etcd/server/v3/storage/mvcc/testutil go.etcd.io/etcd/server/v3/storage/schema go.etcd.io/etcd/server/v3/storage/wal go.etcd.io/etcd/server/v3/storage/wal/testing go.etcd.io/etcd/server/v3/storage/wal/walpb go.etcd.io/etcd/server/v3/verify go.etcd.io/etcd/etcdutl/v3 go.etcd.io/etcd/etcdutl/v3/etcdutl go.etcd.io/etcd/etcdutl/v3/snapshot go.etcd.io/etcd/etcdctl/v3 go.etcd.io/etcd/etcdctl/v3/ctlv3 go.etcd.io/etcd/etcdctl/v3/ctlv3/command go.etcd.io/etcd/etcdctl/v3/util go.etcd.io/etcd/tests/v3/antithesis/test-template/entrypoint go.etcd.io/etcd/tests/v3/antithesis/test-template/robustness/common go.etcd.io/etcd/tests/v3/antithesis/test-template/robustness/finally go.etcd.io/etcd/tests/v3/antithesis/test-template/robustness/traffic go.etcd.io/etcd/tests/v3/common go.etcd.io/etcd/tests/v3/e2e go.etcd.io/etcd/tests/v3/framework go.etcd.io/etcd/tests/v3/framework/config go.etcd.io/etcd/tests/v3/framework/e2e go.etcd.io/etcd/tests/v3/framework/integration go.etcd.io/etcd/tests/v3/framework/interfaces go.etcd.io/etcd/tests/v3/framework/testutils go.etcd.io/etcd/tests/v3/framework/unit go.etcd.io/etcd/tests/v3/integration go.etcd.io/etcd/tests/v3/integration/clientv3 go.etcd.io/etcd/tests/v3/integration/clientv3/concurrency go.etcd.io/etcd/tests/v3/integration/clientv3/connectivity go.etcd.io/etcd/tests/v3/integration/clientv3/examples go.etcd.io/etcd/tests/v3/integration/clientv3/experimental/recipes go.etcd.io/etcd/tests/v3/integration/clientv3/lease go.etcd.io/etcd/tests/v3/integration/clientv3/naming go.etcd.io/etcd/tests/v3/integration/clientv3/snapshot go.etcd.io/etcd/tests/v3/integration/clientv3/watch go.etcd.io/etcd/tests/v3/integration/embed go.etcd.io/etcd/tests/v3/integration/proxy/grpcproxy go.etcd.io/etcd/tests/v3/integration/snapshot go.etcd.io/etcd/tests/v3/integration/v2store go.etcd.io/etcd/tests/v3/robustness go.etcd.io/etcd/tests/v3/robustness/client go.etcd.io/etcd/tests/v3/robustness/coverage go.etcd.io/etcd/tests/v3/robustness/failpoint go.etcd.io/etcd/tests/v3/robustness/identity go.etcd.io/etcd/tests/v3/robustness/model go.etcd.io/etcd/tests/v3/robustness/options go.etcd.io/etcd/tests/v3/robustness/random go.etcd.io/etcd/tests/v3/robustness/report go.etcd.io/etcd/tests/v3/robustness/scenarios go.etcd.io/etcd/tests/v3/robustness/traffic go.etcd.io/etcd/tests/v3/robustness/validate go.etcd.io/etcd/v3 go.etcd.io/etcd/v3/contrib/lock/client go.etcd.io/etcd/v3/contrib/lock/storage go.etcd.io/etcd/v3/contrib/raftexample go.etcd.io/etcd/v3/tools/benchmark go.etcd.io/etcd/v3/tools/benchmark/cmd go.etcd.io/etcd/v3/tools/etcd-dump-db go.etcd.io/etcd/v3/tools/etcd-dump-logs go.etcd.io/etcd/v3/tools/etcd-dump-metrics go.etcd.io/etcd/v3/tools/local-tester/bridge go.etcd.io/etcd/v3/tools/proto-annotations go.etcd.io/etcd/v3/tools/proto-annotations/cmd' failed with:
% (cd tools/mod && 'go' 'install' 'github.com/appscodelabs/license-bill-of-materials')
              
stderr: malformed import path "go: downloading go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738": invalid char ':'

Yes, it's the workspace, but it's also an issue with the tool we're using to generate the BOM. I addressed that with 8b02416.

The issue is that in a fresh clone, if you run the tool, it will fail the first time because it needs to download dependencies, and it appears the tool is reading stdout. So, the workaround to fix it is to run it first and let it fail. And then rerun it, while capturing the output, and it works fine. I could add a >/dev/null to the first instruction to avoid polluting the logs. Again, the first execution is expected to fail with the error message you quoted.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Development

Successfully merging this pull request may close these issues.

3 participants