From f102046ffcc045c86dc117bacb015ec13d95042d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=A4fer?= Date: Thu, 21 Mar 2019 22:34:37 +0100 Subject: [PATCH] Install kubectl and deploy --- .gitignore | 1 + .travis.yml | 12 ++++++++++++ deployment/.travis.yml | 25 ------------------------- deployment/kubeconfig.yaml.enc | Bin 6064 -> 0 bytes kubeconfig.yaml.enc | Bin 0 -> 6048 bytes 5 files changed, 13 insertions(+), 25 deletions(-) delete mode 100644 deployment/.travis.yml delete mode 100644 deployment/kubeconfig.yaml.enc create mode 100644 kubeconfig.yaml.enc diff --git a/.gitignore b/.gitignore index 1ebe41f06..cafaf74a0 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ yarn-debug.log* yarn-error.log* .yarn-integrity .eslintcache +kubeconfig.yaml /.github diff --git a/.travis.yml b/.travis.yml index 747a00143..8359c30be 100644 --- a/.travis.yml +++ b/.travis.yml @@ -47,8 +47,20 @@ after_failure: - chmod +x send.sh - ./send.sh failure $WEBHOOK_URL +before_deploy: + - openssl aes-256-cbc -K $encrypted_44f54ef0bc46_key -iv $encrypted_44f54ef0bc46_iv -in kubeconfig.yaml.enc -out kubeconfig.yaml -d + - curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl + - chmod +x ./kubectl + - sudo mv ./kubectl /usr/local/bin/kubectl + - mkdir ${HOME}/.kube + - cp kubeconfig.yaml ${HOME}/.kube/config + deploy: - provider: script script: scripts/docker_push.sh on: branch: master + - provider: script + script: scripts/deploy.sh + on: + branch: master diff --git a/deployment/.travis.yml b/deployment/.travis.yml deleted file mode 100644 index b39322894..000000000 --- a/deployment/.travis.yml +++ /dev/null @@ -1,25 +0,0 @@ -language: generic - -before_install: -- openssl aes-256-cbc -K $encrypted_87342d90efbe_key -iv $encrypted_87342d90efbe_iv - -in kubeconfig.yaml.enc -out kubeconfig.yaml -d - -install: -- curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl -- chmod +x ./kubectl -- sudo mv ./kubectl /usr/local/bin/kubectl -- mkdir ${HOME}/.kube -- cp kubeconfig.yaml ${HOME}/.kube/config - -script: -- kubectl get nodes - -deploy: - provider: script - # TODO: fix downtime - # instead of deleting all pods, update the deployment and make a rollout - # TODO: fix multiple access error on volumes - # this happens if more than two pods access a volume - script: kubectl --namespace=human-connection delete pods --all - on: - branch: master diff --git a/deployment/kubeconfig.yaml.enc b/deployment/kubeconfig.yaml.enc deleted file mode 100644 index e8db7817185fe140b51a93341b572acb558af03e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6064 zcmV;h7fj(f%QIkoPPXHT>1ujr)^^fYyiYcW##2i&5)t?08Cpd@>4kVOb3e-o3VBBk5 ze|~&Q#MqoLcSAwm*6zBm~GY&-|x*L1UuC-6v*k{tqym=m$;7NjR%6_mJ}wGxb*9Z z;`ptz~NbRF5 zn+z5t!48qasJ>8KVBO+XapGp8v1Y4DE~Ndm`vGI2uGo_Nztoxz%{@M6&N_SS-v!%= zmc*Qip>u)YKN3;%$U4EeVc1N{O%1N!j-D761J4lYWqz1N{N{N zq-}r=E`REmKGlzHl%9(MJ)=@Zs;OS?f+#kJV8pty1aMlIs@8~-pO${YF)LtIh&a%* zbSp*BI-|;3tHLU;+{MF8>CPLh^2i6pktd+y>PAk*zA)`@^+ZHt!cfe_OS2`JoyS|L zJ6XN@e{ObP-;<0Px*l9w16?En;YqhCVR~M+f54#Sv}xy7S$5Tomem&t(jQTZNQk1| z{(4ztZl0F)zAMP$#?VLdFp)PS#7f!8OsuRc2&eG`z+mBC6453g%y_sSKu}M}gJm^0 zoR{cL!I{COash{7k&GozQ;=!=B?ytfdE#y@g?{s!#6}TU2R3QQ-%PJYnnz0|a*}uI z5n**SWJr)_<_j{mf}XBW<;!>A$EJm^%$3g?*>Tkqdt% z38**Z;ZEM^!Pe=j>~||48gGjK_kN(6`1Rw*Kt!`;!8%LtvNDzW87&#?8geMfQ3^s& zOM|fi1h34Srbt@qHplaqM2q1KfjU=a`!}3Lh9)H_@K=Xb2n64eodZ=ZLYXO5W+5a8 z_uA0wH`*%TUqUbpZH=4~F zPkMq6{Gtn&SPXFmIM|{222OOR>~s`)!_4S+S~2t-J*?BJY7kBR%N;YFn6 z3w*n%3Jp!KIRV!YxIQ0?VuImD6=Y%cMHhX0(#*1F|Hg~;VC9aog)9+4825AR)%i8$ zzwrhnJZ@O8==&rC?s2^-d%}(DM76FCi*ENnq^TfZU=5GS{`d3JX{T=1T&(4;LonQ|3$|1!jYAI*5Y7vp&~Nr~hW zxNV+#-En(_S3Vi8CvoTB>7I)HZXmNC$Nw6i?*vqML^1PS$u1Y4GYz7_X2q~4^?{-* z9QMUt$TM)i+Lb=~{7?GcfsQ4aI(x&z*X2y1fXy#Wlq_h|GT0v_7KTs~wsmqk1gAm_ zZ8I>Uc&S14In_;~H_H{pc2OhHTcm;yA7_EhNzLpKrwx4Vw0nCSDktUfeA=i{``Ng+ z$nW>^X0DKXHw{HuXT#qo+VeJ)>r&lmuNh6oIrQM)KJ+-Wf%SZ$x3OW))0%^JRS6<~ zfSf%n*2d5#A6phROIFpSFx&Z}ahj57%g1sk@(w-r4~HdVffTZ<@h{Ih&r;8IQlt<7 z-zO5X6Isq^2P*K1_cgAW*&%}DzIhg+xJ1=}ImH|>gVxGH~GLEhfc{9`#4C>^Ff=05%w#`j- z8DK8d!*#X_QdRcY0k#yJ2y1h7i1x;1_%@+0TJ;mPqG?I+gVTRW&_5F7AeB zy*fTHdyRQmFRXW?I2zsoM0+De>P`G#fGX&7{b8sU>mnhPi$Xq$FtYhPYot1MgQ#uP z)sP9C^c~`o3x*uf@Bud7E4PVmmtQFlJGAc3_=5y(OBu(M&LHtV2q((HRE=m=H*Bfl zg9Diybd$R4BwviGZNJgg7bEt2=G+^;(}Pe0`mPuBYpLH*ihaX#lPx!wgf+sSc&Rc` zfb%DaIsbySd4sJu9W;VLJIDm?894q>j^N9Z+JgGfV zbSjUwd>Wi>MThGJtZ--a$9aEYTTT!SAECT|%l^CzHP`>T$kA$|N^g2eLF#Qp#AL5t z*O<5H9f?T!0{vOz;_|8*7P;i7vxP$JU0-WX_p$6!aM9VO$t@397RCl5&m9$=ZfnSx zD>wf!iX`o@)^Us#OMKT0ZftLul8uB@y8d}!r}m+fH+Y*4#6UI0Og(9wX~Ww$DB%s< z|3OM!2DBFVQ|bX{{b^Ngkk!dXv*=P%&clQUmFjujSZ)JzTuYiFJ)G|b74f9gaANiE z+4Y%AV)L4)>8IM-8URQCA_yLwygebPx(iZvhFX+drfQ8&>bYj{T}7;G@mB4JwuENU z*gpduW8VKwDBs1}37;lk7Q@LGilkNa9#TEy%>qz%KuHmb!|k4Pe&@oJe}&*QYVoAR zMP>)Rn!9B`G1~RnQb=+WraPS_nPyl?vnGffqa^m^RjzK0OqG4qe%%S-F;Z0A*|JRm z$~X(ky{w;VY-M70<2h5FfZiCBFEb1Kh)b4;G7qlZ#Ap<0nD?bydSDemH(4NH3 zEkk*_i39pps*J49ozQN6bMey%E=Sq8#cIgFhEk;mkD?XH+4xd-v}$tb)N61>I+mfV zY^pzq)^N+D;45B>bujtw7uDr`niW4#>VtKCYU+KiT7c}OvY(u&A(BC>0&v4Ph$<(J zmB=Y|DCx7|bPw84oA-G!Z+6zw)!kFVucTDgrHPGhtN|6t_3(FU?7r^8Z|O;XE1T{P_@%yE(==-%WwB1ElttdVc-4H#?5hK% zx%p;quC*H;xa<6~+zKgaLA?vr@{UiUbvzLxiQo#oHmT~uL`o&{S51Onx7xxlv@3N@w>jl`yRgEt%H zSlh;8zK+kbeS5p+Cw$UHz_%X5)}A1z2e2#AnS^F|6Vd4lg(;w0JR75CQU`b7je0yL z8v~ru153gz8r0y1eXR7q!l%f3t*fjHryAnws*C#tHx$glptf}mLmmus`;{qg5dJ>{ zn@T$_2VNDTxCY)79AuAhYBC+YNr{uUD4QSn{)HX8uDUM)kY$g7HJxchJ} zr=F(aeS_o#12~rfX=^MV6okuiEe?H0Tzp>sqw!vY3#wLkU<}t4?<_fv-?54Gbsvg4 zk`0Yxm=k*}$98gJ-!QNmHaKQjhH8iX_)q>I8+AQqcD>i0c}jjNm-*Ef)Wh)8dM%l; zrMb6dVPdO9?8Ys++rzf-O6>_?SE6lFmDx>*1wU@D(J$_2w{-Q&pBjsynp5IyM=vuW z7uc|tasqp(Om1|j7R}Bf-JwSo76NxR{dKwji7~!h+iR_;390Dh{!!sKOm(*7kdDyB z?%y@1&@|Rj%F(F}lme{X|8gQrIORVc=gY&k>|Pzu6Ryp=h7^<55XdfvlG@@wISr~P z9o?Ja6Swin3Wz93TF42SPS)m;YC=Bcr6_*v^iu`)m6)(>vtCjJM21#205`5QZ}BNV z6#n$+^pXtJXRsq5n6TF0b5f(e6d@%(YzxzvoPuRCH{7KVZek;jMJD^@i0hxWID0Ui zob1DcLYSvDX#m^V-zoR_D+N2V)LwmVr+A28QHJS{nr*g?5~U-Ry@eqKUQPJUc~?(u zV;s~L;L$uWPOKh5`M7V|)&%pM;gzy!Fw+=CY>+dLw`F0#2x^pzQGN6u$<{1?poNDW zuy|BCC-@%LXtRX(7>qrc0b-bfOI@{;mMOVFstky%7j-Q}Fasg}l1mY>{LR`Ma?k z=!1NEQ-1=2k_X0d?Hc1}X<&;p;G`Qr>ZqkRtNX_y-BE*$av6>@S0n+#4cYL z_JkNUaM!KZGGOn(kMhJspKo_KaAkD%D9@7*T3`-k4Gcw3;XhDQj# z{T-4jlOt(u5IU>mW!~~mvqWUzFRU-leQ1|=?8BG7`f4L9eOIspVjTYsuGllNPZZJ_ z^kWsGnSpm8Dbz$QHPaYRPD_Zen*|S@PP-R~mch}XBsaLfHPQy?Fk%l>%gx)02d5uK z>*6*sCn1JbmH17>1|!yXs^iQhu1#4~l21!#swV6dXI+p;q})03V2d|o#IbruYUlhN zAgvXQ5 zT^V5(7zpUCC4OQ?kxgfw6c=-TxWIM{%W(Hj)9P)sxBXOP=O_yPA7>EObyCYTkG%I193Dn;HtjTfnnBs(xnx{e(#mT$=2pDl768&=RukR z?0a6pfSxkbC@#jX+{8;;H)=f|HM`X!YHI>3$|)3}itiC;R;P|p*hH;)=2WV9MvLI; z-{kq~AHLFC#v1u@eEy5Soyu)k!+0>}R>ydqRLd@G@{ULc@bbz`u{IqTPrA?UIQMdPlp&kJfl_msxki4 zFA+(-AcHpaU|p5!y?6LugHxg?0oe&vH#vH;-kjj+pGQ!9*<05{KY%uvQ}TAvhw^l8e=Y>YUKO+ZD;0NB8TWu%=kOUEGlcEn!PdRffrOCfWqiE8j4kJ}6! zc#ixs(`dLn;3e-F*k4_YOr)0p8%VrZ3Av|44qrmjy7G;yIq(MZ-Vp^{Rr7K>x~J44 z9HThNqhP!xfNZ%Sj{Bb*_zVaS`hCXQ6#W5txy0|Y@Zt8(QPQ1fuGHrO&Rt|1 z$U`;q#?V092W|y*@+4GI&l{seUi0*f`a~Ow5fF^|iwJ^F%e$u-3fz?Ja!T0Cd`cwOl@r~_wZ3veuNMn@*7 zNDzK@#*2Q1!n8Z?hbR7PUMjHrS~h33BxYVvI%2CH<*aOQm6tct%n{+X>WS3sKt@?9yID6^Q^>>gQ> zh3Rw!ohsL59t?jG>L9dYH_?93#L-0X@pd%4Y8^rF037qH0){>pz0hak+W}nO zN0(R8Adq}O+zN152p{Bq8-Fk8{3{zD86*H4gas}eXqNdH*z0s6v1I?Hex+qkSKmRU3m*u}ZVRq3_R<=!wox|x@3X&k0Qz{vLl!*| zbnLTLILAh7Tejc<%a8}ULY02958m!JPxzl+1POGfKIQ)&-SvvP1p>H^lA&j-9 zV^Uo4!@m;gY)?KZ9E10muh)gt7EgI@{204tgTxhF-JIBHY;V6=HUmC;H<7%{S~(z9 ztlJ?QYoNSv?AN{|lmB^cy&p^25%pFGJUiIXf815<@o15g-#Y$ZRWqOE(Ea{n!BP2p q`$ykTHYU6&Z#z<)s=%UBd5@930JufHtKPGmYbb1=qmhuHUogbjSkUAE diff --git a/kubeconfig.yaml.enc b/kubeconfig.yaml.enc new file mode 100644 index 0000000000000000000000000000000000000000..c231b75851010a91b237c66ad468ba61cc9f68e4 GIT binary patch literal 6048 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