-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Expand file tree
/
Copy pathMakefile
More file actions
135 lines (116 loc) · 4.39 KB
/
Copy pathMakefile
File metadata and controls
135 lines (116 loc) · 4.39 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
SHELL := /bin/bash # Default 'sh' doesn't support 'source'
BUILD_BRANCH=main
CONTAINER_NAME=jdbc
PACKAGE_DESTINATION=$(PWD)/drivers
SRC="$(PWD)"
skipSurefire ?= true
# 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 \
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
mvn dependency:copy-dependencies \
-DincludeScope=runtime
${MAKE} generate-dependency-list
generate-dependency-list:
mvn -B dependency:list \
-f pom.xml \
-DincludeScope=runtime | grep :jar: | sed -E "s/^.* ([^: ]+):([^:]+):([^:]+):([^:]+).*/<dependency><groupId>\1<\/groupId><artifactId>\2<\/artifactId><version>\4<\/version><\/dependency>/g" > dependencies.txt
# 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"