git.iko.soy/typeable/octopod
on v0.9.0 help sign in
typeable/octopod/release.sh
139 lines 4.9 kB history raw
1#!/usr/bin/env bash
3set -e
5aws_login() {
6 aws ecr get-login-password | docker login --username AWS --password-stdin 560065381221.dkr.ecr.us-east-1.amazonaws.com
7}
9build_passwd() {
10 echo "root:x:0:0:root:/root:/bin/bash" > $configs/passwd
13build_ssh_configs() {
14 echo -e "Host github.com\nHostname github.com\nPort 22\nUser git\nIdentityFile /root/.ssh/deploy.key" > $configs/ssh_config
16 echo "|1|wrBnhg5iUmQx07loxtzNieZp4Gs=|zZDaK51GEIn+RiA8+US9aEKn+s4= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==" > $configs/ssh_known_hosts
17 echo "|1|YxKPhPv5F8JFFTL6W+p46Vc1Dl4=|GgqpjQ6ViPn3oU948zb4YrdDs84= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==" >> $configs/ssh_known_hosts
20build_credentials() {
21 openssl req -x509 -newkey rsa:4096 \
22 -keyout $configs/server_key.pem \
23 -out $configs/server_cert.pem \
24 -nodes -subj "/CN=localhost/O=Server"
25 openssl req -newkey rsa:4096 \
26 -keyout $configs/client_key.pem \
27 -out $configs/client_csr.pem \
28 -nodes -subj "/CN=Client"
29 openssl x509 -req \
30 -in $configs/client_csr.pem \
31 -CA $configs/server_cert.pem \
32 -CAkey $configs/server_key.pem \
33 -out $configs/client_cert.pem -set_serial 01 -days $cert_expiration
36download_deploy_key() {
37 key=`aws ssm get-parameter --name "$1" --with-decryption | jq '.Parameter.Value'`
38 echo -e $key | sed -r 's/"//g' > $configs/deploy.key
41build_configs() {
42 build_passwd
43 build_ssh_configs
44 build_credentials
45 download_deploy_key $1
48update_dependencies() {
49 make update-b2b-helm-nix
52build_dmc_docker_image() {
53 nix build nixpkgs.dmc-container \
54 --arg client-cert $1/client_cert.pem \
55 --arg client-key $1/client_key.pem \
56 -I nixpkgs=nix \
57 -o $2
60build_dms_docker_image() {
61 nix build nixpkgs.dms-container \
62 --arg migrations $2 \
63 --arg server-cert $1/server_cert.pem \
64 --arg server-key $1/server_key.pem \
65 --arg passwd $1/passwd \
66 --arg ssh-config $1/ssh_config \
67 --arg ssh-known-hosts $1/ssh_known_hosts \
68 --arg deploy-key $1/deploy.key \
69 -I nixpkgs=nix \
70 -o $3
73push_docker_images() {
74 outfile=latest-dms-docker
75 for image_name in $dmc_docker $dms_docker; do
76 image_type=`echo $image_name | cut -d- -f1`
77 image=`ls -ls $image_name | awk '{print $12}'`
78 echo "size: $(du -sh $image)"
79 docker load --input $image | tee $outfile
80 nixcontainer=`cat $outfile | awk '{print $3}'`
81 docker tag $nixcontainer 560065381221.dkr.ecr.us-east-1.amazonaws.com/${image_type}:${tag}
82 docker tag $nixcontainer 560065381221.dkr.ecr.us-east-1.amazonaws.com/${image_type}:latest
83 docker push 560065381221.dkr.ecr.us-east-1.amazonaws.com/${image_type}:${tag}
84 echo "Published: ${image_type}:${tag}"
85 done
86 docker push 560065381221.dkr.ecr.us-east-1.amazonaws.com/dmc:latest
87 docker push 560065381221.dkr.ecr.us-east-1.amazonaws.com/dms:latest
88 echo "Published: dmc:latest"
89 echo "Published: dms:latest"
90 rm $outfile
93build_docker_images() {
94 build_configs $key
95 update_dependencies
96 build_dmc_docker_image $configs $dmc_docker
97 build_dms_docker_image $configs $migrations $dms_docker
100cleanup() {
101 rm -r $configs
102 echo "'$configs' directory deleted"
105export tag=$(git rev-parse HEAD)
106export migrations="./migrations"
107export dmc_docker="dmc-docker"
108export dms_docker="dms-docker"
109export cert_expiration=730
111case "$1" in
112 user)
113 echo "$1 mode"
114 export key="b2b-helm-repo-user-deploy-key"
115 export configs=`mktemp -d`
116 echo "using '$configs' directory"
117 aws_login
118 build_docker_images
119 push_docker_images
120 cleanup
121 ;;
122 ci)
123 echo "$1 mode"
124 export key="b2b-helm-repo-ci-deploy-key"
125 if [ -d "$2" ]; then
126 export configs="$2"
127 else
128 echo "cannot access '$2': No such directory"
129 exit 1
130 fi
131 echo "using '$configs' directory"
132 build_docker_images
133 ;;
134 *)
135 echo "usage: $0 <mode> [<work_dir>]"
136 echo "mode = user | ci"
137 exit 1
138 ;;
139esac