forked from metacall/core
-
Notifications
You must be signed in to change notification settings - Fork 0
/
docker-compose.sh
executable file
·180 lines (145 loc) · 4.61 KB
/
docker-compose.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
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
#!/usr/bin/env sh
#
# MetaCall Build Bash Script by Parra Studios
# Build and install bash script utility for MetaCall.
#
# Copyright (C) 2016 - 2021 Vicente Eduardo Ferrer Garcia <[email protected]>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Pull MetaCall Docker Compose
sub_pull() {
if [ -z "$IMAGE_NAME" ]; then
echo "Error: IMAGE_NAME variable not defined"
exit 1
fi
docker pull $IMAGE_NAME:deps && docker tag $IMAGE_NAME:deps metacall/core:deps || true
docker pull $IMAGE_NAME:dev && docker tag $IMAGE_NAME:dev metacall/core:dev || true
docker pull $IMAGE_NAME:runtime && docker tag $IMAGE_NAME:runtime metacall/core:runtime || true
docker pull $IMAGE_NAME:cli && docker tag $IMAGE_NAME:cli metacall/core:cli || true
}
# Build MetaCall Docker Compose (link manually dockerignore files)
sub_build() {
ln -sf tools/deps/.dockerignore .dockerignore
docker-compose -f docker-compose.yml build --force-rm deps
ln -sf tools/dev/.dockerignore .dockerignore
docker-compose -f docker-compose.yml build --force-rm dev
ln -sf tools/runtime/.dockerignore .dockerignore
docker-compose -f docker-compose.yml build --force-rm runtime
ln -sf tools/cli/.dockerignore .dockerignore
docker-compose -f docker-compose.yml build --force-rm cli
}
# Build MetaCall Docker Compose without cache (link manually dockerignore files)
sub_rebuild() {
ln -sf tools/deps/.dockerignore .dockerignore
docker-compose -f docker-compose.yml build --force-rm --no-cache deps
ln -sf tools/dev/.dockerignore .dockerignore
docker-compose -f docker-compose.yml build --force-rm --no-cache dev
ln -sf tools/runtime/.dockerignore .dockerignore
docker-compose -f docker-compose.yml build --force-rm --no-cache runtime
ln -sf tools/cli/.dockerignore .dockerignore
docker-compose -f docker-compose.yml build --force-rm --no-cache cli
}
# Build MetaCall Docker Compose with caching (link manually dockerignore files)
sub_cache() {
if [ -z "$IMAGE_REGISTRY" ]; then
echo "Error: IMAGE_REGISTRY variable not defined"
exit 1
fi
ln -sf tools/deps/.dockerignore .dockerignore
docker-compose -f docker-compose.yml -f docker-compose.cache.yml build deps
ln -sf tools/dev/.dockerignore .dockerignore
docker-compose -f docker-compose.yml -f docker-compose.cache.yml build dev
ln -sf tools/runtime/.dockerignore .dockerignore
docker-compose -f docker-compose.yml -f docker-compose.cache.yml build runtime
ln -sf tools/cli/.dockerignore .dockerignore
docker-compose -f docker-compose.yml -f docker-compose.cache.yml build cli
}
# Push MetaCall Docker Compose
sub_push(){
if [ -z "$IMAGE_NAME" ]; then
echo "Error: IMAGE_NAME variable not defined"
exit 1
fi
# Push deps image
docker tag metacall/core:deps $IMAGE_NAME:deps
docker push $IMAGE_NAME:deps
# Push dev image
docker tag metacall/core:dev $IMAGE_NAME:dev
docker push $IMAGE_NAME:dev
# Push runtime image
docker tag metacall/core:runtime $IMAGE_NAME:runtime
docker push $IMAGE_NAME:runtime
# Push cli image
docker tag metacall/core:cli $IMAGE_NAME:cli
docker push $IMAGE_NAME:cli
# Push cli as a latest
docker tag metacall/core:cli $IMAGE_NAME:latest
docker push $IMAGE_NAME:latest
}
# Pack MetaCall Docker Compose
sub_pack(){
if [ -z "$ARTIFACTS_PATH" ]; then
echo "Error: ARTIFACTS_PATH variable not defined"
exit 1
fi
# Get path where docker-compose.sh is located
BASE_DIR="$(cd "$(dirname "$0")" && pwd)"
# Load default environment variables
. $BASE_DIR/.env
# Run the package builds
docker run --name metacall_core_pack -i metacall/core:dev /bin/bash -c 'cd build && make pack'
# Create artifacts folder
mkdir -p $ARTIFACTS_PATH
# Copy artifacts
docker cp metacall_core_pack:$METACALL_PATH/build/packages $ARTIFACTS_PATH
# Remove docker instance
docker rm metacall_core_pack
# List generated artifacts
ls -la $ARTIFACTS_PATH/packages
}
# Help
sub_help() {
echo "Usage: `basename "$0"` option"
echo "Options:"
echo " pull"
echo " build"
echo " rebuild"
echo " cache"
echo " push"
echo " pack"
echo ""
}
case "$1" in
pull)
sub_pull
;;
build)
sub_build
;;
rebuild)
sub_rebuild
;;
cache)
sub_cache
;;
push)
sub_push
;;
pack)
sub_pack
;;
*)
sub_help
;;
esac