-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Expand file tree
/
Copy pathMakefile
More file actions
138 lines (116 loc) · 4.54 KB
/
Makefile
File metadata and controls
138 lines (116 loc) · 4.54 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
SHELL := /bin/bash # Default 'sh' doesn't support 'source'
BUILD_BRANCH=main
CONTAINER_NAME=jdbc
PACKAGE_DESTINATION=$(PWD)/drivers
SRC="$(PWD)"
skipSurefire ?= 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
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.
# To include unit tests, run: make integration-test skipSurefire=false
integration-test:
mvn -B -ntp \
-Penable-integration-tests \
-DtrimStackTrace=false \
-DskipSurefire=$(skipSurefire) \
-Dclirr.skip=true \
-Denforcer.skip=true \
-Dit.failIfNoSpecifiedTests=true \
-Dit.test=$(test) \
integration-test
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 \
-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" \
$(CONTAINER_NAME) $(args)
docker-build:
docker build -t $(CONTAINER_NAME) -f Dockerfile --build-arg BRANCH=${BUILD_BRANCH} $(SRC)
docker-session:
$(MAKE) .docker-run 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-coverage:
$(MAKE) .docker-run args="make unit-test-coverage"
$(MAKE) .docker-run args="make full-coverage"