|
1 | 1 | #!/bin/bash |
2 | 2 | set -e |
3 | 3 |
|
| 4 | +GO='' |
| 5 | + |
| 6 | +while getopts d:g: flag |
| 7 | +do |
| 8 | + case "${flag}" in |
| 9 | + g) GO=${OPTARG};; |
| 10 | + *) exit 1;; |
| 11 | + esac |
| 12 | +done |
4 | 13 |
|
5 | | -# Function to validate semantic version and strip leading 'v' |
6 | | -validate_and_strip_version() { |
7 | | - local var_name=$1 |
8 | | - local version=${!var_name} |
9 | | - # Strip leading 'v' if present |
10 | | - version=${version#v} |
11 | | - if [[ ! $version =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then |
12 | | - echo "Invalid version: $version. Must be a semantic version (e.g., 1.2.3)." |
13 | | - exit 1 |
14 | | - fi |
15 | | - eval "$var_name='$version'" |
16 | | -} |
17 | | - |
18 | | - |
19 | | -# Get the most recent release tag from the open-telemetry/opentelemetry-collector-contrib repo |
20 | | -get_latest_otel_release_tag() { |
21 | | - local repo="open-telemetry/opentelemetry-collector-releases" |
22 | | - local latest_tag=$(curl --silent "https://api.github.com/repos/$repo/releases/latest" | jq -r .tag_name) |
23 | | - if [[ -z $latest_tag ]]; then |
24 | | - echo "Failed to fetch the latest release tag from $repo." |
25 | | - exit 1 |
26 | | - fi |
27 | | - |
28 | | - validate_and_strip_version latest_tag |
29 | | - echo "$latest_tag" |
30 | | -} |
31 | | - |
32 | | - |
33 | | -otel_version=$(get_latest_otel_release_tag) |
34 | | -manifest_url="https://raw.githubusercontent.com/open-telemetry/opentelemetry-collector-releases/refs/tags/v${otel_version}/distributions/otelcol/manifest.yaml" |
35 | | -manifest_content=$(curl --silent "$manifest_url") |
36 | | - |
37 | | -# Extract the distribution version from the manifest content |
38 | | -next_beta_core=$(echo "$manifest_content" | awk '/^.*go\.opentelemetry\.io\/collector\/.* v0/ {print $4; exit}') |
39 | | -next_beta_contrib=$(echo "$manifest_content" | awk '/^.*github\.com\/open-telemetry\/opentelemetry-collector-contrib\/.* v0/ {print $4; exit}') |
40 | | -next_stable=$(echo "$manifest_content" | awk '/^.*go\.opentelemetry\.io\/collector\/.* v1/ {print $4; exit}') |
41 | | - |
42 | | -validate_and_strip_version next_beta_core |
43 | | -validate_and_strip_version next_beta_contrib |
44 | | -validate_and_strip_version next_stable |
45 | | - |
46 | | -echo "Next beta core version: $next_beta_core" |
47 | | -echo "Next beta contrib version: $next_beta_contrib" |
48 | | -echo "Next stable version: $next_stable" |
49 | | - |
50 | | -# Get the current versions from the manifest.yaml files |
51 | | -current_beta_core=$(awk '/^.*go\.opentelemetry\.io\/collector\/.* v0/ {print $4; exit}' distributions/nrdot-collector-host/manifest.yaml) |
52 | | -current_beta_contrib=$(awk '/^.*github\.com\/open-telemetry\/opentelemetry-collector-contrib\/.* v0/ {print $4; exit}' distributions/nrdot-collector-host/manifest.yaml) |
53 | | -current_stable=$(awk '/^.*go\.opentelemetry\.io\/collector\/.* v1/ {print $4; exit}' distributions/nrdot-collector-host/manifest.yaml) |
| 14 | +[[ -n "$GO" ]] || GO='go' |
54 | 15 |
|
55 | | -validate_and_strip_version current_beta_core |
56 | | -validate_and_strip_version current_beta_contrib |
57 | | -validate_and_strip_version current_stable |
| 16 | +# Store the current directory |
| 17 | +ORIGINAL_DIR=$(pwd) |
58 | 18 |
|
59 | | -echo "Current beta core version: $current_beta_core" |
60 | | -echo "Current beta contrib version: $current_beta_contrib" |
61 | | -echo "Current stable version: $current_stable" |
| 19 | +# Change to the CLI tool directory |
| 20 | +cd "$(dirname "$0")/../cmd/nrdot-collector-builder" || exit 1 |
62 | 21 |
|
| 22 | +OUTPUT=$(${GO} run main.go manifest update --json --config "../../distributions/*/manifest.yaml") |
63 | 23 |
|
64 | | -# add escape characters to the current versions to work with sed |
65 | | -escaped_current_beta_core=${current_beta_core//./\\.} |
66 | | -escaped_current_beta_contrib=${current_beta_contrib//./\\.} |
67 | | -escaped_current_stable=${current_stable//./\\.} |
| 24 | +# Return to the original directory |
| 25 | +cd "$ORIGINAL_DIR" || exit 1 |
68 | 26 |
|
69 | 27 | # Determine the OS and set the sed -i command accordingly |
70 | 28 | if [[ "$OSTYPE" == "darwin"* ]]; then |
|
78 | 36 | } |
79 | 37 | fi |
80 | 38 |
|
81 | | -# Update versions in each manifest file |
82 | | -echo "Updating core beta version from $current_beta_core to $next_beta_core," |
83 | | -echo "core stable version from $current_stable to $next_stable," |
84 | | -echo "contrib beta version from $current_beta_contrib to $next_beta_contrib," |
85 | | -for file in ./distributions/*/manifest.yaml; do |
86 | | - if [ -f "$file" ]; then |
87 | | - sed_inplace "s/\(^.*go\.opentelemetry\.io\/collector\/.*\) v$escaped_current_beta_core/\1 v$next_beta_core/" "$file" |
88 | | - sed_inplace "s/\(^.*github\.com\/open-telemetry\/opentelemetry-collector-contrib\/.*\) v$escaped_current_beta_contrib/\1 v$next_beta_contrib/" "$file" |
89 | | - sed_inplace "s/\(^.*go\.opentelemetry\.io\/collector\/.*\) v$escaped_current_stable/\1 v$next_stable/" "$file" |
90 | | - else |
91 | | - echo "File $file does not exist" |
92 | | - fi |
93 | | -done |
94 | | - |
95 | | -# Update Makefile OCB version |
96 | | -sed_inplace "s/OTELCOL_BUILDER_VERSION ?= $escaped_current_beta_core/OTELCOL_BUILDER_VERSION ?= $next_beta_core/" Makefile |
| 39 | +# Extract the current beta core version |
| 40 | +current_beta_core=$(echo "$OUTPUT" | jq -r '.currentVersions.betaCoreVersion') |
| 41 | +current_beta_core=${current_beta_core#v} |
| 42 | +escaped_current_beta_core=${current_beta_core//./\\.} |
| 43 | +next_beta_core=$(echo "$OUTPUT" | jq -r '.nextVersions.betaCoreVersion') |
| 44 | +next_beta_core=${next_beta_core#v} |
| 45 | + |
| 46 | +# If the current beta core version is not equal to the next beta core version, update the Makefile |
| 47 | +if [[ "$current_beta_core" != "$next_beta_core" ]]; then |
| 48 | + echo "Updating Makefile from $current_beta_core to $next_beta_core" |
| 49 | + # Update Makefile OCB version |
| 50 | + sed_inplace "s/OTELCOL_BUILDER_VERSION ?= $escaped_current_beta_core/OTELCOL_BUILDER_VERSION ?= $next_beta_core/" Makefile |
| 51 | +else |
| 52 | + echo "No update needed for the Makefile." |
| 53 | +fi |
0 commit comments