1
1
#! /bin/bash
2
-
2
+ set -e
3
3
# This script takes either current beta version, current stable version, or both,
4
4
# and optionally next beta version and next stable version, and updates the version
5
5
# in the specified files. If next version is not provided, it will infer the next
6
6
# semantic version (e.g. v0.110.0 -> v0.111.0 or v1.16.0 -> v1.17.0) based on the
7
7
# current version(s) passed.
8
8
9
+ # List of files to update
10
+ files=(
11
+ " distributions/otelcol-contrib/manifest.yaml"
12
+ " distributions/otelcol/manifest.yaml"
13
+ " distributions/otelcol-k8s/manifest.yaml"
14
+ " distributions/otelcol-otlp/manifest.yaml"
15
+ " Makefile"
16
+ )
17
+
9
18
# Function to display usage
10
19
usage () {
11
- echo " Usage: $0 [--commit] [--pull-request] --current-beta-core <current-beta-core> [--current-beta-contrib <current-beta-contrib>] [--current-stable <current-stable>] [--next-beta-core <next-beta-core>] [--next-beta-contrib <next-beta-contrib>] [--next-stable <next-stable>]"
12
- echo " --current-beta-core: Current beta version of the core component (e.g., v0.110.0)"
13
- echo " --current-beta-contrib: Current beta version of the contrib component (e.g., v0.110.0)"
14
- echo " --current-stable: Current stable version of the core component (e.g., v1.16.0)"
15
- echo " at least one of the above three arguments is required, or there is no version to update."
16
- echo
20
+ echo " Usage: $0 [--commit] [--pull-request] [--next-beta-core <next-beta-core>] [--next-beta-contrib <next-beta-contrib>] [--next-stable <next-stable>]"
17
21
echo " --next-beta-core: Next beta version of the core component (e.g., v0.111.0)"
18
22
echo " --next-beta-contrib: Next beta version of the contrib component (e.g., v0.111.0)"
19
23
echo " --next-stable: Next stable version of the core component (e.g., v1.17.0)"
@@ -38,11 +42,11 @@ validate_and_strip_version() {
38
42
commit_changes=false
39
43
create_pr=false
40
44
# Parse named arguments
45
+ current_beta_core=$( awk ' /^.*go\.opentelemetry\.io\/collector\/.* v0/ {print $4; exit}' distributions/otelcol/manifest.yaml)
46
+ current_beta_contrib=$( awk ' /^.*github\.com\/open-telemetry\/opentelemetry-collector-contrib\/.* v0/ {print $4; exit}' distributions/otelcol-contrib/manifest.yaml)
47
+ current_stable=$( awk ' /^.*go\.opentelemetry\.io\/collector\/.* v1/ {print $4; exit}' distributions/otelcol/manifest.yaml)
41
48
while [[ " $# " -gt 0 ]]; do
42
49
case $1 in
43
- --current-beta-core) current_beta_core=" $2 " ; shift ;;
44
- --current-beta-contrib) current_beta_contrib=" $2 " ; shift ;;
45
- --current-stable) current_stable=" $2 " ; shift ;;
46
50
--next-beta-core) next_beta_core=" $2 " ; shift ;;
47
51
--next-beta-contrib) next_beta_contrib=" $2 " ; shift ;;
48
52
--next-stable) next_stable=" $2 " ; shift ;;
@@ -59,11 +63,6 @@ if [ "$create_pr" = true ] && [ "$commit_changes" = false ]; then
59
63
usage
60
64
fi
61
65
62
- # Check if at least one of the required arguments is provided
63
- if [ -z " $current_beta_core " ] && [ -z " $current_beta_contrib " ] && [ -z " $current_stable " ]; then
64
- usage
65
- fi
66
-
67
66
# Validate and strip versions
68
67
if [ -n " $current_beta_core " ]; then
69
68
validate_and_strip_version current_beta_core
@@ -109,45 +108,27 @@ if [ -n "$current_stable" ] && [ -z "$next_stable" ]; then
109
108
next_stable=$( bump_version " $current_stable " )
110
109
fi
111
110
112
- # List of files to update
113
- files=(
114
- " distributions/otelcol-contrib/manifest.yaml"
115
- " distributions/otelcol/manifest.yaml"
116
- " distributions/otelcol-k8s/manifest.yaml"
117
- " distributions/otelcol-otlp/manifest.yaml"
118
- " Makefile"
119
- )
120
-
111
+ # add escape characters to the current versions to work with sed
112
+ escaped_current_beta_core=${current_beta_core// ./ \\ .}
113
+ escaped_current_beta_contrib=${current_beta_contrib// ./ \\ .}
114
+ escaped_current_stable=${current_stable// ./ \\ .}
121
115
# Update versions in each file
122
116
for file in " ${files[@]} " ; do
123
117
if [ -f " $file " ]; then
124
- temp_file=$( mktemp)
125
- cp " $file " " $temp_file "
126
- line_number=1
127
- while IFS= read -r line; do
128
- if [[ " $line " == * " github.com/open-telemetry/opentelemetry-collector-contrib" * ]]; then
129
- if [ -n " $current_beta_contrib " ]; then
130
- sed -i.bak " ${line_number} s/$current_beta_contrib /$next_beta_contrib /" " $temp_file "
131
- fi
132
- elif [[ " $line " == * " go.opentelemetry.io/collector" * ]]; then
133
- if [ -n " $current_beta_core " ]; then
134
- sed -i.bak " ${line_number} s/$current_beta_core /$next_beta_core /" " $temp_file "
135
- fi
136
- if [ -n " $current_stable " ]; then
137
- sed -i.bak " ${line_number} s/$current_stable /$next_stable /" " $temp_file "
138
- fi
139
- fi
140
- line_number=$(( line_number + 1 ))
141
- done < " $file "
142
- mv " $temp_file " " $file "
143
- rm " ${temp_file} .bak"
118
+ sed -i ' ' " s/\(^.*go\.opentelemetry\.io\/collector\/.*\) v$escaped_current_beta_core /\1 v$next_beta_core /" " $file "
119
+ sed -i ' ' " s/\(^.*github\.com\/open-telemetry\/opentelemetry-collector-contrib\/.*\) v$escaped_current_beta_contrib /\1 v$next_beta_contrib /" " $file "
120
+ sed -i ' ' " s/\(^.*go\.opentelemetry\.io\/collector\/.*\) v$escaped_current_stable /\1 v$next_stable /" " $file "
121
+ sed -i ' ' " s/version: $escaped_current_beta_core /version: $next_beta_core /" " $file "
122
+ sed -i ' ' " s/OTELCOL_BUILDER_VERSION ?= $escaped_current_beta_core /OTELCOL_BUILDER_VERSION ?= $next_beta_core /" Makefile
144
123
else
145
124
echo " File $file does not exist"
146
125
fi
147
126
done
148
127
149
128
echo " Version update completed."
150
129
130
+ make chlog-update VERSION=" v$next_beta_core "
131
+
151
132
# Commit changes and draft PR
152
133
if [ " $commit_changes " = false ] && [ " $create_pr " = false ]; then
153
134
echo " Changes not committed and PR not created."
0 commit comments