Add a convenient Bash script for installation (#1243)
This commit is contained in:
parent
5c6974cbbe
commit
a5fce34828
|
|
@ -11,15 +11,18 @@ HKLM
|
||||||
LINQ
|
LINQ
|
||||||
metricsexporter
|
metricsexporter
|
||||||
mkdir
|
mkdir
|
||||||
|
mktemp
|
||||||
MSMQ
|
MSMQ
|
||||||
Npgsql
|
Npgsql
|
||||||
omnisharp
|
omnisharp
|
||||||
OTEL_DOTNET_AUTO_FLUSH_ON_UNHANDLEDEXCEPTION
|
OTEL_DOTNET_AUTO_FLUSH_ON_UNHANDLEDEXCEPTION
|
||||||
OWIN
|
OWIN
|
||||||
|
pipefail
|
||||||
proto
|
proto
|
||||||
protobuf
|
protobuf
|
||||||
protos
|
protos
|
||||||
Serilog
|
Serilog
|
||||||
|
TMPDIR
|
||||||
tracesexporter
|
tracesexporter
|
||||||
unencrypted
|
unencrypted
|
||||||
UNENCRYPTEDSUPPORT
|
UNENCRYPTEDSUPPORT
|
||||||
|
|
|
||||||
|
|
@ -69,3 +69,34 @@ jobs:
|
||||||
path: bin/tracer-home
|
path: bin/tracer-home
|
||||||
if: (${{ job.status }} != 'cancelled')
|
if: (${{ job.status }} != 'cancelled')
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
|
|
||||||
|
install-script:
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- machine: windows-2022
|
||||||
|
distribution: windows
|
||||||
|
- machine: ubuntu-20.04
|
||||||
|
distribution: linux-glibc
|
||||||
|
- machine: ubuntu-20.04
|
||||||
|
distribution: linux-musl
|
||||||
|
- machine: macos-11
|
||||||
|
distribution: macos
|
||||||
|
runs-on: ${{ matrix.machine }}
|
||||||
|
steps:
|
||||||
|
- name: Run convenient installation Bash script
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
set -o pipefail
|
||||||
|
curl -sSfL https://raw.githubusercontent.com/${{ github.repository }}/${{ github.sha }}/download.sh |
|
||||||
|
DISTRIBUTION=${{ matrix.distribution }} bash -s
|
||||||
|
- name: Test if ./otel-dotnet-auto contains any files
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
if [ -z "$(ls -A ./otel-dotnet-auto)" ]; then
|
||||||
|
echo "Empty"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo "otel-dotnet-auto is installed"
|
||||||
|
fi
|
||||||
|
|
|
||||||
|
|
@ -301,3 +301,6 @@ src/OpenTelemetry.AutoInstrumentation.Native/cmake_install.cmake
|
||||||
|
|
||||||
# ignore verify .received files
|
# ignore verify .received files
|
||||||
*.received.*
|
*.received.*
|
||||||
|
|
||||||
|
# install.sh downloaded artifacts
|
||||||
|
/otel-dotnet-auto/
|
||||||
|
|
|
||||||
|
|
@ -92,7 +92,23 @@ See [config.md#instrumented-libraries-and-frameworks](config.md#instrumented-lib
|
||||||
Download and extract the appropriate binaries from
|
Download and extract the appropriate binaries from
|
||||||
[the latest release](https://github.com/open-telemetry/opentelemetry-dotnet-instrumentation/releases/latest).
|
[the latest release](https://github.com/open-telemetry/opentelemetry-dotnet-instrumentation/releases/latest).
|
||||||
|
|
||||||
> The path where you put the binaries is referenced as `%InstallationLocation%`
|
> The path where you put the binaries is referenced as `$INSTALL_DIR`
|
||||||
|
|
||||||
|
You can also use the [download.sh](../download.sh) script with the following parameters:
|
||||||
|
|
||||||
|
| Parameter | Description | Required | Default value |
|
||||||
|
|----------------|-------------------------------------------------------------------|----------|-----------------------------------------------------------------------------------|
|
||||||
|
| `DISTRIBUTION` | Possible values: `linux-glibc`, `linux-musl`, `macos`, `windows`. | Yes | |
|
||||||
|
| `INSTALL_DIR` | Location where binaries are to be installed | No | `./otel-dotnet-auto` |
|
||||||
|
| `RELEASES_URL` | GitHub releases URL | No | `https://github.com/open-telemetry/opentelemetry-dotnet-instrumentation/releases` |
|
||||||
|
| `TMPDIR` | Temporary directory used when downloading the files | No | `$(mktemp -d)` |
|
||||||
|
| `VERSION` | Version to download | No | `v0.3.1-beta.1` |
|
||||||
|
|
||||||
|
```sh
|
||||||
|
( set -o pipefail
|
||||||
|
curl -sSfL https://raw.githubusercontent.com/open-telemetry/opentelemetry-dotnet-instrumentation/main/download.sh |
|
||||||
|
VERSION=v0.3.1-beta.1 DISTRIBUTION=linux-glibc bash -s )
|
||||||
|
```
|
||||||
|
|
||||||
### Instrument a .NET application
|
### Instrument a .NET application
|
||||||
|
|
||||||
|
|
@ -104,32 +120,32 @@ COR_ENABLE_PROFILING=1
|
||||||
COR_PROFILER={918728DD-259F-4A6A-AC2B-B85E1B658318}
|
COR_PROFILER={918728DD-259F-4A6A-AC2B-B85E1B658318}
|
||||||
CORECLR_ENABLE_PROFILING=1
|
CORECLR_ENABLE_PROFILING=1
|
||||||
CORECLR_PROFILER={918728DD-259F-4A6A-AC2B-B85E1B658318}
|
CORECLR_PROFILER={918728DD-259F-4A6A-AC2B-B85E1B658318}
|
||||||
DOTNET_ADDITIONAL_DEPS=%InstallationLocation%/AdditionalDeps
|
DOTNET_ADDITIONAL_DEPS=$INSTALL_DIR/AdditionalDeps
|
||||||
DOTNET_SHARED_STORE=%InstallationLocation%/store
|
DOTNET_SHARED_STORE=$INSTALL_DIR/store
|
||||||
DOTNET_STARTUP_HOOKS=%InstallationLocation%/netcoreapp3.1/OpenTelemetry.AutoInstrumentation.StartupHook.dll
|
DOTNET_STARTUP_HOOKS=$INSTALL_DIR/netcoreapp3.1/OpenTelemetry.AutoInstrumentation.StartupHook.dll
|
||||||
OTEL_DOTNET_AUTO_HOME=%InstallationLocation%
|
OTEL_DOTNET_AUTO_HOME=$INSTALL_DIR
|
||||||
OTEL_DOTNET_AUTO_INTEGRATIONS_FILE=%InstallationLocation%/integrations.json
|
OTEL_DOTNET_AUTO_INTEGRATIONS_FILE=$INSTALL_DIR/integrations.json
|
||||||
```
|
```
|
||||||
|
|
||||||
On **Windows** you need to additionally set:
|
On **Windows** you need to additionally set:
|
||||||
|
|
||||||
```env
|
```env
|
||||||
COR_PROFILER_PATH_32=%InstallationLocation%/win-x86/OpenTelemetry.AutoInstrumentation.Native.dll
|
COR_PROFILER_PATH_32=$INSTALL_DIR/win-x86/OpenTelemetry.AutoInstrumentation.Native.dll
|
||||||
COR_PROFILER_PATH_64=%InstallationLocation%/win-x64/OpenTelemetry.AutoInstrumentation.Native.dll
|
COR_PROFILER_PATH_64=$INSTALL_DIR/win-x64/OpenTelemetry.AutoInstrumentation.Native.dll
|
||||||
CORECLR_PROFILER_PATH_32=%InstallationLocation%/win-x86/OpenTelemetry.AutoInstrumentation.Native.dll
|
CORECLR_PROFILER_PATH_32=$INSTALL_DIR/win-x86/OpenTelemetry.AutoInstrumentation.Native.dll
|
||||||
CORECLR_PROFILER_PATH_64=%InstallationLocation%/win-x64/OpenTelemetry.AutoInstrumentation.Native.dll
|
CORECLR_PROFILER_PATH_64=$INSTALL_DIR/win-x64/OpenTelemetry.AutoInstrumentation.Native.dll
|
||||||
```
|
```
|
||||||
|
|
||||||
On **Linux** you need to additionally set:
|
On **Linux** you need to additionally set:
|
||||||
|
|
||||||
```env
|
```env
|
||||||
CORECLR_PROFILER_PATH=%InstallationLocation%/OpenTelemetry.AutoInstrumentation.Native.so
|
CORECLR_PROFILER_PATH=$INSTALL_DIR/OpenTelemetry.AutoInstrumentation.Native.so
|
||||||
```
|
```
|
||||||
|
|
||||||
On **macOS** you need to additionally set:
|
On **macOS** you need to additionally set:
|
||||||
|
|
||||||
```env
|
```env
|
||||||
CORECLR_PROFILER_PATH=%InstallationLocation%/OpenTelemetry.AutoInstrumentation.Native.dylib
|
CORECLR_PROFILER_PATH=$INSTALL_DIR/OpenTelemetry.AutoInstrumentation.Native.dylib
|
||||||
```
|
```
|
||||||
|
|
||||||
Configure application's resources. For example:
|
Configure application's resources. For example:
|
||||||
|
|
|
||||||
|
|
@ -197,9 +197,9 @@ for more information.
|
||||||
|-|-|-|-|
|
|-|-|-|-|
|
||||||
| `COR_ENABLE_PROFILING` | `CORECLR_ENABLE_PROFILING` | Enables the profiler. | `1` |
|
| `COR_ENABLE_PROFILING` | `CORECLR_ENABLE_PROFILING` | Enables the profiler. | `1` |
|
||||||
| `COR_PROFILER` | `CORECLR_PROFILER` | CLSID of the profiler. | `{918728DD-259F-4A6A-AC2B-B85E1B658318}` |
|
| `COR_PROFILER` | `CORECLR_PROFILER` | CLSID of the profiler. | `{918728DD-259F-4A6A-AC2B-B85E1B658318}` |
|
||||||
| `COR_PROFILER_PATH` | `CORECLR_PROFILER_PATH` | Path to the profiler. | `%InstallationLocation%/OpenTelemetry.AutoInstrumentation.Native.dll` for Windows, `%InstallationLocation%/OpenTelemetry.AutoInstrumentation.Native.so` for Linux, `%InstallationLocation%/OpenTelemetry.AutoInstrumentation.Native.dylib` for macOS |
|
| `COR_PROFILER_PATH` | `CORECLR_PROFILER_PATH` | Path to the profiler. | `$INSTALL_DIR/OpenTelemetry.AutoInstrumentation.Native.dll` for Windows, `$INSTALL_DIR/OpenTelemetry.AutoInstrumentation.Native.so` for Linux, `$INSTALL_DIR/OpenTelemetry.AutoInstrumentation.Native.dylib` for macOS |
|
||||||
| `COR_PROFILER_PATH_32` | `CORECLR_PROFILER_PATH_32` | Path to the 32-bit profiler. Bitness-specific paths take precedence over generic paths. | `%InstallationLocation%/win-x86/OpenTelemetry.AutoInstrumentation.Native.dll` for Windows |
|
| `COR_PROFILER_PATH_32` | `CORECLR_PROFILER_PATH_32` | Path to the 32-bit profiler. Bitness-specific paths take precedence over generic paths. | `$INSTALL_DIR/win-x86/OpenTelemetry.AutoInstrumentation.Native.dll` for Windows |
|
||||||
| `COR_PROFILER_PATH_64` | `CORECLR_PROFILER_PATH_64` | Path to the 64-bit profiler. Bitness-specific paths take precedence over generic paths. | `%InstallationLocation%/win-x64/OpenTelemetry.AutoInstrumentation.Native.dll` for Windows |
|
| `COR_PROFILER_PATH_64` | `CORECLR_PROFILER_PATH_64` | Path to the 64-bit profiler. Bitness-specific paths take precedence over generic paths. | `$INSTALL_DIR/win-x64/OpenTelemetry.AutoInstrumentation.Native.dll` for Windows |
|
||||||
|
|
||||||
## .NET Runtime
|
## .NET Runtime
|
||||||
|
|
||||||
|
|
@ -212,7 +212,7 @@ are used to mitigate assembly version conflicts in .NET Core.
|
||||||
|
|
||||||
| Environment variable | Required value |
|
| Environment variable | Required value |
|
||||||
|-|-|
|
|-|-|
|
||||||
| `DOTNET_STARTUP_HOOKS` | `%InstallationLocation%/netcoreapp3.1/OpenTelemetry.AutoInstrumentation.StartupHook.dll` |
|
| `DOTNET_STARTUP_HOOKS` | `$INSTALL_DIR/netcoreapp3.1/OpenTelemetry.AutoInstrumentation.StartupHook.dll` |
|
||||||
| `DOTNET_ADDITIONAL_DEPS` | `%InstallationLocation%/AdditionalDeps` |
|
| `DOTNET_ADDITIONAL_DEPS` | `$INSTALL_DIR/AdditionalDeps` |
|
||||||
| `DOTNET_SHARED_STORE` | `%InstallationLocation%/store` |
|
| `DOTNET_SHARED_STORE` | `$INSTALL_DIR/store` |
|
||||||
| `ASPNETCORE_HOSTINGSTARTUPASSEMBLIES` | `OpenTelemetry.AutoInstrumentation.AspNetCoreBootstrapper` |
|
| `ASPNETCORE_HOSTINGSTARTUPASSEMBLIES` | `OpenTelemetry.AutoInstrumentation.AspNetCoreBootstrapper` |
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,8 @@
|
||||||
|
|
||||||
1. Update the version in the following files:
|
1. Update the version in the following files:
|
||||||
|
|
||||||
|
- [`download.sh`](../download.sh)
|
||||||
|
- [`docs/README.md`](./README.md)
|
||||||
- [`src/OpenTelemetry.AutoInstrumentation.Loader/OpenTelemetry.AutoInstrumentation.Loader.csproj`](../src/OpenTelemetry.AutoInstrumentation.Loader/OpenTelemetry.AutoInstrumentation.Loader.csproj)
|
- [`src/OpenTelemetry.AutoInstrumentation.Loader/OpenTelemetry.AutoInstrumentation.Loader.csproj`](../src/OpenTelemetry.AutoInstrumentation.Loader/OpenTelemetry.AutoInstrumentation.Loader.csproj)
|
||||||
- [`src/OpenTelemetry.AutoInstrumentation.Native/CMakeLists.txt`](../src/OpenTelemetry.AutoInstrumentation.Native/CMakeLists.txt)
|
- [`src/OpenTelemetry.AutoInstrumentation.Native/CMakeLists.txt`](../src/OpenTelemetry.AutoInstrumentation.Native/CMakeLists.txt)
|
||||||
- [`src/OpenTelemetry.AutoInstrumentation.Native/Resource.rc`](../src/OpenTelemetry.AutoInstrumentation.Native/Resource.rc)
|
- [`src/OpenTelemetry.AutoInstrumentation.Native/Resource.rc`](../src/OpenTelemetry.AutoInstrumentation.Native/Resource.rc)
|
||||||
|
|
@ -9,9 +11,6 @@
|
||||||
- [`src/OpenTelemetry.AutoInstrumentation.Native/version.h`](../src/OpenTelemetry.AutoInstrumentation.Native/version.h)
|
- [`src/OpenTelemetry.AutoInstrumentation.Native/version.h`](../src/OpenTelemetry.AutoInstrumentation.Native/version.h)
|
||||||
- [`src/OpenTelemetry.AutoInstrumentation/OpenTelemetry.AutoInstrumentation.csproj`](../src/OpenTelemetry.AutoInstrumentation/OpenTelemetry.AutoInstrumentation.csproj)
|
- [`src/OpenTelemetry.AutoInstrumentation/OpenTelemetry.AutoInstrumentation.csproj`](../src/OpenTelemetry.AutoInstrumentation/OpenTelemetry.AutoInstrumentation.csproj)
|
||||||
- ['src/OpenTelemetry.AutoInstrumentation\Constants.cs'](../src/OpenTelemetry.AutoInstrumentation\Constants.cs)
|
- ['src/OpenTelemetry.AutoInstrumentation\Constants.cs'](../src/OpenTelemetry.AutoInstrumentation\Constants.cs)
|
||||||
(Version tag)
|
|
||||||
|
|
||||||
1. Update the documentation link on the [README.md](./README.md) file.
|
|
||||||
|
|
||||||
1. Update the [CHANGELOG.md](../CHANGELOG.md) with the new release.
|
1. Update the [CHANGELOG.md](../CHANGELOG.md) with the new release.
|
||||||
|
|
||||||
|
|
@ -43,4 +42,6 @@
|
||||||
- Use the [CHANGELOG.md](../CHANGELOG.md) content in the description.
|
- Use the [CHANGELOG.md](../CHANGELOG.md) content in the description.
|
||||||
- Add the artifacts from [the `release` GitHub workflow](https://github.com/open-telemetry/opentelemetry-dotnet-instrumentation/actions/workflows/release.yml).
|
- Add the artifacts from [the `release` GitHub workflow](https://github.com/open-telemetry/opentelemetry-dotnet-instrumentation/actions/workflows/release.yml).
|
||||||
|
|
||||||
|
1. Update version in `install-script` job in [`.github/workflows/ci.yml`](../.github/workflows/ci.yml).
|
||||||
|
|
||||||
1. Update version under [OpenTelemetry Operator](https://github.com/open-telemetry/opentelemetry-operator/blob/main/autoinstrumentation/dotnet/version.txt).
|
1. Update version under [OpenTelemetry Operator](https://github.com/open-telemetry/opentelemetry-operator/blob/main/autoinstrumentation/dotnet/version.txt).
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,28 @@
|
||||||
|
#!/bin/sh
|
||||||
|
set -e
|
||||||
|
|
||||||
|
test -z "$DISTRIBUTION" && {
|
||||||
|
echo "Please specify the distribution by setting the DISTRIBUTION env var." >&2
|
||||||
|
echo "Supported values:" >&2
|
||||||
|
echo " linux-glibc" >&2
|
||||||
|
echo " linux-musl" >&2
|
||||||
|
echo " macos" >&2
|
||||||
|
echo " windows" >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
test -z "$INSTALL_DIR" && INSTALL_DIR="./otel-dotnet-auto"
|
||||||
|
test -z "$RELEASES_URL" && RELEASES_URL="https://github.com/open-telemetry/opentelemetry-dotnet-instrumentation/releases"
|
||||||
|
test -z "$TMPDIR" && TMPDIR="$(mktemp -d)"
|
||||||
|
test -z "$VERSION" && VERSION="v0.3.1-beta.1"
|
||||||
|
|
||||||
|
ARCHIVE="opentelemetry-dotnet-instrumentation-$DISTRIBUTION.zip"
|
||||||
|
TMPFILE="$TMPDIR/$ARCHIVE"
|
||||||
|
|
||||||
|
(
|
||||||
|
cd "$TMPDIR"
|
||||||
|
echo "Downloading $VERSION for $DISTRIBUTION..."
|
||||||
|
curl -sSfLo "$TMPFILE" "$RELEASES_URL/download/$VERSION/$ARCHIVE"
|
||||||
|
)
|
||||||
|
|
||||||
|
rm -rf "$INSTALL_DIR"
|
||||||
|
unzip -q "$TMPFILE" -d "$INSTALL_DIR"
|
||||||
Loading…
Reference in New Issue