Skip to content

Commit fab8628

Browse files
authored
chore(jdbc): moving helper scripts & simplify dependencies (#4062)
1 parent ae6f8bd commit fab8628

File tree

4 files changed

+169
-90
lines changed

4 files changed

+169
-90
lines changed

.gitignore

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,8 @@ __pycache__
1212
SimpleBenchmarkApp/src/main/java/com/google/cloud/App.java
1313
.flattened-pom.xml
1414
# Local Test files
15-
*ITLocalTest.java
15+
*ITLocalTest.java
16+
17+
# JDBC-specific files
18+
google-cloud-bigquery-jdbc/drivers/
19+
google-cloud-bigquery-jdbc/jacoco*
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
FROM gcr.io/cloud-devrel-public-resources/java11
2+
3+
ENV JDBC_DOCKER_ENV=true
4+
RUN apt-get update && apt-get install -y zip && rm -rf /var/lib/apt/lists/*
5+
6+
RUN mkdir /tst
7+
COPY ./pom.xml /src/pom.xml
8+
COPY ./java.header /src/java.header
9+
COPY ./license-checks.xml /src/license-checks.xml
10+
COPY ./google-cloud-bigquery-jdbc/pom.xml /src/google-cloud-bigquery-jdbc/pom.xml
11+
12+
COPY ./google-cloud-bigquery /src/google-cloud-bigquery
13+
COPY ./google-cloud-bigquery-bom /src/google-cloud-bigquery-bom
14+
15+
16+
WORKDIR /src
17+
RUN mvn install -DskipTests
18+
19+
WORKDIR /src/google-cloud-bigquery-jdbc
20+
21+
ENTRYPOINT []
Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
CONTAINER_NAME=jdbc
2+
PACKAGE_DESTINATION=$(PWD)/drivers
3+
SRC="$(PWD)/.."
4+
skipSurefire ?= true
5+
6+
# no indendation for ifndef\endif due to their evaluation before execution
7+
.check-env: |
8+
ifndef GOOGLE_APPLICATION_CREDENTIALS
9+
$(error GOOGLE_APPLICATION_CREDENTIALS is required to run tests)
10+
endif
11+
12+
install:
13+
mvn clean install
14+
15+
clean:
16+
mvn clean
17+
18+
lint:
19+
mvn com.spotify.fmt:fmt-maven-plugin:format
20+
21+
unittest: |
22+
mvn -B -ntp \
23+
-DtrimStackTrace=false \
24+
-Dclirr.skip=true \
25+
-Denforcer.skip=true \
26+
-Dtest=$(test) \
27+
test
28+
29+
# Important: By default, this command will skip unittests.
30+
# To include unit tests, run: make integration-test skipSurefire=false
31+
integration-test: .check-env
32+
mvn -B -ntp \
33+
-Penable-integration-tests \
34+
-DtrimStackTrace=false \
35+
-DskipSurefire=$(skipSurefire) \
36+
-Dclirr.skip=true \
37+
-Denforcer.skip=true \
38+
-Dit.failIfNoSpecifiedTests=false \
39+
-Dit.test=$(test) \
40+
integration-test
41+
42+
unit-test-coverage:
43+
$(MAKE) unittest
44+
mvn -B -ntp jacoco:report
45+
BUILD_DIR=$$(mvn -B -ntp help:evaluate -Dexpression=project.build.directory -q -DforceStdout); \
46+
cd $$BUILD_DIR/site && zip -r $$OLDPWD/jacoco-unittests.zip jacoco && cd $$OLDPWD
47+
48+
full-coverage: .check-env
49+
$(MAKE) integration-test skipSurefire=false test=ITBigQueryJDBCTest,ITNightlyBigQueryTest
50+
mvn -B -ntp jacoco:report
51+
BUILD_DIR=$$(mvn -B -ntp help:evaluate -Dexpression=project.build.directory -q -DforceStdout); \
52+
cd $$BUILD_DIR/site && zip -r $$OLDPWD/jacoco-full.zip jacoco && cd $$OLDPWD
53+
54+
package:
55+
mvn clean package \
56+
-DincludeScope=runtime \
57+
-Dmaven.test.skip=true
58+
mvn dependency:copy-dependencies \
59+
-DincludeScope=runtime
60+
${MAKE} generate-dependency-list
61+
62+
package-all-dependencies:
63+
mvn package \
64+
-DincludeScope=runtime \
65+
-Dmaven.test.skip=true \
66+
-P=release-all-dependencies
67+
68+
package-all-dependencies-shaded:
69+
mvn package \
70+
-DincludeScope=runtime \
71+
-Dmaven.test.skip=true \
72+
-P=release-all-dependencies,release-all-dependencies-shaded
73+
74+
generate-dependency-list:
75+
mvn -B dependency:list \
76+
-f pom.xml \
77+
-DincludeScope=runtime | grep :jar: | sed -E "s/^.* ([^: ]+):([^:]+):([^:]+):([^:]+).*/<dependency><groupId>\1<\/groupId><artifactId>\2<\/artifactId><version>\4<\/version><\/dependency>/g" > dependencies.txt
78+
79+
# Commands for dockerized environments
80+
.docker-run: |
81+
docker run -it \
82+
-v $(GOOGLE_APPLICATION_CREDENTIALS):/auth/application_creds.json \
83+
-v "$(GOOGLE_APPLICATION_CREDENTIALS).p12":/auth/application_creds.p12 \
84+
-e "GOOGLE_APPLICATION_CREDENTIALS=/auth/application_creds.json" \
85+
-v $(SRC):/src \
86+
-e "SA_EMAIL=test_email" \
87+
-e "SA_SECRET=/auth/application_creds.json" \
88+
-e "SA_SECRET_P12=/auth/application_creds.p12" \
89+
$(CONTAINER_NAME) $(args)
90+
91+
docker-build:
92+
docker build -t $(CONTAINER_NAME) -f Dockerfile ..
93+
94+
docker-session:
95+
$(MAKE) .docker-run args="bash"
96+
97+
docker-package-all-dependencies: docker-build
98+
mkdir -p $(PACKAGE_DESTINATION)
99+
docker run \
100+
-v $(SRC):/src \
101+
-v $(PACKAGE_DESTINATION):/pkg \
102+
$(CONTAINER_NAME) \
103+
sh -c "make package-all-dependencies && \
104+
cp --no-preserve=ownership /mvn/test-target/google-cloud-bigquery-jdbc-*.jar /pkg && \
105+
rm -f /pkg/*tests.jar"
106+
107+
docker-package-all-dependencies-shaded: docker-build
108+
mkdir -p $(PACKAGE_DESTINATION)
109+
docker run \
110+
-v $(SRC):/src \
111+
-v $(PACKAGE_DESTINATION):/pkg \
112+
$(CONTAINER_NAME) \
113+
sh -c "make package-all-dependencies-shaded && \
114+
cp --no-preserve=ownership /mvn/test-target/google-cloud-bigquery-jdbc-*.jar /pkg && \
115+
rm -f /pkg/*tests.jar"
116+
117+
docker-package: docker-build
118+
mkdir -p $(PACKAGE_DESTINATION)
119+
docker run \
120+
-v $(SRC):/src \
121+
-v $(PACKAGE_DESTINATION):/pkg \
122+
$(CONTAINER_NAME) \
123+
sh -c "make package && \
124+
mkdir -p /tmp/package && \
125+
cp --no-preserve=ownership /mvn/test-target/google-cloud-bigquery-jdbc-*.jar /tmp/package && \
126+
rm -f /pkg/*tests.jar && \
127+
cp --no-preserve=ownership dependencies.txt /tmp/package && \
128+
rm dependencies.txt && \
129+
cp --no-preserve=ownership /mvn/test-target/dependency/*.jar /tmp/package && \
130+
zip -j -r /pkg/google-cloud-bigquery-jdbc-$$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout).zip /tmp/package"
131+
132+
docker-unittest: |
133+
$(MAKE) .docker-run args="make unittest test=$(test)"
134+
135+
docker-integration-test: .check-env
136+
$(MAKE) .docker-run args="make integration-test test=$(test) skipSurefire=$(skipSurefire)"
137+
138+
docker-coverage:
139+
$(MAKE) .docker-run args="make unit-test-coverage"
140+
$(MAKE) .docker-run args="make full-coverage"

google-cloud-bigquery-jdbc/pom.xml

Lines changed: 3 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
<modelVersion>4.0.0</modelVersion>
2121
<groupId>com.google.cloud</groupId>
2222
<artifactId>google-cloud-bigquery-jdbc</artifactId>
23-
<version>0.1.0</version>
23+
<version>0.1.0-SNAPSHOT</version>
2424
<packaging>jar</packaging>
2525
<name>BigQuery JDBC</name>
2626
<url>https://github.com/googleapis/java-bigquery-jdbc</url>
@@ -60,8 +60,8 @@
6060

6161
<parent>
6262
<groupId>com.google.cloud</groupId>
63-
<artifactId>google-cloud-bigquery-jdbc-parent</artifactId>
64-
<version>0.1.0</version>
63+
<artifactId>google-cloud-bigquery-parent</artifactId>
64+
<version>2.57.2-SNAPSHOT</version><!-- {x-version-update:google-cloud-bigquery:current} -->
6565
</parent>
6666
<dependencies>
6767
<dependency>
@@ -72,72 +72,6 @@
7272
<groupId>com.google.cloud</groupId>
7373
<artifactId>google-cloud-bigquerystorage</artifactId>
7474
</dependency>
75-
<dependency>
76-
<groupId>com.google.api</groupId>
77-
<artifactId>api-common</artifactId>
78-
</dependency>
79-
<dependency>
80-
<groupId>org.apache.arrow</groupId>
81-
<artifactId>arrow-vector</artifactId>
82-
</dependency>
83-
<dependency>
84-
<groupId>com.google.guava</groupId>
85-
<artifactId>guava</artifactId>
86-
</dependency>
87-
<dependency>
88-
<groupId>com.google.cloud</groupId>
89-
<artifactId>google-cloud-core</artifactId>
90-
</dependency>
91-
<dependency>
92-
<groupId>com.google.api</groupId>
93-
<artifactId>gax</artifactId>
94-
</dependency>
95-
<dependency>
96-
<groupId>com.google.auth</groupId>
97-
<artifactId>google-auth-library-oauth2-http</artifactId>
98-
</dependency>
99-
<dependency>
100-
<groupId>com.google.auth</groupId>
101-
<artifactId>google-auth-library-credentials</artifactId>
102-
</dependency>
103-
104-
<!-- Dependencies for Arrow RS -->
105-
<dependency>
106-
<groupId>org.apache.arrow</groupId>
107-
<artifactId>arrow-memory-core</artifactId>
108-
</dependency>
109-
<dependency>
110-
<groupId>org.apache.arrow</groupId>
111-
<artifactId>arrow-memory-netty</artifactId>
112-
</dependency>
113-
<dependency>
114-
<groupId>com.google.protobuf</groupId>
115-
<artifactId>protobuf-java</artifactId>
116-
</dependency>
117-
<dependency>
118-
<groupId>com.google.api.grpc</groupId>
119-
<artifactId>proto-google-cloud-bigquerystorage-v1</artifactId>
120-
</dependency>
121-
<dependency>
122-
<groupId>com.google.code.gson</groupId>
123-
<artifactId>gson</artifactId>
124-
</dependency>
125-
<dependency>
126-
<groupId>com.google.code.findbugs</groupId>
127-
<artifactId>jsr305</artifactId>
128-
</dependency>
129-
<dependency>
130-
<groupId>org.apache.httpcomponents.core5</groupId>
131-
<artifactId>httpcore5</artifactId>
132-
</dependency>
133-
<dependency>
134-
<groupId>org.apache.httpcomponents.client5</groupId>
135-
<artifactId>httpclient5</artifactId>
136-
</dependency>
137-
<dependency>
138-
<groupId>com.google.http-client</groupId>
139-
<artifactId>google-http-client</artifactId>
140-
</dependency>
14175
<dependency>
14276
<groupId>com.google.http-client</groupId>
14377
<artifactId>google-http-client-apache-v5</artifactId>
@@ -152,26 +86,6 @@
15286
</exclusion>
15387
</exclusions>
15488
</dependency>
155-
<dependency>
156-
<groupId>com.google.cloud</groupId>
157-
<artifactId>google-cloud-core-http</artifactId>
158-
</dependency>
159-
<dependency>
160-
<groupId>com.google.api</groupId>
161-
<artifactId>gax-grpc</artifactId>
162-
</dependency>
163-
<dependency>
164-
<groupId>io.grpc</groupId>
165-
<artifactId>grpc-api</artifactId>
166-
</dependency>
167-
<dependency>
168-
<groupId>io.grpc</groupId>
169-
<artifactId>grpc-netty-shaded</artifactId>
170-
</dependency>
171-
<dependency>
172-
<groupId>io.grpc</groupId>
173-
<artifactId>grpc-core</artifactId>
174-
</dependency>
17589
<!-- Test Dependencies -->
17690
<dependency>
17791
<groupId>com.google.truth</groupId>

0 commit comments

Comments
 (0)