This repository has been archived by the owner on Jul 2, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild-image.sh
executable file
·116 lines (91 loc) · 2.92 KB
/
build-image.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
#!/bin/bash
set -eo pipefail
ROOT_DIR=$(cd $(dirname ${BASH_SOURCE[0]})/.. && pwd)
. $ROOT_DIR/docker/docker_helper.sh
function system_version {
cat $ROOT_DIR/VERSION
}
function build_builder_image {
cd $ROOT_DIR
if [ "$BUILD_BASE" != "false" ]; then PREVENT_OLD_IMAGE_REMOVAL=true common/docker/phoenix/build-image.sh; fi
SYSTEM_VERSION=$(system_version) \
PREVENT_OLD_IMAGE_REMOVAL=true build_aircloak_image air_build air/builder.dockerfile air/.dockerignore-builder
}
function build_release {
cd $ROOT_DIR
# need to touch these files to ensure that they are mounted as files
mkdir -p $(pwd)/$(air_cache_folder)/priv
touch -a $(pwd)/$(air_cache_folder)/priv/dependencies.zip
docker run --rm -i \
-v $(pwd)/VERSION:/aircloak/VERSION \
-v $(pwd)/common:/aircloak/common \
-v $(pwd)/air:/aircloak/air \
-v $(pwd)/bom:/aircloak/bom \
-v $(pwd)/cloak:/aircloak/cloak \
-v $(pwd)/$(air_cache_folder)/_build:/aircloak/air/_build \
-v $(pwd)/$(air_cache_folder)/deps:/aircloak/air/deps \
-v $(pwd)/$(air_cache_folder)/assets/node_modules:/aircloak/air/assets/node_modules \
-v $(pwd)/$(air_cache_folder)/flow-typed:/aircloak/air/flow-typed \
-v $(pwd)/$(air_cache_folder)/priv/dependencies.zip:/aircloak/air/priv/dependencies.zip \
-v $(pwd)/$(air_cache_folder)/cloak/deps:/aircloak/cloak/deps \
-v $(pwd)/$(air_cache_folder)/bom/deps:/aircloak/bom/deps \
-v $(pwd)/$(air_cache_folder)/bom/_build:/aircloak/bom/_build \
$(aircloak_image_name air_build):$(git_head_image_tag) \
/bin/bash -c '
set -eo pipefail
. ~/.asdf/asdf.sh
. ~/.bashrc
cd /aircloak/air
./fetch_deps.sh --only prod
cd /aircloak/cloak
./fetch_deps.sh --only prod
cd /aircloak/bom
./fetch_deps.sh
mix bom \
--elixir /aircloak/air/deps \
--elixir /aircloak/cloak/deps \
--rust /aircloak/cloak/src/rodbc \
--node /aircloak/air/assets/node_modules \
/aircloak/air/priv
cd /aircloak/air
make release
'
}
function build_release_image {
# copy the generated release to the artifacts folder
cd $ROOT_DIR
mkdir -p air/artifacts/rel
rm -rf air/artifacts/rel/*
cp -rp ./$(air_cache_folder)/_build/prod/rel/air/releases/$(system_version)/air.tar.gz air/artifacts/rel
cd air/artifacts/rel
tar -xzf air.tar.gz
rm air.tar.gz
# build the release image
cd $ROOT_DIR
SYSTEM_VERSION=$(system_version) \
PREVENT_OLD_IMAGE_REMOVAL=true build_aircloak_image air air/release.dockerfile air/.dockerignore-release
remove_old_git_head_image_tags "aircloak" > /dev/null 2>&1
}
function build_all {
build_builder_image
build_release
build_release_image
}
case ${1:-all} in
all)
build_all
;;
builder_image)
build_builder_image
;;
release)
build_release
;;
release_image)
build_release_image
;;
*)
echo $0": unrecognized option:" $1
exit 1
;;
esac