Skip to content

Commit f3088d5

Browse files
fix(hermetic-build): obtain gapic-generator-java locally on release branch (#2023)
* fix(hermetic-build): obtain gapic-generator-java locally on release branch * find generator locally first * copy_from to return value instead of `exit` * remove redundant variable utilization * improve copy_from doc * fix unit tests * improve readability of `copy_from` * invert result of copy_from * improve log messages in download_generator_artifact
1 parent e2bf12e commit f3088d5

File tree

3 files changed

+33
-33
lines changed

3 files changed

+33
-33
lines changed

library_generation/README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,8 @@ You can find the released version of gapic-generator-java in [maven central](htt
7272

7373
Use `--gapic_generator_version` to specify the value.
7474

75-
Note that you can specify a `SNAPSHOT` version as long as you have build the SNAPSHOT of gapic-generator-java in your maven
76-
local repository.
75+
Note that you can specify any non-published version (e.g. a SNAPSHOT) as long as you have installed it in your maven
76+
local repository. The script will search locally first.
7777

7878
### protobuf_version (optional)
7979
You can find the released version of protobuf in [GitHub](https://github.com/protocolbuffers/protobuf/releases/).

library_generation/test/generate_library_unit_tests.sh

+8-4
Original file line numberDiff line numberDiff line change
@@ -78,9 +78,11 @@ remove_grpc_version_test() {
7878
}
7979

8080
download_generator_success_with_valid_version_test() {
81-
download_generator "2.24.0"
82-
assertFileOrDirectoryExists "gapic-generator-java-2.24.0.jar"
83-
rm "gapic-generator-java-2.24.0.jar"
81+
local version="2.24.0"
82+
local artifact="gapic-generator-java-${version}.jar"
83+
download_generator_artifact "${version}" "${artifact}"
84+
assertFileOrDirectoryExists "${artifact}"
85+
rm "${artifact}"
8486
}
8587

8688
download_generator_failed_with_invalid_version_test() {
@@ -91,7 +93,9 @@ download_generator_failed_with_invalid_version_test() {
9193
# the other tests can continue executing in the current
9294
# shell.
9395
local res=0
94-
$(download_generator "1.99.0") || res=$?
96+
local version="1.99.0"
97+
local artifact="gapic-generator-java-${version}.jar"
98+
$(download_generator_artifact "${version}" "${artifact}") || res=$?
9599
assertEquals 1 $((res))
96100
}
97101

library_generation/utilities.sh

+23-27
Original file line numberDiff line numberDiff line change
@@ -75,19 +75,7 @@ remove_grpc_version() {
7575

7676
download_gapic_generator_pom_parent() {
7777
local gapic_generator_version=$1
78-
if [ ! -f "gapic-generator-java-pom-parent-${gapic_generator_version}.pom" ]; then
79-
if [[ "${gapic_generator_version}" == *"-SNAPSHOT" ]]; then
80-
# copy a SNAPSHOT version from maven local repository.
81-
copy_from "$HOME/.m2/repository/com/google/api/gapic-generator-java-pom-parent/${gapic_generator_version}/gapic-generator-java-pom-parent-${gapic_generator_version}.pom" \
82-
"gapic-generator-java-pom-parent-${gapic_generator_version}.pom"
83-
return
84-
fi
85-
# download gapic-generator-java-pom-parent from Google maven central mirror.
86-
download_from \
87-
"https://maven-central.storage-download.googleapis.com/maven2/com/google/api/gapic-generator-java-pom-parent/${gapic_generator_version}/gapic-generator-java-pom-parent-${gapic_generator_version}.pom" \
88-
"gapic-generator-java-pom-parent-${gapic_generator_version}.pom"
89-
fi
90-
# file exists, do not need to download again.
78+
download_generator_artifact "${gapic_generator_version}" "gapic-generator-java-pom-parent-${gapic_generator_version}.pom" "gapic-generator-java-pom-parent"
9179
}
9280

9381
get_grpc_version() {
@@ -114,25 +102,31 @@ download_tools() {
114102
local protobuf_version=$2
115103
local grpc_version=$3
116104
local os_architecture=$4
117-
download_generator "${gapic_generator_version}"
105+
download_generator_artifact "${gapic_generator_version}" "gapic-generator-java-${gapic_generator_version}.jar"
118106
download_protobuf "${protobuf_version}" "${os_architecture}"
119107
download_grpc_plugin "${grpc_version}" "${os_architecture}"
120108
popd
121109
}
122110

123-
download_generator() {
111+
download_generator_artifact() {
124112
local gapic_generator_version=$1
113+
local artifact=$2
114+
local project=${3:-"gapic-generator-java"}
125115
if [ ! -f "gapic-generator-java-${gapic_generator_version}.jar" ]; then
126-
if [[ "${gapic_generator_version}" == *"-SNAPSHOT" ]]; then
127-
# copy a SNAPSHOT version from maven local repository.
128-
copy_from "$HOME/.m2/repository/com/google/api/gapic-generator-java/${gapic_generator_version}/gapic-generator-java-${gapic_generator_version}.jar" \
129-
"gapic-generator-java-${gapic_generator_version}.jar"
130-
return
116+
# first, try to fetch the generator locally
117+
local local_fetch_successful=$(copy_from "$HOME/.m2/repository/com/google/api/${project}/${gapic_generator_version}/${artifact}" \
118+
"${artifact}")
119+
if [[ "${local_fetch_successful}" == "false" ]];then
120+
# download gapic-generator-java artifact from Google maven central mirror if not
121+
# found locally
122+
>&2 echo "${artifact} not found locally. Attempting a download from Maven Central"
123+
download_from \
124+
"https://maven-central.storage-download.googleapis.com/maven2/com/google/api/${project}/${gapic_generator_version}/${artifact}" \
125+
"${artifact}"
126+
>&2 echo "${artifact} found and downloaded from Maven Central"
127+
else
128+
>&2 echo "${artifact} found copied from local repository (~/.m2)"
131129
fi
132-
# download gapic-generator-java from Google maven central mirror.
133-
download_from \
134-
"https://maven-central.storage-download.googleapis.com/maven2/com/google/api/gapic-generator-java/${gapic_generator_version}/gapic-generator-java-${gapic_generator_version}.jar" \
135-
"gapic-generator-java-${gapic_generator_version}.jar"
136130
fi
137131
}
138132

@@ -174,17 +168,19 @@ download_from() {
174168
curl -LJ -o "${save_as}" --fail -m 30 --retry 2 "$url" || download_fail "${save_as}" "${repo}"
175169
}
176170

171+
# copies the specified file in $1 to $2
172+
# will return "true" if the copy was successful
177173
copy_from() {
178174
local local_repo=$1
179175
local save_as=$2
180-
cp "${local_repo}" "${save_as}" || \
181-
download_fail "${save_as}" "maven local"
176+
copy_successful=$(cp "${local_repo}" "${save_as}" && echo "true" || echo "false")
177+
echo "${copy_successful}"
182178
}
183179

184180
download_fail() {
185181
local artifact=$1
186182
local repo=${2:-"maven central mirror"}
187-
>&2 echo "Fail to download ${artifact} from ${repo} repository. Please install ${artifact} first if you want to download a SNAPSHOT."
183+
>&2 echo "Fail to download ${artifact} from ${repo} repository. Please install ${artifact} first if you want to use a non-published artifact."
188184
exit 1
189185
}
190186

0 commit comments

Comments
 (0)