Skip to content

Commit

Permalink
Release script fixes (#102)
Browse files Browse the repository at this point in the history
This adds a utility that can add and remove `replace` statements from a
set of go.mod files.
This builds on previous developments in this repo -- continues relying
on a go.work file being checked in.
The release tools will remove replace statements.
The `genotelarrowcol` tool will add replace statements.
This PR includes the results of
```
make prepare-release RELEASE_CANDIDATE=v0.8.0 PREVIOUS_VERSION=v0.7.0 MODSET=beta
```
which updates the go.mod files with an unreleased version, such that `go
work sync` cannot succeed. It will succeed again after the release is
pushed.

It was difficult to untangle several changes from happening at once.
1. The release v0.7.0 was improperly made, so the go tools want to
update all .sum files with the actual sum of those tags.
2. The ocb tool at v0.88.0 would insert a necessary replace statement,
so we needed v0.89.x

The change to v0.89.x was carried out using `make genotalarrowcol` which
now runs `go work sync`, resulting in all modules receiving the update
to v0.89.x. However, to avoid this sort of problem in the future, the
ocb version is now hard-coded in the Dockerfile and Makefile.
  • Loading branch information
jmacd authored Nov 15, 2023
1 parent 74e77c9 commit dd4f4c6
Show file tree
Hide file tree
Showing 31 changed files with 6,030 additions and 1,759 deletions.
8 changes: 2 additions & 6 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,8 @@ WORKDIR /otel-arrow
COPY . .
ENV CGO_ENABLED=0

# Note we recommend using the latest released builder, which will
# update the core OpenTelemetry collector libraries to the newest
# possible versions. When the latest set of collector dependencies
# leads to a broken build here, this `latest` can instead be set
# to the last-successful version of the OpenTelemetry collector.
RUN go install go.opentelemetry.io/collector/cmd/builder@latest
# Note the version MUST MATCH otelarrowcol-build.yaml
RUN go install go.opentelemetry.io/collector/cmd/builder@v0.89.0

# This command generates main.go, go.mod but does not update deps.
RUN builder --skip-compilation --skip-get-modules --config=collector/otelarrowcol-build.yaml
Expand Down
15 changes: 10 additions & 5 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ build:
for dir in $(GODIRS); do (cd $${dir} && $(GOCMD) build ./...); done

gotidy:
$(GOCMD) work sync
for dir in $(GODIRS); do (cd $${dir} && GOWORK="off" $(GOCMD) mod tidy); done

doc:
$(GOCMD) run tools/data_model_gen/main.go
Expand Down Expand Up @@ -97,21 +97,26 @@ endif
git add .
# regenerate files
$(MAKE) gotidy
# ensure a clean branch
# ensure a clean branch (that was a test--gotidy should be idempotent and should not change the working dir again)
git diff -s --exit-code || (echo "local repository not clean"; exit 1)
$(GOCMD) run ./tools/replacer unfix
git add .
git commit -m "add multimod changes $(RELEASE_CANDIDATE)" || (echo "no multimod changes to commit")

# Install OTC's builder at the latest version
# Install OTC's builder at the version WHICH MUST MATCH collector/otelarrowcol-build.yaml
BUILDER = builder
.PHONY: $(BUILDER)
builder:
$(GOCMD) install go.opentelemetry.io/collector/cmd/builder@latest
$(GOCMD) install go.opentelemetry.io/collector/cmd/builder@v0.89.0

.PHONY: genotelarrowcol
genotelarrowcol: builder
rm -f collector/cmd/otelarrowcol/*
$(BUILDER) --skip-compilation --skip-get-modules --config collector/otelarrowcol-build.yaml
GOWORK="off" $(GOCMD) run ./tools/replacer fix
GOWORK="off" $(BUILDER) --skip-compilation --config collector/otelarrowcol-build.yaml
GOWORK="off" $(GOCMD) run ./tools/replacer fix
$(GOCMD) work sync
$(MAKE) gotidy

.PHONY: otelarrowcol
otelarrowcol:
Expand Down
133 changes: 76 additions & 57 deletions collector/cmd/otelarrowcol/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -2,28 +2,38 @@

module github.com/open-telemetry/otel-arrow/collector/cmd/otelarrowcol

go 1.20
go 1.21

toolchain go1.21.3

require (
github.com/lightstep/telemetry-generator/generatorreceiver v0.15.0
github.com/open-telemetry/opentelemetry-collector-contrib/extension/basicauthextension v0.88.0
github.com/open-telemetry/opentelemetry-collector-contrib/extension/headerssetterextension v0.88.0
github.com/open-telemetry/opentelemetry-collector-contrib/extension/pprofextension v0.88.0
github.com/open-telemetry/otel-arrow/collector v0.7.0
github.com/open-telemetry/otel-arrow/collector/connector/validationconnector v0.8.0
github.com/open-telemetry/otel-arrow/collector/exporter/fileexporter v0.8.0
github.com/open-telemetry/otel-arrow/collector/exporter/otelarrowexporter v0.8.0
github.com/open-telemetry/otel-arrow/collector/processor/concurrentbatchprocessor v0.8.0
github.com/open-telemetry/otel-arrow/collector/processor/experimentprocessor v0.8.0
github.com/open-telemetry/otel-arrow/collector/processor/obfuscationprocessor v0.8.0
github.com/open-telemetry/otel-arrow/collector/receiver/filereceiver v0.8.0
github.com/open-telemetry/otel-arrow/collector/receiver/otelarrowreceiver v0.8.0
github.com/stretchr/testify v1.8.4
go.opentelemetry.io/collector/component v0.88.0
go.opentelemetry.io/collector/connector v0.88.0
go.opentelemetry.io/collector/exporter v0.88.0
go.opentelemetry.io/collector/exporter/debugexporter v0.88.0
go.opentelemetry.io/collector/exporter/otlphttpexporter v0.88.0
go.opentelemetry.io/collector/extension v0.88.0
go.opentelemetry.io/collector/otelcol v0.88.0
go.opentelemetry.io/collector/processor v0.88.0
go.opentelemetry.io/collector/receiver v0.88.0
golang.org/x/sys v0.13.0
go.opentelemetry.io/collector/component v0.89.0
go.opentelemetry.io/collector/connector v0.89.0
go.opentelemetry.io/collector/exporter v0.89.0
go.opentelemetry.io/collector/exporter/debugexporter v0.89.0
go.opentelemetry.io/collector/exporter/otlphttpexporter v0.89.0
go.opentelemetry.io/collector/extension v0.89.0
go.opentelemetry.io/collector/otelcol v0.89.0
go.opentelemetry.io/collector/processor v0.89.0
go.opentelemetry.io/collector/receiver v0.89.0
golang.org/x/sys v0.14.0
)

require (
cloud.google.com/go/compute/metadata v0.2.4-0.20230617002413-005d2dfb6b68 // indirect
contrib.go.opencensus.io/exporter/prometheus v0.4.2 // indirect
github.com/GehirnInc/crypt v0.0.0-20200316065508-bb7000b8a962 // indirect
github.com/HdrHistogram/hdrhistogram-go v1.1.2 // indirect
Expand All @@ -43,11 +53,11 @@ require (
github.com/ethereum/go-ethereum v1.13.1 // indirect
github.com/fatih/color v1.15.0 // indirect
github.com/felixge/httpsnoop v1.0.3 // indirect
github.com/fsnotify/fsnotify v1.6.0 // indirect
github.com/fsnotify/fsnotify v1.7.0 // indirect
github.com/fxamacker/cbor/v2 v2.4.0 // indirect
github.com/go-kit/log v0.2.1 // indirect
github.com/go-logfmt/logfmt v0.5.1 // indirect
github.com/go-logr/logr v1.2.4 // indirect
github.com/go-logr/logr v1.3.0 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/go-ole/go-ole v1.2.6 // indirect
github.com/go-stack/stack v1.8.1 // indirect
Expand All @@ -58,21 +68,22 @@ require (
github.com/golang/protobuf v1.5.3 // indirect
github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect
github.com/google/flatbuffers v2.0.8+incompatible // indirect
github.com/google/uuid v1.3.1 // indirect
github.com/google/uuid v1.4.0 // indirect
github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 // indirect
github.com/hashicorp/go-version v1.6.0 // indirect
github.com/holiman/uint256 v1.2.3 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/klauspost/asmfmt v1.3.2 // indirect
github.com/klauspost/compress v1.17.1 // indirect
github.com/klauspost/compress v1.17.2 // indirect
github.com/klauspost/cpuid/v2 v2.0.9 // indirect
github.com/knadh/koanf/maps v0.1.1 // indirect
github.com/knadh/koanf/providers/confmap v0.1.0 // indirect
github.com/knadh/koanf/v2 v2.0.1 // indirect
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.17 // indirect
github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect
github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8 // indirect
github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3 // indirect
github.com/mitchellh/copystructure v1.2.0 // indirect
Expand All @@ -81,20 +92,21 @@ require (
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/mostynb/go-grpc-compression v1.2.2 // indirect
github.com/open-telemetry/otel-arrow v0.7.0 // indirect
github.com/open-telemetry/otel-arrow v0.8.0 // indirect
github.com/open-telemetry/otel-arrow/collector v0.8.0 // indirect
github.com/pierrec/lz4/v4 v4.1.18 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect
github.com/prometheus/client_golang v1.17.0 // indirect
github.com/prometheus/client_model v0.5.0 // indirect
github.com/prometheus/common v0.44.0 // indirect
github.com/prometheus/common v0.45.0 // indirect
github.com/prometheus/procfs v0.11.1 // indirect
github.com/prometheus/statsd_exporter v0.22.7 // indirect
github.com/robfig/cron/v3 v3.0.1 // indirect
github.com/rs/cors v1.10.1 // indirect
github.com/shirou/gopsutil/v3 v3.23.9 // indirect
github.com/shirou/gopsutil/v3 v3.23.10 // indirect
github.com/shoenig/go-m1cpu v0.1.6 // indirect
github.com/spf13/cobra v1.7.0 // indirect
github.com/spf13/cobra v1.8.0 // indirect
github.com/spf13/pflag v1.0.5 // indirect
github.com/tg123/go-htpasswd v1.2.1 // indirect
github.com/tklauser/go-sysconf v0.3.12 // indirect
Expand All @@ -106,41 +118,40 @@ require (
github.com/zeebo/xxh3 v1.0.2 // indirect
go.mongodb.org/mongo-driver v1.12.1 // indirect
go.opencensus.io v0.24.0 // indirect
go.opentelemetry.io/collector v0.88.0 // indirect
go.opentelemetry.io/collector/config/configauth v0.88.0 // indirect
go.opentelemetry.io/collector/config/configcompression v0.88.0 // indirect
go.opentelemetry.io/collector/config/configgrpc v0.88.0 // indirect
go.opentelemetry.io/collector/config/confighttp v0.88.0 // indirect
go.opentelemetry.io/collector/config/confignet v0.88.0 // indirect
go.opentelemetry.io/collector/config/configopaque v0.88.0 // indirect
go.opentelemetry.io/collector/config/configtelemetry v0.88.0 // indirect
go.opentelemetry.io/collector/config/configtls v0.88.0 // indirect
go.opentelemetry.io/collector/config/internal v0.88.0 // indirect
go.opentelemetry.io/collector/confmap v0.88.0 // indirect
go.opentelemetry.io/collector/consumer v0.88.0 // indirect
go.opentelemetry.io/collector/extension/auth v0.88.0 // indirect
go.opentelemetry.io/collector/featuregate v1.0.0-rcv0017 // indirect
go.opentelemetry.io/collector/pdata v1.0.0-rcv0017 // indirect
go.opentelemetry.io/collector/semconv v0.88.0 // indirect
go.opentelemetry.io/collector/service v0.88.0 // indirect
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.45.0 // indirect
go.opentelemetry.io/collector v0.89.0 // indirect
go.opentelemetry.io/collector/config/configauth v0.89.0 // indirect
go.opentelemetry.io/collector/config/configcompression v0.89.0 // indirect
go.opentelemetry.io/collector/config/configgrpc v0.89.0 // indirect
go.opentelemetry.io/collector/config/confighttp v0.89.0 // indirect
go.opentelemetry.io/collector/config/confignet v0.89.0 // indirect
go.opentelemetry.io/collector/config/configopaque v0.89.0 // indirect
go.opentelemetry.io/collector/config/configtelemetry v0.89.0 // indirect
go.opentelemetry.io/collector/config/configtls v0.89.0 // indirect
go.opentelemetry.io/collector/config/internal v0.89.0 // indirect
go.opentelemetry.io/collector/confmap v0.89.0 // indirect
go.opentelemetry.io/collector/consumer v0.89.0 // indirect
go.opentelemetry.io/collector/extension/auth v0.89.0 // indirect
go.opentelemetry.io/collector/featuregate v1.0.0-rcv0018 // indirect
go.opentelemetry.io/collector/pdata v1.0.0-rcv0018 // indirect
go.opentelemetry.io/collector/semconv v0.89.0 // indirect
go.opentelemetry.io/collector/service v0.89.0 // indirect
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.0 // indirect
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.45.0 // indirect
go.opentelemetry.io/contrib/propagators/b3 v1.20.0 // indirect
go.opentelemetry.io/otel v1.19.0 // indirect
go.opentelemetry.io/otel/bridge/opencensus v0.42.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.42.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.42.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v0.42.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.19.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.19.0 // indirect
go.opentelemetry.io/otel/exporters/prometheus v0.42.0 // indirect
go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v0.42.0 // indirect
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.19.0 // indirect
go.opentelemetry.io/otel/metric v1.19.0 // indirect
go.opentelemetry.io/otel/sdk v1.19.0 // indirect
go.opentelemetry.io/otel/sdk/metric v1.19.0 // indirect
go.opentelemetry.io/otel/trace v1.19.0 // indirect
go.opentelemetry.io/otel v1.20.0 // indirect
go.opentelemetry.io/otel/bridge/opencensus v0.43.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.43.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v0.43.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.20.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.20.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.20.0 // indirect
go.opentelemetry.io/otel/exporters/prometheus v0.43.0 // indirect
go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v0.43.0 // indirect
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.20.0 // indirect
go.opentelemetry.io/otel/metric v1.20.0 // indirect
go.opentelemetry.io/otel/sdk v1.20.0 // indirect
go.opentelemetry.io/otel/sdk/metric v1.20.0 // indirect
go.opentelemetry.io/otel/trace v1.20.0 // indirect
go.opentelemetry.io/proto/otlp v1.0.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
go.uber.org/zap v1.26.0 // indirect
Expand All @@ -151,7 +162,7 @@ require (
golang.org/x/tools v0.10.0 // indirect
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
gonum.org/v1/gonum v0.14.0 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20230920204549-e6e6cdab5c13 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20231012201019-e917dd12ba7a // indirect
google.golang.org/grpc v1.59.0 // indirect
google.golang.org/protobuf v1.31.0 // indirect
Expand All @@ -160,5 +171,13 @@ require (
gopkg.in/yaml.v3 v3.0.1 // indirect
)

// ambiguous import: found package cloud.google.com/go/compute/metadata in multiple modules
replace cloud.google.com/go => cloud.google.com/go v0.110.9










Loading

0 comments on commit dd4f4c6

Please sign in to comment.