From f6f36081f68ab461aaa35b9afade7e163fad22fc Mon Sep 17 00:00:00 2001 From: Maciej Rapacz Date: Mon, 4 Dec 2017 10:42:53 +0100 Subject: [PATCH] enhancement: Introduce continuous deployment (#199) --- .travis.yml | 29 +++++++++++++++++------------ .travis/deploy.sh | 12 ++++++++++++ .travis/id_rsa.enc | Bin 0 -> 1680 bytes .travis/id_rsa.pub | 1 + Makefile | 15 ++++++++++++--- 5 files changed, 42 insertions(+), 15 deletions(-) create mode 100755 .travis/deploy.sh create mode 100644 .travis/id_rsa.enc create mode 100644 .travis/id_rsa.pub diff --git a/.travis.yml b/.travis.yml index a1a3825..3347da5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,27 +1,25 @@ dist: trusty - language: elixir - elixir: - 1.4.5 - otp_release: - 20.0 - addons: postgresql: '9.4' - + ssh_known_hosts: $HOST sudo: false - services: - postgresql - cache: directories: - sysconfcpus - aion/deps - aion/web/elm/elm-stuff/build-artifacts +before_install: +- openssl aes-256-cbc -K $encrypted_452de06ba3a9_key -iv $encrypted_452de06ba3a9_iv + -in .travis/id_rsa.enc -out .travis/id_rsa -d + install: - | if [ ! -d sysconfcpus/bin ]; @@ -43,15 +41,22 @@ before_script: - mix do ecto.create, ecto.migrate script: -- cd web/elm && - ../../node_modules/elm/binwrappers/elm-package install --yes && - $TRAVIS_BUILD_DIR/sysconfcpus/bin/sysconfcpus -n 2 ../../node_modules/elm/binwrappers/elm-make --yes src/App.elm && - rm -rf index.html && - cd ../../ +- cd web/elm && ../../node_modules/elm/binwrappers/elm-package install --yes && $TRAVIS_BUILD_DIR/sysconfcpus/bin/sysconfcpus + -n 2 ../../node_modules/elm/binwrappers/elm-make --yes src/App.elm && rm -rf index.html + && cd ../../ - mix credo --strict - mix test +- cd .. notifications: email: false slack: secure: 0wrGLWdpp9HLujCNNwJnPvmfQmK3phQXbUj/EZ/x/YROEp1TdaDzLnXI4Qo6JyZszmH+zFb3S58iiOUrX2oCJFhdUGz/tN8YSBQBdMDPhi602BfarK4dfOSsnMq60KYzEV+zkM3GQFXIl/UudeZ5AhEpEn4tF6HrjSYqMOAJkjv4REesdY/GLDVSFfNF/KfXhd1afsB5IA5O0VMERr247aCtnr9pbHuE6yqicZCuw0aU41e3zPRm8BVUIP1np5jRaGCJs7Vpx/5Q+SpdTjqdtgB05APvHveupDJrGV2uVH2iXScxHIP5SZOJbaaUxkIvjjrMN4IW3IiFDjxDuN6PAFZfJ3mpTowtDl96t4fgOfTM9a/EVv7OlPeQAVkOvHIdfsZ2PUpGV7+yWN1RssyiaYxcHdJ825on2jb+lj7lhsZmlGDfa/8GhkPQuKJr/msaXaposYDa42460hinn4UPHGrgO4AuGrXF9Cc7/xbGIdAkHogsswYy1X2XDf7aDR5yktgz/sQ1aHnvF9K1SzopDd1TS6YjLpgN0Y4kqWrUqWxHM6Ne1mTYLTREfbs+49+oPaq+n+HilFB0BAjCpwtwvKi+VhPgH5ZCSYL0hqiYpsUNL2Q3oWUHra1YlPIc/2QtIf6E1XtpqADRqnI/Ow8XkTgi4xWq2gKmHn5jEZhW9Ng= + +after_success: +- | + if [[ $TRAVIS_BRANCH == 'master' ]]; + then + .travis/deploy.sh + fi + diff --git a/.travis/deploy.sh b/.travis/deploy.sh new file mode 100755 index 0000000..b14a399 --- /dev/null +++ b/.travis/deploy.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +eval "$(ssh-agent -s)" # Start ssh-agent cache +chmod 600 .travis/id_rsa # Allow read access to the private key +ssh-add .travis/id_rsa # Add the private key to SSH + +ssh -o "StrictHostKeyChecking no" $USER@$HOST /bin/bash <WU_K;?&8+^Qn z(Ltw-S8N{CW`Go2{6bxzDt>J-T(cWy1}=Y}^&1ZG3fd;tueVJ&e0KI5+Yxnw7`|WI@7o~DB0iRh}dClYv?<#D!RdFTnd8#^q9q;$~{3HFcj+yZiEq$_U6 zmTUF^P2g`mQAvw8Jyaul#pFxn-n*8zh{vdwACwJ^_kRjZ!JnBdRey1Y{~fQYOOElZ zVKQmSLI}^R>EY)f18lrv;ZO1KutgrepC~Zel-k6(#!csK2KFA^3BYoqKiOLUky9yy6#VkFAjeX2OLAO-3sQK zLnhh9+^{0nk2XPgoN>r3J#gwdF=jND2?a-705Qhx$sz}1H{(f!YpV>mbRDD^S4HLC zYrC@+vRcl^JoJmM>ceB9Z@qA1kz<7C9(Gljm^b;VRfr04LP{O6DjohNY)797;JwtA z{f6~VXsK|Hxy)UTAftWs$KXwmE(V)E3$T*z!jC-Na_iSkP9ENJWyEyI>bCRk4dJ2x zO@*Bvj_q9%?8AXpW2LD?9&hgE3?k6jz=1~~-p4_6D=Q3L$WO%Xq>F0XQFTg`HyGjf z?z56&KtwW)F_A(yc>Fa6!K&46SUnSA_Sd*4y z3%pvBXGXzcTHw2($&Y{f>4XftN(TO6~BF47# z=8*UHr?&Wc_1i~#2C3v^+nFdiyv1~)#akD2G~yNQL69XZfOdHvcrUpVpUO}$T7n_?30j7mTG*;ueTJUh~dW*kqUT~aTghu7*au;Wb}OyKl6t31|LSpB-t zm8x*QpS;rce&^7InKdhy5DTz3Z!_)+p_sInKgcb(olnGOS7Jbb36#=xYeGy$f2s8F z2zh2)Xg|}Q!uX^*LTe_Z4^Gc@E^Sq?MtqO29OeTgz&}5&lL1tWi*}{l^IQcL28axh zC(W8b);bYy+)V5j&kGVZIyu}oJxFd+hM@pNZ`rh{3pe|=_k#dCkmI24?3#%|a(bHk z91W0vdB1TPQkQp_HZ~+^$c=}DW4u>L$2(SfDAXKFJq;7M$^V-{%QjH(S{tfQXvIy_ zmBuG=Kw7k)w)GMT-R+^aUytUE_6;o0_r!pr!nAjKv6^?e#bEIQ94{(ND**1~UheoT z*ZsMaUKchIPS=rEv1@Q*UKgLz)P!Ey9n41W@8`H`TLpRSd9y9Eh|fxu+Sf;=pVY+( zL+s9qqG%yX#6sM?xQ{aEqZ*{2^Sxca1*1L^78CbWZYmsx02C>Bfk|Rx>Cebf29WO_ zZH}h%zYH~s7H^5JpoFIaSaa!mY>Dd{&%cz6cDN0f?7=6AMZ?|P@DgH3f^V-ZPL z{ldJW$FL++#+m1k432P*Y>2t&UfMnG9bYH&Y~$RSWXqOdHIW5mcmhk`a$>lc2n%MO zUhT|(CDKjZ9Wic)lGZ}!H0#1h=Ewc|j3^bq3s0Mrf~C_Anqo~!wv&}@T#(g`))VGoB3bOn0U8_Qj`bC9(9=FuI1Fdgi`*MT zo8x((J4g)E7M9OPh!pBr)O1Yh8NCw4VTqS3HxkjHy(c}e9vvlQJvvKcSd7Z$-+#8Y abdmVyt@ee#<2X-PU?Hqk%ffRvHc4OiK1Xo? literal 0 HcmV?d00001 diff --git a/.travis/id_rsa.pub b/.travis/id_rsa.pub new file mode 100644 index 0000000..157abb9 --- /dev/null +++ b/.travis/id_rsa.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCYbGhu5vsQvVWnE+3Os8gSBhJD6euduJ32z6V0XylnXnzcCuH+xBE2qklh3JyNpheBZ+ZHv98m3Y5123WysKFQSeBd2r2ykqwlqiePpddvbMteAlOXoiCGl5EzcJ5rqRrUu7teyHC/DJr1X8HGUHTIAS0HfeblfaYLJyka/YdxqnkUb1sMJcTP9u7rZyCY8Nh/EcP2Ww2h0dYVNecJKz9lsZbDT2hhgillzaKLwklQEXlUlo1LVPevcltl0XpKC6zx2jISfHY2OsABkCLY8nM6PwrOSzJd4nzPOZ5TIeouJhcYurxBW/nyIQfnaDBK32OStFez7uyHDbbmk6IvSbd9 maciej@Haven diff --git a/Makefile b/Makefile index b0f36c1..8ca860c 100644 --- a/Makefile +++ b/Makefile @@ -88,12 +88,21 @@ deploy-stop: deploy-start: cd aion && sudo rel/aion/bin/aion start +deploy-restart: + cd aion && sudo rel/aion/bin/aion restart + deploy: ## Create a release and run the production server - kiex use 1.4.5 && \ cd aion && \ MIX_ENV=prod mix do deps.get, compile && \ npm install && \ brunch build --production && \ - MIX_ENV=prod mix do phoenix.digest, release && \ - sudo rel/aion/bin/aion start + MIX_ENV=prod mix phoenix.digest + + # Try to shutdown running server, continue regardless + @-sudo ./aion/rel/aion/bin/aion stop && \ + ([ $$? -eq 0 ] && echo "Successfully stopped running server") || \ + echo "Couldn't shut down the server, apparently it was not running" + + cd aion && MIX_ENV=prod mix release + sudo ./aion/rel/aion/bin/aion start