5a73c58d2711dfbdfb0401048daca0cc82be67d8
[policy/parent.git] / integration / src / release_scripts / updateRefs.sh
1 #!/bin/bash
2
3 #
4 # ============LICENSE_START================================================
5 # ONAP
6 # =========================================================================
7 # Copyright (C) 2021-2022 Nordix Foundation.
8 # =========================================================================
9 # Licensed under the Apache License, Version 2.0 (the "License");
10 # you may not use this file except in compliance with the License.
11 # You may obtain a copy of the License at
12 #
13 #      http://www.apache.org/licenses/LICENSE-2.0
14 #
15 # Unless required by applicable law or agreed to in writing, software
16 # distributed under the License is distributed on an "AS IS" BASIS,
17 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 # See the License for the specific language governing permissions and
19 # limitations under the License.
20 # ============LICENSE_END==================================================
21 #
22
23 set -e
24
25 SCRIPT_NAME=`basename $0`
26 repo_location="./"
27 release_data_file="./pf_release_data.csv"
28
29 usage()
30 {
31     echo ""
32     echo "$SCRIPT_NAME - updates the inter-repo references in Policy Framework POM files"
33     echo ""
34     echo "       usage:  $SCRIPT_NAME [-options]"
35     echo ""
36     echo "       options"
37     echo "         -h           - this help message"
38     echo "         -d data_file - the policy release data file to use, generated by the 'getReleaseData.sh' script,"
39     echo "                        defaults to '$release_data_file'"
40     echo "         -l location  - the location of the policy framework repos on the file system,"
41     echo "                        defaults to '$repo_location'"
42     echo "         -r repo      - the policy repo to update"
43     echo "         -p           - update policy/parent references"
44     echo "         -c           - update policy/common references"
45     echo "         -m           - update policy/model references"
46     echo "         -o           - update policy/drools-pdp references"
47     echo "         -k           - update docker base images in Dockerfiles"
48     echo "         -s           - update release references to snapshot references,"
49     echo "                        if omitted, snapshot references are updated to release references"
50     echo ""
51     echo " examples:"
52     echo "  $SCRIPT_NAME -pcm -r policy/pap"
53     echo "              update the parent, common, and models references of policy/pap"
54     echo "              to the current released version"
55     echo ""
56     echo "  $SCRIPT_NAME -c -m -s -r policy/api"
57     echo "              update the common and models references of policy/api"
58     echo "              to the current snapshot version"
59     exit 255;
60 }
61
62 update_parent=false
63 update_common=false
64 update_models=false
65 update_drools_pdp=false
66 update_snapshot=false
67 update_docker=false
68
69 while getopts "hd:l:r:pcmoks" opt
70 do
71     case $opt in
72     h)
73         usage
74         ;;
75     d)
76         release_data_file=$OPTARG
77         ;;
78     l)
79         repo_location=$OPTARG
80         ;;
81     r)
82         specified_repo=$OPTARG
83         ;;
84     p)
85         update_parent=true
86         ;;
87     c)
88         update_common=true
89         ;;
90     m)
91         update_models=true
92         ;;
93     o)
94         update_drools_pdp=true
95         ;;
96     k)
97         update_docker=true
98         ;;
99     s)
100         update_snapshot=true
101         ;;
102     \?)
103         usage
104         exit 1
105         ;;
106     esac
107 done
108
109 if [ $OPTIND -eq 1 ]
110 then
111     echo "no arguments were specified"
112     usage
113 fi
114
115 if [[ -z "$repo_location" ]]
116 then
117     echo "policy repo location not specified on -l flag"
118     exit 1
119 fi
120
121 if ! [ -d "$repo_location" ]
122 then
123     echo "policy repo location '$repo_location' not found"
124     exit 1
125 fi
126
127 if [[ -z "$release_data_file" ]]
128 then
129     echo "policy release data file not specified on -d flag"
130     exit 1
131 fi
132
133 if ! [ -f "$release_data_file" ]
134 then
135     echo "policy release data file '$release_data_file' not found"
136     exit 1
137 fi
138
139 if [ -z "$specified_repo" ]
140 then
141     echo "repo not specified on -r flag"
142     exit 1
143 fi
144
145 read parent_repo \
146      parent_latest_released_tag \
147      parent_latest_snapshot_tag \
148      parent_changed_files \
149      parent_docker_images \
150     <<< $( grep policy/parent $release_data_file | tr ',' ' ' )
151
152 read common_repo \
153      common_latest_released_tag \
154      common_latest_snapshot_tag \
155      common_changed_files \
156      common_docker_images \
157     <<< $( grep policy/common $release_data_file | tr ',' ' ' )
158
159 read docker_repo \
160      docker_latest_released_tag \
161      docker_latest_snapshot_tag \
162      docker_changed_files \
163      docker_docker_images \
164     <<< $( grep policy/docker $release_data_file | tr ',' ' ' )
165
166 read models_repo \
167      models_latest_released_tag \
168      models_latest_snapshot_tag \
169      models_changed_files \
170      models_docker_images \
171     <<< $( grep policy/models $release_data_file | tr ',' ' ' )
172
173 read drools_pdp_repo \
174      drools_pdp_latest_released_tag \
175      drools_pdp_latest_snapshot_tag \
176      drools_pdp_changed_files \
177      drools_pdp_docker_images \
178     <<< $( grep policy/drools-pdp $release_data_file | tr ',' ' ' )
179
180 read target_repo \
181          target_latest_released_tag \
182          target_latest_snapshot_tag \
183          target_changed_files \
184          target_docker_images \
185         <<< $( grep $specified_repo $release_data_file | tr ',' ' ' )
186
187 if [ -z "$target_repo" ]
188 then
189     echo "specified repo '$specified_repo' not found in policy release data file '$release_data_file'"
190     exit 1
191 fi
192
193 if [ ! "$specified_repo" = "$target_repo" ]
194 then
195     echo "specified repo '$specified_repo' does not match target repo '$target_repo'"
196     exit 1
197 fi
198
199 if [ "$update_parent" = true ]
200 then
201     if [ "$specified_repo" = "policy/parent" ]
202     then
203         if [ "$update_snapshot" = true ]
204         then
205             echo updating policy parent reference to $parent_latest_snapshot_tag on $repo_location/$target_repo . . .
206             sed -i \
207                 "s/<version.parent.resources>.*<\/version.parent.resources>/<version.parent.resources>$parent_latest_snapshot_tag<\/version.parent.resources>/" \
208                  $repo_location/policy/parent/integration/pom.xml
209             result_code=$?
210         else
211             next_release_version=${parent_latest_snapshot_tag%-*}
212
213             echo updating policy parent reference to $next_release_version on $repo_location/$target_repo . . .
214             echo sed -i \
215                 "s/<version.parent.resources>.*<\/version.parent.resources>/<version.parent.resources>$next_release_version<\/version.parent.resources>/" \
216                  $repo_location/policy/parent/integration/pom.xml
217             result_code=$?
218             result_code=$?
219         fi
220     else
221         if [ "$update_snapshot" = true ]
222         then
223             echo updating policy parent reference to $parent_latest_snapshot_tag on $repo_location/$target_repo . . .
224             updateParentRef.sh \
225                 -f $repo_location/$target_repo/pom.xml \
226                 -g org.onap.policy.parent \
227                 -a integration \
228                 -v $parent_latest_snapshot_tag
229             result_code=$?
230         else
231             echo updating policy parent reference to $parent_latest_released_tag on $repo_location/$target_repo . . .
232             updateParentRef.sh \
233                 -f $repo_location/$target_repo/pom.xml \
234                 -g org.onap.policy.parent \
235                 -a integration \
236                 -v $parent_latest_released_tag
237             result_code=$?
238         fi
239     fi
240     if [[ "$result_code" -eq 0 ]]
241     then
242         echo policy parent reference updated on $repo_location/$target_repo
243     else
244         echo policy parent reference update failed on $repo_location/$target_repo
245         exit 1
246     fi
247 fi
248
249 if [ "$update_common" = true ]
250 then
251     if [ "$update_snapshot" = true ]
252     then
253         echo updating policy common reference to $common_latest_snapshot_tag on $repo_location/$target_repo . . .
254         sed -i \
255             -e "s/<policy.common.version>.*<\/policy.common.version>/<policy.common.version>$common_latest_snapshot_tag<\/policy.common.version>/" \
256             -e "s/<version.policy.common>.*<\/version.policy.common>/<version.policy.common>$common_latest_snapshot_tag<\/version.policy.common>/" \
257             $repo_location/$target_repo/pom.xml
258         result_code=$?
259     else
260         echo updating policy common reference to $common_latest_released_tag on $repo_location/$target_repo . . .
261         sed -i \
262             -e "s/<policy.common.version>.*<\/policy.common.version>/<policy.common.version>$common_latest_released_tag<\/policy.common.version>/" \
263             -e "s/<version.policy.common>.*<\/version.policy.common>/<version.policy.common>$common_latest_released_tag<\/version.policy.common>/" \
264             $repo_location/$target_repo/pom.xml
265         result_code=$?
266     fi
267     if [[ "$result_code" -eq 0 ]]
268     then
269         echo policy common reference updated on $repo_location/$target_repo
270     else
271         echo policy common reference update failed on $repo_location/$target_repo
272         exit 1
273     fi
274 fi
275
276 if [ "$update_models" = true ]
277 then
278     if [ "$update_snapshot" = true ]
279     then
280         echo updating policy models reference to $models_latest_snapshot_tag on $repo_location/$target_repo . . .
281         sed -i \
282             -e "s/<policy.models.version>.*<\/policy.models.version>/<policy.models.version>$models_latest_snapshot_tag<\/policy.models.version>/" \
283             -e "s/<version.policy.models>.*<\/version.policy.models>/<version.policy.models>$models_latest_snapshot_tag<\/version.policy.models>/" \
284             $repo_location/$target_repo/pom.xml
285         result_code=$?
286     else
287         echo updating policy models reference to $models_latest_released_tag on $repo_location/$target_repo . . .
288         sed -i \
289             -e "s/<policy.models.version>.*<\/policy.models.version>/<policy.models.version>$models_latest_released_tag<\/policy.models.version>/" \
290             -e "s/<version.policy.models>.*<\/version.policy.models>/<version.policy.models>$models_latest_released_tag<\/version.policy.models>/" \
291             $repo_location/$target_repo/pom.xml
292         result_code=$?
293     fi
294     if [[ "$result_code" -eq 0 ]]
295     then
296         echo policy models reference updated on $repo_location/$target_repo
297     else
298         echo policy models reference update failed on $repo_location/$target_repo
299         exit 1
300     fi
301 fi
302
303 if [ "$update_drools_pdp" = true ]
304 then
305     if [ "$update_snapshot" = true ]
306     then
307         echo updating policy drools-pdp reference to $drools_pdp_latest_snapshot_tag on $repo_location/$target_repo . . .
308         sed -i \
309             -e "s/<policy.drools-pdp.version>.*<\/policy.drools-pdp.version>/<policy.drools-pdp.version>$drools_pdp_latest_snapshot_tag<\/policy.drools-pdp.version>/" \
310             -e "s/<version.policy.drools-pdp>.*<\/version.policy.drools-pdp>/<version.policy.drools-pdp>$drools_pdp_latest_snapshot_tag<\/version.policy.drools-pdp>/" \
311             $repo_location/$target_repo/pom.xml
312         result_code=$?
313     else
314         echo updating policy drools-pdp reference to $drools_pdp_latest_released_tag on $repo_location/$target_repo . . .
315         sed -i \
316             -e "s/<policy.drools-pdp.version>.*<\/policy.drools-pdp.version>/<policy.drools-pdp.version>$drools_pdp_latest_released_tag<\/policy.drools-pdp.version>/" \
317             -e "s/<version.policy.drools-pdp>.*<\/version.policy.drools-pdp>/<version.policy.drools-pdp>$drools_pdp_latest_released_tag<\/version.policy.drools-pdp>/" \
318             $repo_location/$target_repo/pom.xml
319         result_code=$?
320     fi
321     if [[ "$result_code" -eq 0 ]]
322     then
323         echo policy drools-pdp reference updated on $repo_location/$target_repo
324     else
325         echo policy drools-pdp reference update failed on $repo_location/$target_repo
326         exit 1
327     fi
328 fi
329
330 if [ "$update_docker" = true ] && [ "$target_docker_images" != "" ]
331 then
332     echo updating docker base images to version $docker_latest_released_tag on repo $repo_location/$target_repo
333     find $repo_location/$target_repo \
334         -name '*Docker*' \
335         -exec sed -r -i "s/^(FROM onap\/policy-j[d|r][k|e]-alpine:)2.3.1$/\1$docker_latest_released_tag/" {} \;
336     result_code=$?
337     if [[ "$result_code" -eq 0 ]]
338     then
339         echo docker base images updated on $repo_location/$target_repo
340     else
341         echo docker base images update failed on $repo_location/$target_repo
342         exit 1
343     fi
344 fi