-
Notifications
You must be signed in to change notification settings - Fork 106
/
Copy pathbuild-binaries
executable file
·57 lines (48 loc) · 1.69 KB
/
build-binaries
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
#!/bin/bash
set -euo pipefail
SCRIPTPATH="$( cd "$(dirname "$0")" ; pwd -P )"
REPO_ROOT_PATH="${SCRIPTPATH}/../"
MAKE_FILE_PATH="${REPO_ROOT_PATH}/Makefile"
BIN_DIR="${SCRIPTPATH}/../build/bin"
mkdir -p "${BIN_DIR}"
VERSION=$(make -s -f ${MAKE_FILE_PATH} version)
PLATFORMS=("linux/amd64")
USAGE=$(cat << 'EOM'
Usage: build-binaries [-p <platform pairs>]
Builds static binaries for the platform pairs passed in
Example: build-binaries -p "linux/amd64,linux/arm"
Optional:
-p Platform pair list (os/architecture) [DEFAULT: linux/amd64]
-v VERSION: The application version of the docker image [DEFAULT: output of `make version`]
EOM
)
# Process our input arguments
while getopts "dp:v:" opt; do
case ${opt} in
p ) # Platform Pairs
IFS=',' read -ra PLATFORMS <<< "$OPTARG"
;;
v ) # Image Version
VERSION="$OPTARG"
;;
\? )
echo "$USAGE" 1>&2
exit
;;
esac
done
for os_arch in "${PLATFORMS[@]}"; do
os=$(echo $os_arch | cut -d'/' -f1)
arch=$(echo $os_arch | cut -d'/' -f2)
container_name="extract-aeis-$os-$arch"
repo_name="aeis-bin"
base_bin_name="ec2-instance-selector"
bin_name="${base_bin_name}-${os}-${arch}"
docker container rm $container_name || :
$SCRIPTPATH/build-docker-images -p $os_arch -v $VERSION -r $repo_name
docker container create --rm --name $container_name "$repo_name:$VERSION-$os-$arch"
docker container cp $container_name:/ec2-instance-selector $BIN_DIR/$bin_name
cp ${BIN_DIR}/${bin_name} ${BIN_DIR}/${base_bin_name}
tar -zcvf ${BIN_DIR}/${bin_name}.tar.gz -C ${BIN_DIR} ${base_bin_name}
rm -f ${BIN_DIR}/${base_bin_name}
done