-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathdeploy.sh
executable file
·70 lines (56 loc) · 1.34 KB
/
deploy.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
#!/usr/bin/env bash
set -o errexit -o nounset -o pipefail
repo="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
function main {
cd "$repo"
use_nodejs_version "14"
build
run_tests
deploy
}
function deploy {
pushd "$repo/deployment"
npm_ci_if_package_lock_has_changed
npm run deploy
popd
}
function build {
pushd "$repo"
npm_ci_if_package_lock_has_changed
npm run lint
npm run build
popd
}
function run_tests {
pushd "$repo"
TS_NODE_FILES=true npm run test
TS_NODE_FILES=true npm run test:browser
popd
}
function use_nodejs_version {
local node_version="$1"
set +o nounset
export NVM_DIR="${NVM_DIR:-$HOME/.cache/nvm}"
source "$repo/nvm.sh"
nvm install "$node_version"
nvm use "$node_version"
set -o nounset
}
function npm_ci_if_package_lock_has_changed {
echo "Checking if npm ci needs to be run"
local -r checksum_file="./node_modules/.package-lock.json.checksum"
function run_npm_ci {
npm ci
shasum package-lock.json > "$checksum_file"
}
if [ ! -f "$checksum_file" ]; then
echo "no existing package-lock.json checksum found, running npm ci"
run_npm_ci
elif ! shasum --check "$checksum_file"; then
echo "package-lock.json seems to have changed, running npm ci"
run_npm_ci
else
echo "package-lock.json doesn't seem to have changed, skipping npm ci"
fi
}
main "$@"