{"componentChunkName":"component---src-templates-post-template-jsx","path":"/works/posts/2020-09-02--001","result":{"data":{"site":{"siteMetadata":{"title":"Blog by Eunyoung","subtitle":"작업 기록 블로그","copyright":"© All rights reserved.","author":{"name":"EunYoung","twitter":"#"},"disqusShortname":"","url":"https://ssongey.github.io"}},"markdownRemark":{"id":"0661fd71-c9a3-50b1-bd91-43094ce69e1e","html":"<p>jenkins에서 github hook trigger 발생 후에\n빌드 단계에서 실행 되는 스크립트를 작성하였다.</p>\n<p>\n  <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/devHistoryBlog/static/f538019b6bb183f55b927b2e3f38fd88/36bb5/001-01.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n  \n  <span\n    class=\"gatsby-resp-image-wrapper\"\n    style=\"position: relative; display: block;  max-width: 611px; margin-left: auto; margin-right: auto;\"\n  >\n    <span\n      class=\"gatsby-resp-image-background-image\"\n      style=\"padding-bottom: 126.25%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAZCAYAAAAxFw7TAAAACXBIWXMAABYlAAAWJQFJUiTwAAACKklEQVQ4y51Vi5KiMBD0/39w11PLtRYDJCEQkIcv5qZH4uJdobhWtRNi7PQ8WdR1TUopStOUsiwTG8exWGst7XY7iqKInHO03+/lN+yPLaC1ljOLruuoqipBURT39eFwoKapGQ01bSu2ZfsKCxwsCk9Jkghwq9aGjDFyI5TiGRecTic6Ho9PMRAWlLJkkMFtA9LB5czlchCezIEQVj4f4oD4JVSyy+NDUDabsKpb+qNqVpORY3VBJVTD5TzPBa9cvbt8qBtSthQiECCesGVZUuG9EAPtzMQsWmSxrpgk5+zeAh+CH9ZvuYw/ggyqrLGTN88mxO2r1Yo2mw19fnw+qALO5/N7WcZXzTWGzKJrvC+o9CXD89pLQlDYgXRWHeZoKxVzYaONlBQ4yiiEAmfmqhRCKDEcP2tvHZIN5dN1R7per/8kBUq6SbU3hewWmhtkxmjuDidrXBRC8ZP9QPqs9ZgQBCBF74Y1XFfD5AlDY6xw0mXEUMZRZkWtG7ojAM8u467hAg/qJl1GjcGlQtwrRxPl9F8JzSlwKWw9TBpsvGqtWYSb9Yq2X18PbfdbCCHieCtqL0MBwxTPv4F0inMZbbdbWi6XtF6vZZQhoyD3Q8fMhRCG2YdMI6tp5OlbpZRaLYdwpu97ulwuUujPIIQggZpgURohASB653MnHL/tHj/9D/pHi8smFY5fpYoHRRSnlPDbLk41Rey+SjSvDXeOln3sWe55TKcw1YG/i+GI0uTlayQAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n    >\n      <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;\"\n        alt=\"001 01\"\n        title=\"\"\n        src=\"/devHistoryBlog/static/f538019b6bb183f55b927b2e3f38fd88/36bb5/001-01.png\"\n        srcset=\"/devHistoryBlog/static/f538019b6bb183f55b927b2e3f38fd88/8ff5a/001-01.png 240w,\n/devHistoryBlog/static/f538019b6bb183f55b927b2e3f38fd88/e85cb/001-01.png 480w,\n/devHistoryBlog/static/f538019b6bb183f55b927b2e3f38fd88/36bb5/001-01.png 611w\"\n        sizes=\"(max-width: 611px) 100vw, 611px\"\n      />\n    </span>\n  </span>\n  \n  </a>\n     </p>\n<p>한 서버에 dev/ prod 두개의 서비스가 다 올라가야해서 스크립트 실행 시 parameter를 받는 방식으로 진행하였다.</p>\n<p>if문 작성이 왜이리 오래 걸렸는지…\n관련 내용을 기록 좀 해두고 써먹어야겠다. </p>\n<h3>작성내용</h3>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">#!/bin/bash\n\ncd frontend\nnpm install\nnpm run build\ncd ..\n\ngradle build\ngradle bootjar\nif [ &quot;$1&quot; == &quot;dev&quot; ]; then\n        PORT=15000\nelif [ &quot;$1&quot; == &quot;prod&quot; ]; then\n        PORT=15118\nelse\n        echo bad parameter\n        exit 1\nfi\n\nPID=`ps -ef | grep V2G | grep ${PORT} | grep -v grep | awk &#39;{print $2}&#39;`\nPID_LENGTH=${#PID}\nif [ ${PID_LENGTH} -gt 0 ]\nthen\n        kill $PID\nfi\n\nBUILD_ID=dontKillMe nohup java -jar -Duser.timezone=Asia/Seoul ./build/libs/AutoCrypt-V2G-0.0.1-SNAPSHOT.jar --server.port=${PORT} --spring.profiles.active=$1,swagger &gt;&gt; ./logs/server.log &amp;</code></pre></div>\n<h3>참고 내용</h3>\n<ul>\n<li>\n<p>문자열 길이 구하기</p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">${#PID}</code></pre></div>\n</li>\n<li>변수의 값을 참조할때는 ${변수이름} 처럼 중괄호로 감싸주는 습관을 들이면 좋다.</li>\n<li>\n<p>if 문 사용법</p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">FILENAME=&quot;/home/test/temp&quot;\nVALUE=10\nif [ ${VALUE} -eq 10 ] ; then\necho &quot;VALUE is 10!&quot;\nfi\n# 아래 -a (&amp;&amp;) 조건문은 아래와 같이 변경 가능합니다.\n# if [ ${VALUE} -gt 5 ] &amp;&amp; [ ${VALUE} -lt 15 ] ; then\nif [ ${VALUE} -gt 5 -a ${VALUE} -lt 15 ] ; then\necho &quot;VALUE is greater than 5 and less than 15!&quot;\nfi\nif [ -e ${FILENAME} ] ; then\necho &quot;${FILENAME} exists&quot;\nfi</code></pre></div>\n</li>\n<li>\n<p>조건문 종류</p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">비교식\n[ -z ${A} ] : A 문자열의 길이가 0이면 TRUE\n[ -n ${A} ] : A 문자열의 길이가 0이 아니면 TRUE\n[ ${A} -eq ${B} ] : A와 B값이 같으면 TRUE\n[ ${A} -ne ${B} ] : A와 B값이 다르면 TRUE\n[ ${A} -gt ${B} ] : A가 B보다 크면 TRUE\n[ ${A} -ge ${B} ] : A가 B보다 크거나 같으면 TRUE\n[ ${A} -lt ${B} ] : A가 B보다 작으면 TRUE\n[ ${A} -le ${B} ] : A가 B보다 작거나 같으면 TRUE\n--\n[ 조건식A -a 조건식B ] : 조건식 A와 B가 모두 TRUE이면 TRUE (&amp;&amp; 와 동일)\n[ 조건식A -o 조건식B ] : 조건식 A가 TRUE거나 조건식B가 TRUE면 TRUE (|| 와 동일)\n--\n파일관련\n[ -d ${A} ] : A 파일이 디렉토리면 TRUE\n[ -e ${A} ] : A 파일이(노드, 디렉토리, 소켓 등등 모두) 존재하면 TRUE\n[ -L ${A} ] : A 파일이 심볼릭 링크면 TRUE\n[ -r ${A} ] : A 파일이 읽기 가능하면 TRUE\n[ -s ${A} ] : A 파일의 크기가 0 보다 크면 TRUE\n[ -w ${A} ] : A 파일이 쓰기 가능하면 TRUE\n[ -x ${A} ] : A 파일이 실행 가능하면 TRUE\n[ -c ${A} ] : A 파일이 Special character file 이면 TRUE\n[ -f ${A} ] : A 파일이 디렉토리가 아닌 일반 regular 파일이면 TRUE\n[ -S ${A} ] : A 파일이 소켓이면 TRUE\n[ ${A} -nt ${B} ] : A 파일 B 파일보다 최신파일이면 참\n[ ${A} -ot ${B} ]  : A 파일이 B 파일보다 이전파일이면 참\n[ ${A} -ef ${B} ] : A 파일과 B 파일이 같은 파일이면 참</code></pre></div>\n</li>\n<li>\n<p>비교식 옵션 설명</p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">-eq : EQual\n-ne : NEgative\n-gt : Greater Than\n-ge : Greater than Equal\n-lt : Less Than\n-le : Less than Equal\n-d : Directory\n-e : Exist\n-L : symbolic Link\n-r : Readable\n-w : Writeable\n-x : eXecute\n-nt : Newer Than\n-ot : Older Than\n-ef : Equal File</code></pre></div>\n</li>\n</ul>\n<h5>참고 사이트</h5>\n<ul>\n<li><a href=\"https://louky0714.tistory.com/entry/BASH-Shell-%EB%AC%B8%EC%9E%90%EC%97%B4-%EA%B8%B8%EC%9D%B4-%EA%B5%AC%ED%95%98%EA%B8%B0\">문자열 길이 구하기</a></li>\n</ul>","fields":{"tagSlugs":["/tags/shellscript/"],"slug":"/works/posts/2020-09-02--001"},"frontmatter":{"title":"Jenkins 빌드 후 실행 스크립트 작성","tags":["shellscript"],"date":"2020-09-02","description":""}}},"pageContext":{"slug":"/works/posts/2020-09-02--001"}},"staticQueryHashes":[]}