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"
0 commit comments