Several packages & environment variables are necessary to build in a Windows environment:
-
Download & install the latest Go MSI.
-
Download & install Make for Windows.
-
Open
cmd
and add make to the user PATH:
setx path "%PATH%;C:\Program Files (x86)\GnuWin32\bin"
-
Download & install 64-bit Git for Windows Setup.
-
Open gitbash.
-
Navigate to the otelcolbuilder directory:
cd sumologic-otel-collector/otelcolbuilder
- Install otelcolbuilder:
make install-builder
$ cd otelcolbuilder && make build
opentelemetry-collector-builder \
--config .otelcol-builder.yaml \
--output-path ./cmd \
--name otelcol-sumo
2021-05-24T16:29:03.494+0200 INFO cmd/root.go:99 OpenTelemetry Collector distribution builder {"version": "dev", "date": "unknown"}
2021-05-24T16:29:03.498+0200 INFO builder/main.go:90 Sources created {"path": "./cmd"}
2021-05-24T16:29:03.612+0200 INFO builder/main.go:126 Getting go modules
2021-05-24T16:29:03.957+0200 INFO builder/main.go:107 Compiling
2021-05-24T16:29:09.770+0200 INFO builder/main.go:113 Compiled {"binary": "./cmd/otelcol-sumo"}
In order to build for a different platform one can use otelcol-sumo-${platform}_${arch}
make targets e.g.:
$ cd otelcolbuilder && make otelcol-sumo-linux_arm64
GOOS=linux GOARCH=arm64 /Library/Developer/CommandLineTools/usr/bin/make build BINARY_NAME=otelcol-sumo-linux_arm64
opentelemetry-collector-builder \
--config .otelcol-builder.yaml \
--output-path ./cmd \
--name otelcol-sumo-linux_arm64
2021-05-24T16:32:11.963+0200 INFO cmd/root.go:99 OpenTelemetry Collector distribution builder {"version": "dev", "date": "unknown"}
2021-05-24T16:32:11.965+0200 INFO builder/main.go:90 Sources created {"path": "./cmd"}
2021-05-24T16:32:12.066+0200 INFO builder/main.go:126 Getting go modules
2021-05-24T16:32:12.376+0200 INFO builder/main.go:107 Compiling
2021-05-24T16:32:37.326+0200 INFO builder/main.go:113 Compiled {"binary": "./cmd/otelcol-sumo-linux_arm64"}
-
Install Visual Studio 2019 or newer with the
.NET desktop development
workload selected in the installer. -
Open
Developer Command Prompt for VS 2019/2022
. -
Navigate to the
packaging/msi/wix
directory. -
Fetch project dependencies & build the MSI:
msbuild.exe /p:Configuration=Release /p:Platform=x64 -Restore
- The MSI package can be found in the
packaging/msi/wix/bin/x64/en-US
directory.
In order to run tests run make gotest
in root directory of this repository.
This will run tests in every module from this repo by running make test
in its
directory.
This repository contains multiple Go modules with their own dependencies. Some IDEs
(VS Code for example) do not like this kind of setup and demand that you work on each
module in a separate workspace. As of Go 1.19
this can be solved by configuring a single Go workspace covering all the modules.
This can be done by adding a go.work
file to the repository root:
go 1.21
use (
./otelcolbuilder/cmd
./pkg/test
./pkg/exporter/sumologicexporter
./pkg/extension/sumologicextension
./pkg/processor/cascadingfilterprocessor
./pkg/processor/k8sprocessor
./pkg/processor/metricfrequencyprocessor
./pkg/processor/sourceprocessor
./pkg/processor/sumologicschemaprocessor
./pkg/processor/sumologicsyslogprocessor
./pkg/receiver/telegrafreceiver
./pkg/configprovider/globprovider
./pkg/configprovider/opampprovider
./pkg/tools/udpdemux
)
This will also cause Go to generate a go.work.sum
file to match.
To contribute you will need to ensure you have the following setup:
-
working Go environment
-
installed
opentelemetry-collector-builder
opentelemetry-collector-builder
can be installed using following command:make -C otelcolbuilder install-builder
Which will by default install the builder binary in
${HOME}/bin/opentelemetry-collector-builder
. You can customize it by providing theBUILDER_BIN_PATH
argument.make -C otelcolbuilder install-builder \ BUILDER_BIN_PATH=/custom/dir/bin/opentelemetry-collector-builder
We use Towncrier for changelog management. We keep the changelog entries for currently unreleased changed in the [.changelog] directory. The contents of this directory are consumed when the changelog is updated prior to a release.
Towncrier is written in Python and can be installed with pip.
Prerequisites:
make install-towncrier
If you want to add a changelog entry for your PR, run:
make add-changelog-entry
You can also just create the file manually. The filename format is <PR NUMBER>.<CHANGE TYPE>(.<FRAGMENT NUMBER>).txt
, and the content is
the entry text.
Add a skip-changelog
label to your pull request in GitHub.
Apart from Towncrier, you'll also need Prettier for this.
Prerequisites:
make install-prettier
After you have Towncrier and Prettier available in your console, run:
make update-changelog VERSION=x.x.x-sumo-x
Run make add-changelog-entry
again. Another change file will be created.
Just add an entry with the same text for each PR, they will be grouped together.