git.iko.soy/typeable/octopod
on master help sign in
Merge branch 'master' into develop
commitf32692157ae8ec10df81df1e3e304dceca3b60ec authorAndrei Orlov <aaorlov1@gmail.com> dateMon 25 May 2020, 20:58 (6 years ago) parent12d8b46afe86e5
5 files changed+129−31
.github/workflows/build_docker.yaml+80 .gitmodules+1−1 release.sh+35−28 src/DMS.hs+1−2 src/DMS/Kubernetes.hs+12
.github/workflows/build_docker.yamlnew file+80
@@ -0,0 +1,80 @@
1+name: Build Docker Image
2+on:
3+ push:
4+ branches:
5+ - master
6+
7+jobs:
8+ build:
9+ name: build-docker
10+ runs-on: ubuntu-latest
11+ steps:
12+ - name: Configure git credentials
13+ run: |
14+ git config --global credential.helper '!f() { echo "username=${{ secrets.GH_USERNAME }}"; echo "password=${{ secrets.GH_ACCESS_TOKEN }}"; }; f'
15+
16+ - uses: actions/checkout@v2
17+ with:
18+ repo: Aviora/dm
19+ fetch-depth: 0 # fetch all history
20+
21+ - name: Checkout submodules
22+ shell: bash
23+ run: |
24+ git submodule sync --recursive
25+ git submodule update --init --force --recursive --depth=1
26+
27+ - name: Configure AWS Credentials
28+ uses: aws-actions/configure-aws-credentials@v1
29+ with:
30+ aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY }}
31+ aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
32+ aws-region: us-east-1
33+
34+ - name: Login to Amazon ECR
35+ id: login-ecr
36+ uses: aws-actions/amazon-ecr-login@v1
37+
38+ - name: Set up remote builds
39+ id: remote
40+ run: |
41+ tempdir=/tmp/dm_$(date +%Y%m%d%H%M%S)
42+
43+ # set up ssh keys
44+ mkdir -p ~/.ssh
45+ echo "${{ secrets.builder_ssh_key }}" > $HOME/.ssh/builder
46+ echo -e "\nHost builder\n\tHostName ${{ secrets.builder_addr }}\n\tServerAliveInterval 30\n\tServerAliveCountMax 5\n\tUser nix\n\tStrictHostKeyChecking no\n\tIdentityFile $HOME/.ssh/builder" | sudo tee /etc/ssh/ssh_config
47+ echo -e "echo ${{ secrets.builder_addr }}\tbuilder" | sudo tee /etc/hosts
48+ chmod 0500 $HOME/.ssh/builder
49+ ssh builder uname
50+ rsync --exclude '.git' -lr ./ builder:$tempdir
51+ echo "##[set-output name=tempdir;]$tempdir"
52+
53+ - name: Build and push image to Amazon ECR
54+ env:
55+ tempdir: ${{ steps.remote.outputs.tempdir }}
56+ ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
57+ ECR_REPOSITORY: ${{ secrets.AWS_ECR_REPOSITORY }}
58+ IMAGE_TAG: ${{ github.sha }}
59+ run: |
60+ # build docker images
61+ ssh builder "cd $tempdir; mkdir tmp; ./release.sh ci tmp"
62+
63+ # push docker images to ECR
64+ for app in dmc dms; do
65+ image_name=`ssh builder "cat $tempdir/$app-docker" | docker load | awk '{print $3}'`
66+ docker tag $image_name $ECR_REGISTRY/$app:$IMAGE_TAG
67+ docker tag $image_name $ECR_REGISTRY/$app:latest
68+ docker push $ECR_REGISTRY/$app:$IMAGE_TAG
69+ done
70+ for app in dmc dms; do
71+ docker push $ECR_REGISTRY/$app:latest
72+ done
73+
74+ - name: Clean up
75+ if: always()
76+ env:
77+ tempdir: ${{ steps.remote.outputs.tempdir }}
78+ run: |
79+ docker logout ${{ steps.login-ecr.outputs.registry }}
80+ ssh builder "rm -rf $tempdir"
.gitmodules+1−1
@@ -1,4 +1,4 @@
11[submodule "b2b-helm"]
22 path = b2b-helm
3− url = git@github.com:Aviora/b2b-helm.git
3+ url = https://github.com/Aviora/b2b-helm.git
44 branch = master
release.sh+35−28
@@ -92,43 +92,50 @@ push_docker_images() {
9292 rm $outfile
9393}
9494
95−key="b2b-helm-repo-user-deploy-key"
95+build_docker_images() {
96+ build_configs $key
97+ update_dependencies
98+ build_dmc_docker_image $configs $dmc_docker
99+ build_dms_docker_image $configs $migrations $dms_docker
100+}
101+
102+cleanup() {
103+ rm -r $configs
104+ echo "'$configs' directory deleted"
105+}
106+
107+export tag=$(git rev-parse HEAD)
108+export migrations="./migrations"
109+export dmc_docker="dmc-docker"
110+export dms_docker="dms-docker"
111+export cert_expiration=730
96112
97113case "$1" in
98114 user)
99115 echo "$1 mode"
100− key="b2b-helm-repo-user-deploy-key"
116+ export key="b2b-helm-repo-user-deploy-key"
117+ export configs=`mktemp -d`
118+ echo "using '$configs' directory"
119+ aws_login
120+ build_docker_images
121+ push_docker_images
122+ cleanup
101123 ;;
102124 ci)
103125 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"
126+ export key="b2b-helm-repo-ci-deploy-key"
127+ if [ -d "$2" ]; then
128+ export configs="$2"
129+ else
130+ echo "cannot access '$2': No such directory"
131+ exit 1
132+ fi
133+ echo "using '$configs' directory"
134+ build_docker_images
109135 ;;
110136 *)
111− echo "usage: $0 <mode>"
112− echo "mode = user | ci | rundesk"
137+ echo "usage: $0 <mode> [<work_dir>]"
138+ echo "mode = user | ci"
113139 exit 1
114140 ;;
115141esac
116−
117−export tag=$(git rev-parse HEAD)
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"
src/DMS.hs+1−2
@@ -117,13 +117,12 @@ listH = do
117117 where
118118 q = "SELECT name, tag, envs, extract(epoch from created_at)::int, extract(epoch from updated_at)::int \
119119 \FROM deployments ORDER BY name"
120− depUrls d n = [("app", appUrl d n)
120+ depUrls d n = [ ("app", appUrl d n)
121121 , ("kibana", "kibana." <> appUrl d n)
122122 , ("tasker", "tasker." <> appUrl d n)
123123 ]
124124 appUrl d n = coerce n <> "." <> coerce d
125125
126−
127126createH :: Deployment -> AppM NoContent
128127createH dep = do
129128 st <- ask
src/DMS/Kubernetes.hs+12
@@ -7,6 +7,7 @@ module DMS.Kubernetes
77 , destroyAppArgs
88 , destroyInfraArgs
99 , deletePVCArgs
10+ , deleteCertArgs
1011 , CommandArg
1112 , ChartName(..)
1213 ) where
@@ -106,3 +107,14 @@ deletePVCArgs dName = [
106107 , "-l"
107108 , "staging=" <> coerce dName
108109 ]
110+
111+deleteCertArgs :: DeploymentName -> [CommandArg]
112+deleteCertArgs dName = [
113+ "delete"
114+ , "certificate"
115+ , "-n"
116+ , namespace
117+ , "b2b-dm-staging-" <> coerce dName <> "-tls"
118+ , "b2b-dm-staging-"<> coerce dName <> "-tls-tasker"
119+ , "b2b-infra-dm-staging-" <> coerce dName <> "-kibana-tls"
120+ ]