-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Expand file tree
/
Copy pathMakefile
More file actions
154 lines (129 loc) · 5.21 KB
/
Copy pathMakefile
File metadata and controls
154 lines (129 loc) · 5.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
SHELL := /bin/bash # Default 'sh' doesn't support 'source'
BUILD_BRANCH=main
CONTAINER_NAME=jdbc
PROXY_CONTAINER_NAME=$(CONTAINER_NAME)-proxy
PACKAGE_DESTINATION=$(PWD)/drivers
SRC="$(PWD)"
skipSurefire ?= true
skipShade ?= true
JDBC_DRIVER_VERSION = $(shell mvn help:evaluate -Dexpression=project.version -q -DforceStdout)
JDBC_JAR = $(PACKAGE_DESTINATION)/google-cloud-bigquery-jdbc-$(JDBC_DRIVER_VERSION)-all.jar
# no indendation for ifndef\endif due to their evaluation before execution
.check-env: |
ifndef GOOGLE_APPLICATION_CREDENTIALS
$(error GOOGLE_APPLICATION_CREDENTIALS is required to run tests)
endif
install:
cd "$(PWD)/.." && \
source ".kokoro/common.sh" && \
install_modules java-bigquery-jdbc
clean:
mvn clean
lint:
mvn com.spotify.fmt:fmt-maven-plugin:format
unittest: |
mvn -B -ntp \
-DtrimStackTrace=false \
-Dclirr.skip=true \
-Denforcer.skip=true \
-Dtest=$(test) \
test
# Important: By default, this command will skip unittests & uberjar build.
# To include unit tests, run: make integration-test skipSurefire=false
integration-test:
mvn -B -ntp \
-Penable-integration-tests \
-DtrimStackTrace=false \
-DskipSurefire=$(skipSurefire) \
-DskipShade=$(skipShade) \
-Dclirr.skip=true \
-Denforcer.skip=true \
-Dit.failIfNoSpecifiedTests=true \
-Dit.test=$(test) \
integration-test \
verify
unit-test-coverage:
$(MAKE) unittest
mvn -B -ntp jacoco:report
BUILD_DIR=$$(mvn -B -ntp help:evaluate -Dexpression=project.build.directory -q -DforceStdout); \
cd $$BUILD_DIR/site && zip -r $$OLDPWD/jacoco-unittests.zip jacoco && cd $$OLDPWD
full-coverage:
$(MAKE) integration-test skipSurefire=false test=ITBigQueryJDBCTest,ITNightlyBigQueryTest
mvn -B -ntp jacoco:report
BUILD_DIR=$$(mvn -B -ntp help:evaluate -Dexpression=project.build.directory -q -DforceStdout); \
cd $$BUILD_DIR/site && zip -r $$OLDPWD/jacoco-full.zip jacoco && cd $$OLDPWD
package:
mvn clean package \
-DincludeScope=runtime \
-Dmaven.test.skip=true
mkdir -p $(PACKAGE_DESTINATION)
cp target/google-cloud-bigquery-jdbc-*-all.jar $(PACKAGE_DESTINATION)/
build-it-standalone:
mvn -Dmaven.test.skip=true package -f pom-it.xml
run-it-standalone:
java -cp $(JDBC_JAR):target-it/* org.junit.platform.console.ConsoleLauncher --select-class com.google.cloud.bigquery.jdbc.it.suites.ITDriverAgnosticTests
# Commands for dockerized environments
.docker-run: |
docker run -it \
--cap-add=NET_ADMIN \
-v $(GOOGLE_APPLICATION_CREDENTIALS):/auth/application_creds.json \
-v "$(GOOGLE_APPLICATION_CREDENTIALS).p12":/auth/application_creds.p12 \
-e "GOOGLE_APPLICATION_CREDENTIALS=/auth/application_creds.json" \
-v $(SRC):/src \
-e "SA_EMAIL=test_email" \
-e "SA_SECRET=/auth/application_creds.json" \
-e "SA_SECRET_P12=/auth/application_creds.p12" \
-e "BIGQUERY_BASE_URL=$(BIGQUERY_BASE_URL)" \
-e "BIGQUERY_URL_FLAGS=$(BIGQUERY_URL_FLAGS)" \
$(CONTAINER_NAME) $(args)
docker-build:
docker build --target regular -t $(CONTAINER_NAME) -f Dockerfile --build-arg BRANCH=${BUILD_BRANCH} $(SRC)
docker-proxy-build:
docker build --target proxy -t $(PROXY_CONTAINER_NAME) -f Dockerfile --build-arg BRANCH=${BUILD_BRANCH} $(SRC)
docker-session:
$(MAKE) .docker-run args="bash"
docker-proxy-session:
$(MAKE) .docker-run CONTAINER_NAME=$(PROXY_CONTAINER_NAME) args="bash"
docker-package-all-dependencies: docker-build
mkdir -p $(PACKAGE_DESTINATION)
docker run \
-v $(SRC):/src \
-v $(PACKAGE_DESTINATION):/pkg \
$(CONTAINER_NAME) \
sh -c "make package-all-dependencies && \
cp --no-preserve=ownership /mvn/test-target/google-cloud-bigquery-jdbc-*.jar /pkg && \
rm -f /pkg/*tests.jar"
docker-package-all-dependencies-shaded: docker-build
mkdir -p $(PACKAGE_DESTINATION)
docker run \
-v $(SRC):/src \
-v $(PACKAGE_DESTINATION):/pkg \
$(CONTAINER_NAME) \
sh -c "make package-all-dependencies-shaded && \
cp --no-preserve=ownership /mvn/test-target/google-cloud-bigquery-jdbc-*.jar /pkg && \
rm -f /pkg/*tests.jar"
docker-package: docker-build
mkdir -p $(PACKAGE_DESTINATION)
docker run \
-v $(SRC):/src \
-v $(PACKAGE_DESTINATION):/pkg \
$(CONTAINER_NAME) \
sh -c "make package && \
mkdir -p /tmp/package && \
cp --no-preserve=ownership /mvn/test-target/google-cloud-bigquery-jdbc-*.jar /tmp/package && \
rm -f /tmp/package/google-cloud-bigquery-jdbc-*-all.jar && \
rm -f /tmp/package/*tests.jar && \
cp --no-preserve=ownership dependencies.txt /tmp/package && \
rm dependencies.txt && \
cp --no-preserve=ownership /mvn/test-target/dependency/*.jar /tmp/package && \
zip -j -r /pkg/google-cloud-bigquery-jdbc-$$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout).zip /tmp/package && \
cp --no-preserve=ownership /mvn/test-target/google-cloud-bigquery-jdbc-*-all.jar /pkg "
docker-unittest: |
$(MAKE) .docker-run args="make unittest test=$(test)"
docker-integration-test: .check-env
$(MAKE) .docker-run args="make integration-test test=$(test) skipSurefire=$(skipSurefire)"
docker-proxy-integration-test: .check-env docker-proxy-build
$(MAKE) docker-integration-test CONTAINER_NAME=$(PROXY_CONTAINER_NAME) BIGQUERY_URL_FLAGS="ProxyHost=127.0.0.1;ProxyPort=3128;"
docker-coverage:
$(MAKE) .docker-run args="make unit-test-coverage"
$(MAKE) .docker-run args="make full-coverage"