@@ -2,15 +2,133 @@
22
33set -e
44
5+aws_login() {
6+ aws ecr get-login-password | docker login --username AWS --password-stdin 560065381221.dkr.ecr.us-east-1.amazonaws.com
7+}
8+
9+build_passwd() {
10+ echo "root:x:0:0:root:/root:/bin/bash" > $configs/passwd
11+}
12+
13+build_ssh_configs() {
14+ echo -e "Host github.com\nHostname github.com\nPort 22\nUser git\nIdentityFile /root/.ssh/deploy.key" > $configs/ssh_config
15+
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
18+}
19+
20+build_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
34+}
35+
36+download_deploy_key() {
37+ key=`aws ssm get-parameter --name "$1" --with-decryption | jq '.Parameter.Value'`
38+ echo -e $key > $configs/deploy.key
39+}
40+
41+build_configs() {
42+ build_passwd
43+ build_ssh_configs
44+ build_credentials
45+ download_deploy_key $1
46+}
47+
48+
49+update_dependencies() {
50+ make update-default-nix
51+ make update-b2b-helm-nix
52+}
53+
54+build_dmc_docker_image() {
55+ nix build nixpkgs.dmc-container \
56+ --arg client-cert $1/client_cert.pem \
57+ --arg client-key $1/client_key.pem \
58+ -I nixpkgs=nix \
59+ -o $2
60+}
61+
62+build_dms_docker_image() {
63+ nix build nixpkgs.dms-container \
64+ --arg migrations $2 \
65+ --arg server-cert $1/server_cert.pem \
66+ --arg server-key $1/server_key.pem \
67+ --arg passwd $1/passwd \
68+ --arg ssh-config $1/ssh_config \
69+ --arg ssh-known-hosts $1/ssh_known_hosts \
70+ --arg deploy-key $1/deploy.key \
71+ -I nixpkgs=nix \
72+ -o $3
73+}
74+
75+push_docker_images() {
76+ outfile=latest-dms-docker
77+ for image_name in $dmc_docker $dms_docker; do
78+ image_type=`echo $image_name | cut -d- -f1`
79+ image=`ls -ls $image_name | awk '{print $12}'`
80+ echo "size: $(du -sh $image)"
81+ docker load --input $image | tee $outfile
82+ nixcontainer=`cat $outfile | awk '{print $3}'`
83+ docker tag $nixcontainer 560065381221.dkr.ecr.us-east-1.amazonaws.com/${image_type}:${tag}
84+ docker tag $nixcontainer 560065381221.dkr.ecr.us-east-1.amazonaws.com/${image_type}:latest
85+ docker push 560065381221.dkr.ecr.us-east-1.amazonaws.com/${image_type}:${tag}
86+ echo "Published: ${image_type}:${tag}"
87+ done
88+ docker push 560065381221.dkr.ecr.us-east-1.amazonaws.com/dmc:latest
89+ docker push 560065381221.dkr.ecr.us-east-1.amazonaws.com/dms:latest
90+ echo "Published: dmc:latest"
91+ echo "Published: dms:latest"
92+ rm $outfile
93+}
94+
95+key="b2b-helm-repo-user-deploy-key"
96+
97+case "$1" in
98+ user)
99+ echo "$1 mode"
100+ key="b2b-helm-repo-user-deploy-key"
101+ ;;
102+ ci)
103+ echo "$1 mode"
104+ key="b2b-helm-repo-ci-deploy-key"
105+ ;;
106+ rundesk)
107+ echo "$1 mode"
108+ key="b2b-helm-repo-rundesk-deploy-key"
109+ ;;
110+ *)
111+ echo "usage: $0 <mode>"
112+ echo "mode = user | ci | rundesk"
113+ exit 1
114+ ;;
115+esac
116+
5117export tag=$(git rev-parse HEAD)
6−$(aws ecr get-login --no-include-email --region us-east-1)
7−make build-docker
8−export image=$(ls -ls dms-docker | awk '{print $12}')
9−echo "size: $(du -sh $image)"
10−export outfile=latest-dms-docker
11−docker load --input $image | tee $outfile
12−export nixcontainer=$(cat $outfile | awk '{print $3}')
13−rm $outfile
14−docker tag $nixcontainer 560065381221.dkr.ecr.us-east-1.amazonaws.com/default:dms-${tag}
15−docker push 560065381221.dkr.ecr.us-east-1.amazonaws.com/default:dms-${tag}
16−echo "Published: dms-${tag}"
118+export migrations="./migrations"
119+export configs=`mktemp -d`
120+export dmc_docker="dmc-docker"
121+export dms_docker="dms-docker"
122+export cert_expiration=730
123+
124+echo "using '$configs' directory"
125+
126+aws_login
127+build_configs $key
128+update_dependencies
129+build_dmc_docker_image $configs $dmc_docker
130+build_dms_docker_image $configs $migrations $dms_docker
131+push_docker_images
132+
133+rm -r $configs
134+echo "'$configs' directory deleted"