diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000000..b36c1399ce --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,15 @@ +version: 2 +updates: + - package-ecosystem: "cargo" + directory: "/" + schedule: + interval: "monthly" + open-pull-requests-limit: 10 + - package-ecosystem: "docker" + directory: "/" + schedule: + interval: "monthly" + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "monthly" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c57c99b96b..674fcffb53 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,7 +21,7 @@ jobs: sudo rm -rf /usr/local/lib/android sudo rm -rf /usr/share/dotnet df -h - - uses: actions/checkout@v1 + - uses: actions/checkout@v4 with: submodules: true - uses: actions-rs/toolchain@v1 @@ -29,13 +29,13 @@ jobs: toolchain: ${{ matrix.rust }} components: rustfmt profile: minimal - - uses: arduino/setup-protoc@v1 + - uses: arduino/setup-protoc@v3 - name: Test run: ./scripts/test.sh lint: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v4 with: submodules: true - uses: actions-rs/toolchain@v1 @@ -43,7 +43,7 @@ jobs: toolchain: stable components: rustfmt profile: minimal - - uses: arduino/setup-protoc@v1 + - uses: arduino/setup-protoc@v3 - uses: actions-rs/cargo@v1 with: command: fmt @@ -56,7 +56,7 @@ jobs: example: [opentelemetry, opentelemetry-sdk] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - uses: actions-rs/toolchain@v1 with: toolchain: nightly-2024-02-07 @@ -73,7 +73,7 @@ jobs: example: [opentelemetry-otlp/examples/basic-otlp] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v4 with: submodules: true - uses: actions-rs/toolchain@v1 @@ -81,7 +81,7 @@ jobs: toolchain: stable components: rustfmt profile: minimal - - uses: arduino/setup-protoc@v1 + - uses: arduino/setup-protoc@v3 - name: Build run: | cd ${{ matrix.example }} @@ -89,7 +89,7 @@ jobs: msrv: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v4 with: submodules: true - uses: actions-rs/toolchain@v1 @@ -108,7 +108,7 @@ jobs: runs-on: ubuntu-latest continue-on-error: true # Prevent sudden announcement of a new advisory from failing ci steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - uses: EmbarkStudios/cargo-deny-action@v1 with: command: check advisories @@ -116,13 +116,13 @@ jobs: continue-on-error: true runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - uses: actions-rs/toolchain@v1 with: toolchain: nightly components: rustfmt override: true - - uses: arduino/setup-protoc@v1 + - uses: arduino/setup-protoc@v3 - name: doc run: cargo doc --no-deps --all-features env: @@ -132,7 +132,7 @@ jobs: continue-on-error: true runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: submodules: true - uses: actions-rs/toolchain@v1 @@ -140,7 +140,7 @@ jobs: toolchain: stable components: rustfmt,llvm-tools-preview override: true - - uses: arduino/setup-protoc@v1 + - uses: arduino/setup-protoc@v3 - name: cargo install cargo-llvm-cov uses: taiki-e/install-action@cargo-llvm-cov - name: cargo generate-lockfile diff --git a/.github/workflows/integration_tests.yml b/.github/workflows/integration_tests.yml index aa6bd706de..e68c278103 100644 --- a/.github/workflows/integration_tests.yml +++ b/.github/workflows/integration_tests.yml @@ -17,7 +17,7 @@ jobs: sudo rm -rf /usr/local/lib/android sudo rm -rf /usr/share/dotnet df -h - - uses: actions/checkout@v1 + - uses: actions/checkout@v4 with: submodules: true - uses: actions-rs/toolchain@v1 @@ -25,6 +25,6 @@ jobs: toolchain: stable components: rustfmt profile: minimal - - uses: arduino/setup-protoc@v1 + - uses: arduino/setup-protoc@v3 - name: Run integration tests using docker compose run: ./scripts/integration_tests.sh diff --git a/.github/workflows/markdown-link-check.yml b/.github/workflows/markdown-link-check.yml new file mode 100644 index 0000000000..53d7847108 --- /dev/null +++ b/.github/workflows/markdown-link-check.yml @@ -0,0 +1,25 @@ +name: Markdown link check + +on: + pull_request: + push: + branches: + - main + paths: + - '**/*.md' + +jobs: + markdown-link-check: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Install markdown-link-check + run: npm install -g markdown-link-check + + - name: Run markdown-link-check + run: | + find . -type f \ + -name '*.md' \ + -not -path '**/CHANGELOG.md' \ + | xargs ./scripts/markdown-link-check-with-retry.sh diff --git a/opentelemetry-jaeger/README.md b/opentelemetry-jaeger/README.md index d14539b803..df622a08f5 100644 --- a/opentelemetry-jaeger/README.md +++ b/opentelemetry-jaeger/README.md @@ -108,7 +108,7 @@ opentelemetry-jaeger = { version = "..", features = ["isahc_collector_client"] } Then you can use the [`with_collector_endpoint`] method to specify the endpoint: -[`with_collector_endpoint`]: https://docs.rs/opentelemetry-jaeger/latest/opentelemetry_jaeger/struct.PipelineBuilder.html#method.with_collector_endpoint +[`with_collector_endpoint`]: https://docs.rs/opentelemetry-jaeger/latest/opentelemetry_jaeger/config/collector/struct.CollectorPipeline.html#method.with_endpoint ```rust // Note that this requires one of the following features enabled so that there is a default http client implementation @@ -143,10 +143,11 @@ fn main() -> Result<(), Box> { ## Kitchen Sink Full Configuration -[Example]((https://docs.rs/opentelemetry-jaeger/latest/opentelemetry_jaeger/#kitchen-sink-full-configuration)) showing how to override all configuration options. See the -[`PipelineBuilder`] docs for details of each option. +[`Example`] showing how to override all configuration options. See the +[`AgentPipeline`] docs for details of each option. -[`PipelineBuilder`]: https://docs.rs/opentelemetry-jaeger/latest/opentelemetry_jaeger/struct.PipelineBuilder.html +[`Example`]: https://docs.rs/opentelemetry-jaeger/latest/opentelemetry_jaeger/#kitchen-sink-full-configuration +[`AgentPipeline`]: https://docs.rs/opentelemetry-jaeger/latest/opentelemetry_jaeger/config/agent/struct.AgentPipeline.html ## Supported Rust Versions diff --git a/opentelemetry-sdk/README.md b/opentelemetry-sdk/README.md index c75e1ab2a4..37bd85b7db 100644 --- a/opentelemetry-sdk/README.md +++ b/opentelemetry-sdk/README.md @@ -34,3 +34,8 @@ From the root directory, run the following command: ```sh cargo bench ``` + +## Supported Rust Versions +OpenTelemetry is built against the latest stable release. The minimum supported version is 1.64. The current OpenTelemetry version is not guaranteed to build on Rust versions earlier than the minimum supported version. + +The current stable Rust compiler and the three most recent minor versions before it will always be supported. For example, if the current stable compiler version is 1.64, the minimum supported version will not be increased past 1.46, three minor versions prior. Increasing the minimum supported compiler version is not considered a semver breaking change as long as doing so complies with this policy. diff --git a/opentelemetry-zipkin/Cargo.toml b/opentelemetry-zipkin/Cargo.toml index 3e7b0d5c2f..a78d21b42f 100644 --- a/opentelemetry-zipkin/Cargo.toml +++ b/opentelemetry-zipkin/Cargo.toml @@ -34,7 +34,7 @@ opentelemetry-http = { version = "0.11", path = "../opentelemetry-http" } opentelemetry-semantic-conventions = { version = "0.14", path = "../opentelemetry-semantic-conventions" } serde_json = { workspace = true } serde = { workspace = true, features = ["derive"] } -typed-builder = "0.12" +typed-builder = "0.18" http = { workspace = true } reqwest = { workspace = true, optional = true} thiserror = { workspace = true } diff --git a/opentelemetry-zipkin/README.md b/opentelemetry-zipkin/README.md index decfa89fa7..8dfca41f52 100644 --- a/opentelemetry-zipkin/README.md +++ b/opentelemetry-zipkin/README.md @@ -99,7 +99,7 @@ available so be sure to match them appropriately. [Example](https://docs.rs/opentelemetry-zipkin/latest/opentelemetry_zipkin/#kitchen-sink-full-configuration) showing how to override all configuration options. See the [`ZipkinPipelineBuilder`] docs for details of each option. -[`ZipkinPipelineBuilder`]: struct.ZipkinPipelineBuilder.html +[`ZipkinPipelineBuilder`]: https://docs.rs/opentelemetry-zipkin/latest/opentelemetry_zipkin/struct.ZipkinPipelineBuilder.html ## Supported Rust Versions diff --git a/opentelemetry/README.md b/opentelemetry/README.md index f83a6a1ef9..3263fbe098 100644 --- a/opentelemetry/README.md +++ b/opentelemetry/README.md @@ -71,7 +71,7 @@ In particular, the following crates are likely to be of interest: - [`opentelemetry-contrib`] provides additional exporters and propagators that are experimental. - [`opentelemetry-datadog`] provides additional exporters to [`Datadog`]. -- [`opentelemetry-dynatrace`] *Deprecated, last release 0.4.0* provides additional exporters to [`Dynatrace`]. See [README](opentelemetry-dynatrace/README.md) +- [`opentelemetry-dynatrace`] *Deprecated, last release 0.4.0* provides additional exporters to [`Dynatrace`]. See [README][`opentelemetry-dynatrace-readme`] - [`opentelemetry-http`] provides an interface for injecting and extracting trace information from [`http`] headers. - [`opentelemetry-jaeger`] provides a pipeline and exporter for sending trace @@ -119,6 +119,7 @@ above, please let us know! We'd love to add your project to the list! [`Dynatrace`]: https://www.dynatrace.com [`opentelemetry-datadog`]: https://crates.io/crates/opentelemetry-datadog [`opentelemetry-dynatrace`]: https://crates.io/crates/opentelemetry-dynatrace +[`opentelemetry-dynatrace-readme`]: https://github.com/open-telemetry/opentelemetry-rust-contrib/blob/main/opentelemetry-dynatrace/README.md [`opentelemetry-semantic-conventions`]: https://crates.io/crates/opentelemetry-semantic-conventions [`http`]: https://crates.io/crates/http @@ -148,4 +149,4 @@ this policy. ## Contributing -See the [contributing file](CONTRIBUTING.md). +See the [contributing file](../CONTRIBUTING.md). diff --git a/scripts/markdown-link-check-config.json b/scripts/markdown-link-check-config.json new file mode 100644 index 0000000000..e2888676de --- /dev/null +++ b/scripts/markdown-link-check-config.json @@ -0,0 +1,10 @@ +{ +"httpHeaders": [ + { + "urls": ["https://crates.io"], + "headers": { + "Accept": "text/html" + } + } + ] +} diff --git a/scripts/markdown-link-check-with-retry.sh b/scripts/markdown-link-check-with-retry.sh new file mode 100755 index 0000000000..109146abfe --- /dev/null +++ b/scripts/markdown-link-check-with-retry.sh @@ -0,0 +1,17 @@ +#!/bin/bash -e + +# this script helps to reduce sporadic link check failures by retrying at a file-by-file level + +retry_count=3 + +for file in "$@"; do + for i in $(seq 1 $retry_count); do + if markdown-link-check --config "$(dirname "$0")/markdown-link-check-config.json" \ + "$file"; then + break + elif [[ $i -eq $retry_count ]]; then + exit 1 + fi + sleep 5 + done +done