-
Notifications
You must be signed in to change notification settings - Fork 7
/
ci.sh
executable file
·158 lines (141 loc) · 5.17 KB
/
ci.sh
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
155
156
157
158
#!/usr/bin/env bash
## Adapted from Daniel Bast's Spark-Scala-Template,
## https://github.com/dbast/spark-scala-template
set -o errtrace -o nounset -o pipefail -o errexit
# Goto parent (base) directory of this script
BASE_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )"/.. && pwd )"
cd "$BASE_DIR"
MAIN_SCALA_VERSION=2.12.12
MAIN_SPARK_VERSION=3.0.1
if [[ -z "${TRAVIS_SCALA_VERSION:-}" ]]; then
echo "Environment variable TRAVIS_SCALA_VERSION is not set"
echo "Using MAIN_SCALA_VERSION: $MAIN_SCALA_VERSION"
TRAVIS_SCALA_VERSION=$MAIN_SCALA_VERSION
fi
if [[ -z "${SPARK_VERSION:-}" ]]; then
echo "Environment variable SPARK_VERSION is not set"
echo "Using MAIN_SPARK_VERSION: $MAIN_SPARK_VERSION"
SPARK_VERSION=$MAIN_SPARK_VERSION
fi
run_self_check () {
echo "############################################"
echo "# #"
echo "# Self-check #"
echo "# #"
echo "############################################"
# Don't fail here, failing later at the end when all shell scripts are checked anyway.
shellcheck "$BASE_DIR"/scripts/ci.sh \
&& echo "Self-check succeeded!" || echo "Self-check failed!"
}
run_cleaning () {
echo "############################################"
echo "# #"
echo "# Cleaning #"
echo "# #"
echo "############################################"
./sbtx \
-Dspark.currentVersion=$SPARK_VERSION \
++$TRAVIS_SCALA_VERSION \
clean
}
run_unit_tests () {
echo "############################################"
echo "# #"
echo "# Unit testing #"
echo "# #"
echo "############################################"
./sbtx \
-Dspark.currentVersion=$SPARK_VERSION \
++$TRAVIS_SCALA_VERSION \
coverage test
}
run_integration_tests () {
echo "############################################"
echo "# #"
echo "# Integration testing #"
echo "# #"
echo "############################################"
./sbtx \
-Dspark.currentVersion=$SPARK_VERSION \
++$TRAVIS_SCALA_VERSION \
coverage it:test
}
run_coverage_report () {
echo "############################################"
echo "# #"
echo "# Coverage report #"
echo "# #"
echo "############################################"
./sbtx \
-Dspark.currentVersion=$SPARK_VERSION \
++$TRAVIS_SCALA_VERSION \
coverageReport
}
run_api_doc () {
echo "############################################"
echo "# #"
echo "# Generating API documentaion #"
echo "# #"
echo "############################################"
./sbtx \
-Dspark.currentVersion=$SPARK_VERSION \
++$TRAVIS_SCALA_VERSION \
doc
}
run_dependency_info () {
echo "############################################"
echo "# #"
echo "# Dependency information #"
echo "# #"
echo "############################################"
./sbtx \
-Dspark.currentVersion=$SPARK_VERSION \
++$TRAVIS_SCALA_VERSION \
dependencyUpdates pluginUpdates dependencyTree
}
run_shell_check () {
echo "############################################"
echo "# #"
echo "# Shellcheck #"
echo "# #"
echo "############################################"
find . -name "*.sh" -print0 | xargs -n 1 -0 shellcheck
}
run_assembly () {
echo "############################################"
echo "# #"
echo "# Assembling binary artifact #"
echo "# #"
echo "############################################"
./sbtx \
-Dspark.currentVersion=$SPARK_VERSION \
++$TRAVIS_SCALA_VERSION \
assembly
}
run_clean_worktree_check () {
echo "############################################"
echo "# #"
echo "# Check for clean worktree #"
echo "# #"
echo "############################################"
# To be executed after all other steps, to ensures that there is no uncommitted code and there
# are no untracked files, which means .gitignore is complete and all code is part of a
# reviewable commit.
GIT_STATUS="$(git status --porcelain)"
if [[ $GIT_STATUS ]]; then
echo "Your worktree is not clean,"
echo "there is either uncommitted code or there are untracked files:"
echo "${GIT_STATUS}"
exit 1
fi
}
run_self_check
run_cleaning
run_unit_tests
run_integration_tests
run_coverage_report
run_api_doc
run_dependency_info
run_shell_check
run_assembly
run_clean_worktree_check