<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Jamie의 성장기</title>
    <link>https://jamie95.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Wed, 26 Aug 2026 14:02:00 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>jamie.</managingEditor>
    <image>
      <title>Jamie의 성장기</title>
      <url>https://tistory1.daumcdn.net/tistory/3477346/attach/dc9220a4c8374ebcac631b08a23acc2c</url>
      <link>https://jamie95.tistory.com</link>
    </image>
    <item>
      <title>[H2] H2 DB의 특징과 사용에 대한 고찰</title>
      <link>https://jamie95.tistory.com/188</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;a href=&quot;https://www.h2database.com/html/main.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;H2&lt;/a&gt; Database란?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Java SQL Database&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;주요 기능&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;빠르고 오픈소스인 JDBC API&lt;/li&gt;
&lt;li&gt;In Memory DB(인 메모리 DB)*&lt;/li&gt;
&lt;li&gt;Embedded mode(내장모드) &amp;amp; Server mode(서버모드) 지원&lt;/li&gt;
&lt;li&gt;브라우저 기반 콘솔 프로그램&lt;/li&gt;
&lt;li&gt;2MB정도의 적은 용량으로 설치 가능&lt;/li&gt;
&lt;li&gt;ANSI 표준 SQL로 여러 &lt;a href=&quot;https://www.h2database.com/html/features.html#compatibility&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;호환성 모드 지원&lt;/a&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;DB2, Derby, HSQLDB, MS SQL Server, MySQL, Oracle, PostgreSQL, Ignite&lt;/li&gt;
&lt;li&gt;단, 다른 DB와 각기 차이점이 있기 때문에 잘 비교해서 사용하는 것이 중요하다.&lt;br /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;실제 예로 H2에서는 AutoIncrement 값을 여러 테이블에서 이용하도록 설정이 가능했지만, MySQL은 불가능했다.&lt;br /&gt;- H2는 Column Default로 LAST_INSERT_ID() 지정 가능 / MySQL은 불가&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Embedded Mode vs Server Mode&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Embedded mode(내장모드) : Application 서버 실행 종료시 데이터 모두 휘발&lt;br /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;H2를 Application과 동일한 JVM을 이용하여 구동, Application이 종료되면 Data가 모두 손실(휘발) - 영속적이지 않음&lt;/li&gt;
&lt;li&gt;JVM에서 데이터 연산에 사용되는 쓰레드를 인터럽트 하지 않을 수 있어, I/O 수행 시 I/O Handler가 닫히면서 데이터 손상이 일어날 수 있음&lt;/li&gt;
&lt;li&gt;테스트 코드 실행시 휘발성으로 동작시키는 경우가 많으므로 해당 모드를 많이 사용했음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Server mode(서버모드) : Application 서버 종료시에도 지속적으로 해당 데이터를 사용
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;별도의 JVM을 이용하여 구동 (localhost:9092) - 영속적으로 사용할 수 있음&lt;/li&gt;
&lt;li&gt;여러 Application이 해당 H2에 동시 접근 가능&lt;/li&gt;
&lt;li&gt;Application과는 TCP/IP 통신
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;내부적으로는 Embedded mode와 동일한 실행 방식을 갖지만, TCP/IP 통신으로 속도가 상대적으로 느림&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;H2를 썼을 때의 장점&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;가볍고 설치가 쉽고, 관리가 편하다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;프로젝트 초기에 DB에 대한 고민을 조금 덜어줄 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Unit Test를 할 때 용이하다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;하지만 이 부분은 Mock을 이용하는 것이 더 좋을 것 같긴 하다.&lt;/li&gt;
&lt;li&gt;왜냐하면 통합테스트의 경우엔 H2를 쓰지 않는 것이 좋다고 생각하기 때문이다. (아래 내용 참고)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;운영에서 H2를 썼을 때의 단점&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;대규모 프로젝트에서는 안정성과 성능이 부족&lt;/li&gt;
&lt;li&gt;백업, 복구 등에 대한 기능 부족&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;운영이 아닌 경우에만, H2를 썼을 때의 단점&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;H2에서는 지원되지만, 사용하는 DB에서는 지원하지 않는 기능이 있을 수 있음.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;기능이 지원되지 않을 수도 있지만, 문법이 다를 수도 있음(호환성 모드가 100% 모두 지원하는 것은 아닌 듯)&lt;/li&gt;
&lt;li&gt;이를 H2가 아닌 운영환경(Dev, Real) DB에 배포해보거나, 쿼리를 날려서 확인해봐야 알 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;멀티 DB를 사용하는 경우, 부분만 H2를 사용하면 JPA Create DDL을 이용하기 어려울 수 있고, 잘못 이용하는 경우 원하지 않은 데이터 유실이 될 수 있음&lt;/li&gt;
&lt;li&gt;운영에서 H2를 사용하지 않은 경우, 통합 테스트를 H2를 사용하는 것이 옳은 방식인지에 대한 고민
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;실제 DB로는 테스트하지 않았는데, 이러면 통합 테스트의 의미가 있는지&lt;/li&gt;
&lt;li&gt;유닛 테스트 시에 용이하다고 하는데, 그럼 차라리 Mock을 사용하는 것은 어떤지&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&amp;nbsp;토이 프로젝트를 할 때는 편리하기도 하고, 고려해야 할 부분도 더 적어서 H2를 자주 사용하곤 했었는데 이것저것 고려하다보니 과연 H2를 사용하는 것이 항상 좋은가, 앞으로도 사용할 것인가에 대한 고민이 생겼다.&lt;br /&gt;&amp;nbsp;H2를 사용하다가 중간에 호환되지 않거나 불편해서, 혹은 가볍게 사용하려 했지만 오히려 설정이 더 많아지고 번거로워져서, 통합 테스트를 위해 등 여러가지 이유로 MySQL 등으로 전환을 하고 나니 무조건 H2로 시작하는 것이 아닌 꼭 필요한 곳에만 사용해야겠다는 생각마저 들었다.&lt;br /&gt;&amp;nbsp;물론 토이프로젝트 할 때 편한 것은 부정할 수 없는 사실이다.&lt;br /&gt;&amp;nbsp;뭔가 사용할 때, '항상 사용했었으니까'가 아닌, '이걸 여기에 써야 좋은 게 맞는 걸까'라는 고민을 하면서 사용하는 개발자가 되고 싶다. 항상 잊지 말고 생각하기!&lt;/blockquote&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;참고&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;In Memory DB (인 메모리 DB) *&lt;/h4&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;디스크가 아닌 주 메모리에 모든 데이터를 가지고 있는 데이터베이스&lt;/li&gt;
&lt;li&gt;장점) 디스크 검색보다 자료 접근이 훨씬 빠름
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;디스크 방식에서 데이터의 양이 많아졌을 때, 응답 속도가 떨어지는 문제를 해결하는 대안
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;디스크 방식 : 디스크에 저장된 데이터를 대상으로 쿼리&lt;/li&gt;
&lt;li&gt;인 메모리 방식 : 메모리상에 색인을 넣어 이를 통해 빠르게 검색&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;단점) 휘발성, 전원이 꺼지는 경우 삭제됨
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;보통은 로그인 세션처럼 데이터가 날아가도 괜찮은 임시 데이터에 주로 쓰임&lt;/li&gt;
&lt;li&gt;빠른 속도를 위해 사용하기 때문에 보통 압축을 하지 않음&lt;/li&gt;
&lt;li&gt;DB에 따라 Durability(영속성)을 보장하기 위해 CUD(INSERT-UPDATE-DELETE)를 디스크에 로그로 기록하여, 재구축하기도 함&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;고려해야할 점
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터만큼의 메모리(RAM)를 확보하지 않는 경우, 가상메모리를 사용하게 되어 역효과가 일어나기도 함&lt;/li&gt;
&lt;li&gt;Memory는 Disk보다 고비용&lt;/li&gt;
&lt;li&gt;기존 DBMS의 제품들도 인 메모리 DB를 사용할 수 있는 옵션을 제공하는 경우가 있음 (예 - MySQL/MariaDB의 memory엔진)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;종류
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Memcached, Redis, ...&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: none;&quot;&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Spring</category>
      <category>db</category>
      <category>H2</category>
      <category>H2 DB</category>
      <category>h2 데이터베이스</category>
      <category>H2 사용 고민</category>
      <category>InMemoryDb</category>
      <category>인메모리디비</category>
      <author>jamie.</author>
      <guid isPermaLink="true">https://jamie95.tistory.com/188</guid>
      <comments>https://jamie95.tistory.com/188#entry188comment</comments>
      <pubDate>Mon, 15 Nov 2021 19:13:02 +0900</pubDate>
    </item>
    <item>
      <title>[JS] 날짜와 시간을 관리하기 위해 Luxon 라이브러리 사용하기</title>
      <link>https://jamie95.tistory.com/187</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;환경&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; - FE : Javascript - `&amp;lt;input type=&quot;datetime-local&quot;&amp;gt;`&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;input type=&quot;datetime-local&quot; /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; - BE : Java - `LocalDateTime`&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; - FE, BE 통신 : Axios를 이용한 Json 통신&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기능 :&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; 1. input으로 날짜를 받아서 BE에(LocalDateTime형태) 전달하여 저장&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; - input Format : yyyy-MM-ddTHH:mm&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; - BE 전달 Format : (동일)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; 2. 1에서 저장했던 값을 BE에서 받아서 다시 input에 뿌려주기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; - BE Format : yyyy-MM-ddTHH:mm:sss&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; - input Format : yyyy-MM-ddTHH:mm&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필요 사항 :&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif; letter-spacing: 0px;&quot;&gt;&amp;nbsp; &amp;nbsp; - 초까지 있는 데이터를 받아서, 분단위 절삭하는 기능&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif; letter-spacing: 0px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1. 시간을 받아서, Formatter를 적용할 수 있는 Date 비스무리한 객체로 만드는 기능&lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif; letter-spacing: 0px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif; letter-spacing: 0px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2. 1번에서 생성한 객체에 Formatter를 적용하여 원하는 형식으로 반환하는 기능&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 직접 구현&lt;/p&gt;
&lt;pre id=&quot;code_1636339894223&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const toDateTimeWithOutFormat = (dateTimeWithFormat) =&amp;gt; {
  return new Date(
    dateTimeWithFormat.substring(0, 4),
    dateTimeWithFormat.substring(5, 7) - 1,
    dateTimeWithFormat.substring(8, 10),
    dateTimeWithFormat.substring(11, 13),
    dateTimeWithFormat.substring(14, 16)
  );
};

const toDateTimeWithFormat = (dateTime) =&amp;gt; {
  const pad = (number) =&amp;gt; {
    if (number &amp;lt; 10) {
      return &quot;0&quot; + number;
    }
    return number;
  };
  
  return (
    dateTime.getFullYear() +
    &quot;-&quot; +
    pad(dateTime.getMonth() + 1) +
    &quot;-&quot; +
    pad(dateTime.getDate()) +
    &quot;T&quot; +
    pad(dateTime.getHours()) +
    &quot;:&quot; +
    pad(dateTime.getMinutes())
  );
};&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. Luxon 라이브러리 사용&lt;/p&gt;
&lt;pre id=&quot;code_1636349304477&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 설치
npm install --save luxon&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1636352523188&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const DATETIME_ISO_FORMAT = &quot;yyyy-MM-dd'T'HH:mm&quot;;

// 위의 toDateTimeWithOutFormat() 같은 기능
// value : 2021-11-13T19:09 or 2021-11-13T19:09:00
// dateTime : DateTime { ts: 1636798140000, _zone: SystemZone, ... }
const dateTime = DateTime.fromISO(value);

// 위의 toDateTimeWithFormat() 같은 기능
// result : 2021-11-18T02:54
// input에 넣을 경우 문제 없음 &amp;amp;&amp;amp; json으로 보내면 Gson이 LocalDateTime으로 자동 변환
const result = dateTime.toFormat(DATETIME_ISO_FORMAT);

// 사용하지 않음 (Custom Formatter 사용한 이유)
// resultIso : 2021-11-03T14:48:00.000+09:00
// input에 넣을 경우 에러 - The specified value &quot;2021-11-03T14:48:00.000+09:00&quot; does not conform to the required format.  The format is &quot;yyyy-MM-ddThh:mm&quot; followed by optional &quot;:ss&quot; or &quot;:ss.SSS&quot;.
// json으로 보내면 Gson이 LocalDateTime으로 자동 변환하지 못해서 예외 발생
const resultIso = dateTime.toISO(); // # 2021-11-09T14:48:00.000+09:00

// 현재시각
new Date()     // js Date 객체
DateTime.now() // luxon DateTime 객체&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Luxon 라이브러리를 사용한 이유&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;처음엔 Moment.js 라이브러리를 사용하려고 했으나, legacy project로 전환됨 [&lt;a href=&quot;https://momentjs.com/docs/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;LINK&lt;/a&gt;]&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;Moment.js란?&lt;br /&gt;- 수백만 개의 프로젝트에서 성공적으로 사용&lt;br /&gt;- 웹에서 날짜와 시간을 개선하는 데 기여&lt;br /&gt;- 2020.09 기준 주당 1,200만 다운로드 이상을 기록&lt;br /&gt;&lt;br /&gt;단점&lt;br /&gt;- Moment는 예전 JS 생태계를 위해 구축되어 현대의 웹과는 잘 맞지 않음&lt;br /&gt;- 수년에 걸쳐 발전해왔지만, 2011년 생성되었을 때와 본질적으로 동일한 디자인을 가지고 있음&lt;br /&gt;- 의존하는 프로젝트의 수가 많아, 새로운 기능보다 안정성을 우선시하고 있음&lt;br /&gt;- 불변이 아님(mutable - 많은 불만 사항)&lt;br /&gt;- 최신 Tree Shaking 알고리즘에서 잘 동작하지 않음, 웹 애플리케이션 번들의 크기가 증가하는 경향이 있음&lt;br /&gt;- 국제화 또는 시간대 지원이 필요한 경우에도 사이즈가 커질 수 있음&lt;br /&gt;&amp;nbsp; &amp;nbsp; - 최신 웹 브라우저(Node.js 등)는 ECMA-402로 코드화된&amp;nbsp;&lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Intl&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Intl&lt;/a&gt;&amp;nbsp;객체를 통해 국제화와 시간대 지원을 제공&lt;br /&gt;&amp;nbsp; &amp;nbsp; - 대안 라이브러리들은 이런 이점을 활용하여 사용자 자신의 데이터 파일을 전송해야하는 필요성을 감축&lt;br /&gt;&lt;br /&gt;Moment.js의 레거시 프로젝트 전환&lt;br /&gt;- Moment 팀에서는 기존 프로젝트에서 계속 Moment를 사용할 수 있지만, 새로운 프로젝트에서는 Moment가 사용되지 않도록 하고 싶음&lt;br /&gt;- 레거시 프로젝트로 전환&lt;br /&gt;&amp;nbsp; &amp;nbsp; 1. 새로운 기능을 추가하지 않음&lt;br /&gt;&amp;nbsp; &amp;nbsp; 2. (앞으로도) Immutable을 지원하지 않음&lt;br /&gt;&amp;nbsp; &amp;nbsp; 3. Tree Shaking이나 번들 크기 문제에 대해 고려하지 않음&lt;br /&gt;&amp;nbsp; &amp;nbsp; 4. 주요 변경이 일어나지 않음&lt;br /&gt;&amp;nbsp; &amp;nbsp; 5. 오랫동안 있었던 버그 또는 동작상의 문제를 수정하지 않을 수 있음&lt;br /&gt;- 기존 프로젝트에서 Moment를 사용하기 때문에, 지원하는 부분&lt;br /&gt;&amp;nbsp; &amp;nbsp; 1. 중요한 보안 문제 발생 시 해결 예정&lt;br /&gt;&amp;nbsp; &amp;nbsp; 2. IANA Timezone DB 릴리즈 후 Moment-Timezone에 대한 데이터 업데이트를 릴리즈할 예정&lt;br /&gt;&lt;br /&gt;새로운 프로젝트에서 Moment를 사용하는 경우&lt;br /&gt;1. 브라우저 지원&lt;br /&gt;&amp;nbsp; &amp;nbsp; - Moment는 IE 8 ~, Luxon은 IE 10 ~ 지원 (Day.js는 IE 8 ~을 지원하므로 고려해볼 수 있음)&lt;br /&gt;&amp;nbsp; &amp;nbsp; - Safari, 또는 모바일 일부 브라우저를 지원해야 하는 경우&lt;br /&gt;2. 다른 라이브러리와의 종속성&lt;br /&gt;&amp;nbsp; &amp;nbsp; - 날짜 선택기, 그래프 라이브러리 등 다른 여러 라이브러리가 Moment를 종속성으로 사용하고 있는 경우&lt;br /&gt;3. Moment API의 오랜 사용자인 경우&lt;br /&gt;&amp;nbsp; &amp;nbsp; - Moment API와 제한 사항을 잘 이해하고 있는 경우&lt;br /&gt;&amp;nbsp; &amp;nbsp; - 단, 위에 언급한 단점이 문제가 되지 않는 경우&lt;br /&gt;&lt;br /&gt;권장하는 대안 라이브러리&lt;br /&gt;Luxon, Day.js, Date-fns, js-Joda&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;권장하는 대안 라이브러리를 비교했을 때, Luxon의 사용이 가장 간단해 보였음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 별도 사용자 지정 데이터 파일이나, 플러그인, 동반 라이브러리가 없고 기존에 Moment.js가 익숙하진 않은 상황이었기 때문&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;a href=&quot;https://moment.github.io/luxon/#/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Luxon&lt;/a&gt;&lt;br /&gt;- Moment 진화판같은 느낌&lt;br /&gt;- Locales: Intl 제공&lt;br /&gt;- Time Zones: Intl 제공&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://day.js.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Day.js&lt;/a&gt;&lt;br /&gt;- 유사한 API를 사용하여 Moment.js를 최소한으로 대체하도록 설계&lt;br /&gt;- Moment API 사용에 익숙하고, 빠르게 이동할 수 있다면 고려&lt;br /&gt;- Locales: 개별적으로 가져올 수 있는 사용자 지정 데이터 파일&lt;br /&gt;- Time Zones: 플러그인을 통해 제공된 Intl&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://date-fns.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;date-fns&lt;/a&gt;&lt;br /&gt;- JavaScript Date 객체를 조작하기 위한 기능을 제공&lt;br /&gt;- Locales: 개별적으로 가져올 수 있는 사용자 지정 데이터 파일&lt;br /&gt;- Time Zones: 별도의 동반 라이브러리&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://js-joda.github.io/js-joda/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;js-Joda&lt;/a&gt;&lt;br /&gt;- 자바 SE 8 java.time 패키지의 JSR-310 구현을 위한 Java's Three-Ten Backport의 JavaScript port.&lt;br /&gt;- java.time, Joda-Time, Noda-Time에 익숙하다면 추천&lt;br /&gt;- Locales: 추가 기능 모듈을 통한 사용자 지정 데이터 파일&lt;br /&gt;- Time Zones: 추가 기능 모듈을 통한 사용자 지정 데이터 파일&lt;br /&gt;&lt;br /&gt;라이브러리 없이 구현하기&lt;br /&gt;- Date 객체와 Intl 객체가 필요한 요구를 충족시키고, 제한 사항을 완전히 이해한다면 직접 사용하는 것을 고려할 수 있음&lt;/blockquote&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;JavaScript 자체 기능으로 날짜와 시간을 다룰 수 있게 될 날이 빨리 오면 좋을 것 같긴 하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TC39 Temporal Proposal을 통해 진행중인 것 같긴 한데, 나중에 한 번쯤 봐보면 좋지 않을까.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://tc39.es/proposal-temporal/docs/index.html&quot;&gt;https://tc39.es/proposal-temporal/docs/index.html&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아직 필요한 라이브러리를 찾는 것이 익숙하지 않다. 더더욱 익숙하지 않은 Java Script라 더 그런 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 다수의 사람이 필요하다고 생각하는 기능인 경우엔 많은 라이브러리들이 있기 마련인데, 아직까지는 찾아볼 생각을 주도적으로 하지 못해서 아쉽다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이미 구현된 라이브러리를 쓰면 이미 누군가 잘 구현해놓은 기능을 재구현하지 않아도 되어 시간이 절약될 뿐만 아니라, 나중에 확인하거나 수정할 때도 라이브러리의 문서를 참고할 수 있기 때문에 더 용이한 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞으로도 열심히 공부하는 걸로 :9&lt;/p&gt;</description>
      <category>JavaScript</category>
      <category>JavaScript</category>
      <category>LUXON</category>
      <category>Luxon Library</category>
      <category>Moment</category>
      <category>날짜</category>
      <category>라이브러리</category>
      <category>룩슨</category>
      <category>모먼트</category>
      <category>시간</category>
      <author>jamie.</author>
      <guid isPermaLink="true">https://jamie95.tistory.com/187</guid>
      <comments>https://jamie95.tistory.com/187#entry187comment</comments>
      <pubDate>Mon, 8 Nov 2021 18:05:30 +0900</pubDate>
    </item>
    <item>
      <title>우아한 테크코스 테코톡 준비했던 자료</title>
      <link>https://jamie95.tistory.com/186</link>
      <description>&lt;p&gt;테코톡 자료를 올리기로 했었는데, 자료를 찾지 못해 깜빡하고 있었다가 이제서야 업로드...&lt;/p&gt;
&lt;p&gt;너무 늦은 건가 싶기도 하다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;처음에는 뭔가 만들 때 들었던 고생이 생각나서 공유하지 않으려고 했지만,&lt;/p&gt;
&lt;p&gt;공유한다고 고생이 사라지는 것도 아니고, 누군가는 PPT던 내용이던 배워갈 수도 있는 거라는 생각이 들었다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그리고 나도 누군가가 공유해주는 무언가를 보고 배우는 그런 선순환구조...(???).....&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;움켜쥐고 있어봐야 아무것도 달라지는 건 없으니..&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/cvGBOW/btq2XjcLjXA/IjILgTQW1C3TIvFmGrJqgk/%E1%84%90%E1%85%A6%E1%84%8F%E1%85%A9%E1%84%90%E1%85%A9%E1%86%A8_%E1%84%8C%E1%85%A6%E1%84%8B%E1%85%B5%E1%84%86%E1%85%B5.pptx.zip?attach=1&amp;amp;knm=tfile.zip&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;테코톡_제이미.pptx.zip&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;2.47MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;PPT 모핑이라던가 효과를 물어보는 분들도 꽤 계셨기 때문에, 도움이 되길 바라며 올려보기...&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;아래껀 테코톡 만들기 위한 템플릿.. 이것도 혹시 필요한 분이 계실까 올려본다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/b2YqBh/btq22bdITBP/KflyQ081TkYtBN7qmfiCzk/%E1%84%90%E1%85%A6%E1%84%8F%E1%85%A9%E1%84%90%E1%85%A9%E1%86%A8_%E1%84%90%E1%85%A6%E1%86%B7%E1%84%91%E1%85%B3%E1%86%AF%E1%84%85%E1%85%B5%E1%86%BA.zip?attach=1&amp;amp;knm=tfile.zip&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;테코톡_템플릿.zip&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;5.04MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;기본적으로 배민에서 제공하는 서체를 이용했기 때문에 폰트들을 받아놓을 것.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;배달의민족 &lt;b&gt;한나체&lt;/b&gt;&amp;middot;주아체&amp;middot;도현체&amp;middot;연성체&amp;middot;기랑해랑체&amp;middot;&lt;b&gt;한나체 Air&lt;/b&gt;&amp;middot;&lt;b&gt;한나체 Pro&lt;/b&gt;&amp;middot;을지로체&amp;middot; 배민 을지로10년후체&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.woowahan.com/#/fonts&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;www.woowahan.com/#/fonts&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1618838555544&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;우아한형제들&quot; data-og-description=&quot;좋은 음식을 먹고 싶은 곳에서~! 우아한 사람들이 모여 우와하게 일하는 '우아한형제들'입니다.&quot; data-og-host=&quot;www.woowahan.com&quot; data-og-source-url=&quot;https://www.woowahan.com/#/fonts&quot; data-og-url=&quot;http://www.woowahan.com&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/O9GzH/hyJWtQiaOf/z0guwkSJKYavjLemiI6L2K/img.jpg?width=1024&amp;amp;height=500&amp;amp;face=0_0_1024_500&quot;&gt;&lt;a href=&quot;https://www.woowahan.com/#/fonts&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.woowahan.com/#/fonts&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/O9GzH/hyJWtQiaOf/z0guwkSJKYavjLemiI6L2K/img.jpg?width=1024&amp;amp;height=500&amp;amp;face=0_0_1024_500');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;우아한형제들&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;좋은 음식을 먹고 싶은 곳에서~! 우아한 사람들이 모여 우와하게 일하는 '우아한형제들'입니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.woowahan.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;b&gt;한나는 열한살체&lt;/b&gt; &lt;a href=&quot;http://font.woowahan.com/hanna11yrs/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;font.woowahan.com/hanna11yrs/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1618838682461&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;배달의민족 폰트 한나는11살체 다운로드&quot; data-og-description=&quot;배달의민족 한나는11살체 다운로드 배달의민족 한나체는 아크릴 판 위에 시트지를 붙여 칼로 잘라낸 1960~70년대 간판을 모티브로 만들어 삐뚤빼뚤 조형성이 떨어지는 듯한 느낌이 특징인 서체입&quot; data-og-host=&quot;font.woowahan.com&quot; data-og-source-url=&quot;http://font.woowahan.com/hanna11yrs/&quot; data-og-url=&quot;http://font.woowahan.com/hanna11yrs/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;http://font.woowahan.com/hanna11yrs/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://font.woowahan.com/hanna11yrs/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;배달의민족 폰트 한나는11살체 다운로드&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;배달의민족 한나는11살체 다운로드 배달의민족 한나체는 아크릴 판 위에 시트지를 붙여 칼로 잘라낸 1960~70년대 간판을 모티브로 만들어 삐뚤빼뚤 조형성이 떨어지는 듯한 느낌이 특징인 서체입&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;font.woowahan.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;테코톡 영상은 &lt;a href=&quot;https://youtu.be/YxwYhenZ3BE&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;youtu.be/YxwYhenZ3BE&lt;/a&gt; :)&lt;/p&gt;</description>
      <category>우아한 테크코스/테크코스</category>
      <author>jamie.</author>
      <guid isPermaLink="true">https://jamie95.tistory.com/186</guid>
      <comments>https://jamie95.tistory.com/186#entry186comment</comments>
      <pubDate>Mon, 19 Apr 2021 22:25:56 +0900</pubDate>
    </item>
    <item>
      <title>Ubuntu에 MySql 설치 &amp;amp; Database 및 계정 생성</title>
      <link>https://jamie95.tistory.com/185</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;제목을 입력해주세요._003 (17).png&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;300&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UMlbo/btqXXi4ZiMH/cVQMeCjKMKnkW31r6b1V2k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UMlbo/btqXXi4ZiMH/cVQMeCjKMKnkW31r6b1V2k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UMlbo/btqXXi4ZiMH/cVQMeCjKMKnkW31r6b1V2k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUMlbo%2FbtqXXi4ZiMH%2FcVQMeCjKMKnkW31r6b1V2k%2Fimg.png&quot; data-filename=&quot;제목을 입력해주세요._003 (17).png&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;300&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;MySQL 설치&lt;/h4&gt;
&lt;pre id=&quot;code_1597129174461&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ sudo apt-get update
$ sudo apt-get install -y mysql-server&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;MySQL 데몬 설정 (서버 재시작시 자동으로 실행되도록)&lt;/h4&gt;
&lt;pre id=&quot;code_1597129215489&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ sudo systemctl enable mysql&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;MySQL 프로세스 시작&lt;/h4&gt;
&lt;pre id=&quot;code_1597129252084&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ sudo systemctl start mysql&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;MySQL 접속&lt;/h4&gt;
&lt;pre id=&quot;code_1597129287523&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ sudo /usr/bin/mysql -u root -p&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;패스워드 설정&lt;/h4&gt;
&lt;pre id=&quot;code_1597130096089&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;gt; ALTER USER 'root'@'localhost' IDENTIFIED BY '설정할비밀번호';
Query OK, 0 rows affected (0.00 sec)

// 5.7.6 이전 버전
&amp;gt; SET PASSWORD FOR 'root'@'localhost' = PASSWORD('설정할비밀번호');&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;버전 확인 방법&lt;/h4&gt;
&lt;pre id=&quot;code_1597129364413&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;gt; SHOW VARIABLES LIKE &quot;%version%&quot;;
+-------------------------+-------------------------+
| Variable_name           | Value                   |
+-------------------------+-------------------------+
| innodb_version          | 5.7.31                  |
| protocol_version        | 10                      |
| slave_type_conversions  |                         |
| tls_version             | TLSv1,TLSv1.1,TLSv1.2   |
| version                 | 5.7.31-0ubuntu0.18.04.1 |
| version_comment         | (Ubuntu)                |
| version_compile_machine | x86_64                  |
| version_compile_os      | Linux                   |
+-------------------------+-------------------------+
8 rows in set (0.00 sec)&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Database 생성 및 확인&lt;/h4&gt;
&lt;pre id=&quot;code_1597130416032&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;gt; CREATE DATABASE DB명;
Query OK, 1 row affected (0.00 sec)

&amp;gt; SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| DB명                |
| mysql              |
| performance_schema |
| sys                |
+--------------------+&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;계정 생성 및 확인&lt;/h4&gt;
&lt;pre id=&quot;code_1597130286555&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;gt; SELECT User, Host, authentication_string FROM mysql.user;
+------------------+-----------+-------------------------------------------+
| User             | Host      | authentication_string                     |
+------------------+-----------+-------------------------------------------+
| root             | localhost |                                           |
| mysql.session    | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys        | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| debian-sys-maint | localhost | *A7AE3D271FAC9FFBD36FA40374E88D1CAB52E134 |
+------------------+-----------+-------------------------------------------+

&amp;gt; CREATE USER '계정명'@'%' IDENTIFIED BY '비밀번호';

// 반영
&amp;gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
&amp;gt; SELECT User, Host, authentication_string FROM mysql.user;
+------------------+-----------+-------------------------------------------+
| User             | Host      | authentication_string                     |
+------------------+-----------+-------------------------------------------+
| root             | localhost |                                           |
| mysql.session    | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys        | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| debian-sys-maint | localhost | *A7AE3D271FAC9FFBD36FA40374E88D1CAB52E134 |
| 계정명             | %         | *암호화된암호가들어갑니다.                       |
+------------------+-----------+-------------------------------------------+
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;계정 권한 부여 및 확인&lt;/h4&gt;
&lt;pre id=&quot;code_1597131497396&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;gt; SHOW GRANTS FOR '계정명'@'%';
+------------------------------------+
| Grants for 계정명@%                  |
+------------------------------------+
| GRANT USAGE ON *.* TO '계정명'@'%'   |
+------------------------------------+

&amp;gt; GRANT ALL PRIVILEGES ON DB명.* to '계정명'@'%';
Query OK, 0 rows affected (0.00 sec)

&amp;gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

&amp;gt; SHOW GRANTS FOR '계정명'@'%';
+--------------------------------------------------+
| Grants for 계정명@%                                |
+--------------------------------------------------+
| GRANT USAGE ON *.* TO '계정명'@'%'                 |
| GRANT ALL PRIVILEGES ON `DB명`.* TO '계정명'@'%'   |
+--------------------------------------------------+
2 rows in set (0.00 sec)&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;외부 접속 허용&lt;/h4&gt;
&lt;pre id=&quot;code_1597748171834&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
(기존) bind-address            = 127.0.0.1 // 내부에서만 3306 호출하도록 설정, 아래는 외부에서 인입 가능하도록 설정
(변경) bind-address            = 0.0.0.0
$ sudo systemctl restart mysql&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;서버 시간 수정 (한국 시간으로)&lt;/h4&gt;
&lt;pre id=&quot;code_1597748784775&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ sudo ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
$ sudo systemctl restart mysql&lt;/code&gt;&lt;/pre&gt;</description>
      <category>우아한 테크코스/이것저것</category>
      <category>MySQL</category>
      <category>ubuntu</category>
      <author>jamie.</author>
      <guid isPermaLink="true">https://jamie95.tistory.com/185</guid>
      <comments>https://jamie95.tistory.com/185#entry185comment</comments>
      <pubDate>Tue, 11 Aug 2020 16:44:04 +0900</pubDate>
    </item>
    <item>
      <title>명령어로 Nginx SSL 인증서 발급하기(자동 갱신/Letsencrypt)</title>
      <link>https://jamie95.tistory.com/184</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;제목을 입력해주세요._003 (16).png&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;300&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2nVjf/btqX1ovWrH1/Rt9B24AYPzkPnBWDvkzR50/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2nVjf/btqX1ovWrH1/Rt9B24AYPzkPnBWDvkzR50/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2nVjf/btqX1ovWrH1/Rt9B24AYPzkPnBWDvkzR50/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2nVjf%2FbtqX1ovWrH1%2FRt9B24AYPzkPnBWDvkzR50%2Fimg.png&quot; data-filename=&quot;제목을 입력해주세요._003 (16).png&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;300&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Certbot이 자동으로 인증서를 갱신해줘 편리한 방식&lt;/h2&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Certbot 설치&lt;/h4&gt;
&lt;pre id=&quot;code_1597056092740&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ sudo apt-get update
$ sudo apt-get install -y software-properties-common
$ sudo add-apt-repository universe
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt-get update
$ sudo apt-get install certbot python-certbot-nginx

# 만약 다음과 같은 에러가 난다면1
E: The repository 'http://ppa.launchpad.net/certbot/certbot/ubuntu focal Release' does not have a Release file.
$ sudo apt-add-repository -r ppa:certbot/certbot

# 만약 다음과 같은 에러가 난다면2
However the following packages replace it:
  python3-certbot-nginx

E: Package 'python-certbot-nginx' has no installation candidate
$ sudo apt-get install certbot python3-certbot-nginx&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&quot;b373&quot; data-ke-size=&quot;size20&quot;&gt;Certbot 동작 방식 선택&lt;/h4&gt;
&lt;pre id=&quot;code_1597056138746&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// nginx을 기동중일 경우, https를 지원하도록 conf까지 바꿔줌 - 추천
$ sudo certbot --nginx

// 다른 작업은 하지 않고(conf 수정 등) 인증서만 발급 - 수동으로 conf 바꿔줘야함
$ sudo certbot certonly --nginx

/* email - 이메일 적기
 * 약관 동의 - y
 * 이메일 발송 동의 - y or n
 * Which names would you like to activate HTTPS for? - 해당 도메인의 번호 선택
 *     - 혹은 직접 도메인을 입력하라고 나타나면 직접 입력(예 - domain.com)
 */&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;자동 갱신 확인&lt;/h4&gt;
&lt;pre id=&quot;code_1597056484535&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 수동 갱신 - Processing /etc/letsencrypt/renewal/도메인.conf 라고 나타남
$ sudo certbot renew --dry-run

$ cat /etc/letsencrypt/renewal/도메인.conf
# renew_before_expiry = 30 days
version = 0.31.0
archive_dir = /etc/letsencrypt/archive/도메인
cert = /etc/letsencrypt/live/도메인/cert.pem
privkey = /etc/letsencrypt/live/도메인/privkey.pem
chain = /etc/letsencrypt/live/도메인/chain.pem
fullchain = /etc/letsencrypt/live/도메인/fullchain.pem

# Options used in the renewal process
[renewalparams]
account = 비밀
authenticator = nginx
installer = nginx
server = https://acme-v02.api.letsencrypt.org/directory

/*
수동으로 nginx 설정을 변경했다면 아래와 같이 ssl 설정을 꼭 해줘야 함
ssl_certificate     /etc/letsencrypt/live/도메인/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/도메인/privkey.pem;
*/

// 자동 갱신의 경우 아래와 같이 확인 가능
$ cat /etc/cron.d/certbot 
(생략)
0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system &amp;amp;&amp;amp; perl -e 'sleep int(rand(43200))' &amp;amp;&amp;amp; certbot -q renew&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;확인&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;436&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b3EMnc/btqGqao4MMS/5LQyI9YocKgkVVghoknQI0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b3EMnc/btqGqao4MMS/5LQyI9YocKgkVVghoknQI0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b3EMnc/btqGqao4MMS/5LQyI9YocKgkVVghoknQI0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb3EMnc%2FbtqGqao4MMS%2F5LQyI9YocKgkVVghoknQI0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;436&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>우아한 테크코스/이것저것</category>
      <author>jamie.</author>
      <guid isPermaLink="true">https://jamie95.tistory.com/184</guid>
      <comments>https://jamie95.tistory.com/184#entry184comment</comments>
      <pubDate>Mon, 10 Aug 2020 19:53:29 +0900</pubDate>
    </item>
    <item>
      <title>Site에서 무료 SSL 발급하기</title>
      <link>https://jamie95.tistory.com/183</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;제목을 입력해주세요._003 (15).png&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;300&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cj10Z8/btqX0paIHJE/AZ2BSYbLWuiHVgp7ST7Z10/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cj10Z8/btqX0paIHJE/AZ2BSYbLWuiHVgp7ST7Z10/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cj10Z8/btqX0paIHJE/AZ2BSYbLWuiHVgp7ST7Z10/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcj10Z8%2FbtqX0paIHJE%2FAZ2BSYbLWuiHVgp7ST7Z10%2Fimg.png&quot; data-filename=&quot;제목을 입력해주세요._003 (15).png&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;300&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;접근 (&lt;a href=&quot;https://www.sslforfree.com/&quot;&gt;https://www.sslforfree.com/&lt;/a&gt;)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주소표시줄 안에 SSL 인증서를 발급하고 싶은 도메인을 입력 후 Create Free SSL Certificate 선택&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ST5Rd/btqGtVRCUYi/kQZiPi0xAbasvy6j6LetK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ST5Rd/btqGtVRCUYi/kQZiPi0xAbasvy6j6LetK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ST5Rd/btqGtVRCUYi/kQZiPi0xAbasvy6j6LetK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FST5Rd%2FbtqGtVRCUYi%2FkQZiPi0xAbasvy6j6LetK1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;회원 가입&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;399&quot; height=&quot;NaN&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDw7yw/btqGtoNfl32/ItySb7tq1gDPmwn4wBtiT0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDw7yw/btqGtoNfl32/ItySb7tq1gDPmwn4wBtiT0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDw7yw/btqGtoNfl32/ItySb7tq1gDPmwn4wBtiT0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDw7yw%2FbtqGtoNfl32%2FItySb7tq1gDPmwn4wBtiT0%2Fimg.png&quot; width=&quot;399&quot; height=&quot;NaN&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;인증서 생성&lt;/h2&gt;
&lt;p&gt;사이트를 넣어준 후 Next Step 버튼 선택&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cUDGMQ/btqGqo8Litt/DPhFfOJfQgtp2DO9ti7v0K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cUDGMQ/btqGqo8Litt/DPhFfOJfQgtp2DO9ti7v0K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cUDGMQ/btqGqo8Litt/DPhFfOJfQgtp2DO9ti7v0K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcUDGMQ%2FbtqGqo8Litt%2FDPhFfOJfQgtp2DO9ti7v0K%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bozSiz/btqGnIT1CI5/31jXrUE80KVozsqqExXGl1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bozSiz/btqGnIT1CI5/31jXrUE80KVozsqqExXGl1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bozSiz/btqGnIT1CI5/31jXrUE80KVozsqqExXGl1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbozSiz%2FbtqGnIT1CI5%2F31jXrUE80KVozsqqExXGl1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;내려주게끔 설정 후 다음 단계&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YxBJo/btqGtDjhXCP/SaQZZojTAhnKgJR5w2iLV0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YxBJo/btqGtDjhXCP/SaQZZojTAhnKgJR5w2iLV0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YxBJo/btqGtDjhXCP/SaQZZojTAhnKgJR5w2iLV0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYxBJo%2FbtqGtDjhXCP%2FSaQZZojTAhnKgJR5w2iLV0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;도메인 확인&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bNJtHt/btqGtCxVsbt/4Qkf72fI67Jj1TIlvY9zqk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNJtHt/btqGtCxVsbt/4Qkf72fI67Jj1TIlvY9zqk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNJtHt/btqGtCxVsbt/4Qkf72fI67Jj1TIlvY9zqk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNJtHt%2FbtqGtCxVsbt%2F4Qkf72fI67Jj1TIlvY9zqk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mtoE0/btqGqQw7EOd/oNZaSiQXskF9QMnondv4Dk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mtoE0/btqGqQw7EOd/oNZaSiQXskF9QMnondv4Dk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mtoE0/btqGqQw7EOd/oNZaSiQXskF9QMnondv4Dk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmtoE0%2FbtqGqQw7EOd%2FoNZaSiQXskF9QMnondv4Dk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Nginx 선택&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MVQu8/btqGurJFFHA/atJ5N7rNaZIqbbefKKAvI0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MVQu8/btqGurJFFHA/atJ5N7rNaZIqbbefKKAvI0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MVQu8/btqGurJFFHA/atJ5N7rNaZIqbbefKKAvI0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMVQu8%2FbtqGurJFFHA%2FatJ5N7rNaZIqbbefKKAvI0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;다운로드 후 인증서 설정하고 Check Installation&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bAgwbH/btqGvcZzV4l/YjFHnHjwBwxvaaMfoEU0G0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bAgwbH/btqGvcZzV4l/YjFHnHjwBwxvaaMfoEU0G0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bAgwbH/btqGvcZzV4l/YjFHnHjwBwxvaaMfoEU0G0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAgwbH%2FbtqGvcZzV4l%2FYjFHnHjwBwxvaaMfoEU0G0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;적용 완료!&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nxpZ9/btqGuHrYCJv/k2UKKGXDpVznaXtUMbhEF1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nxpZ9/btqGuHrYCJv/k2UKKGXDpVznaXtUMbhEF1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nxpZ9/btqGuHrYCJv/k2UKKGXDpVznaXtUMbhEF1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnxpZ9%2FbtqGuHrYCJv%2Fk2UKKGXDpVznaXtUMbhEF1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>우아한 테크코스/이것저것</category>
      <author>jamie.</author>
      <guid isPermaLink="true">https://jamie95.tistory.com/183</guid>
      <comments>https://jamie95.tistory.com/183#entry183comment</comments>
      <pubDate>Mon, 10 Aug 2020 19:40:45 +0900</pubDate>
    </item>
    <item>
      <title>Jenkins &amp;amp; Github 연동</title>
      <link>https://jamie95.tistory.com/181</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;제목을 입력해주세요._003 (13).png&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;300&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HpULd/btqXYZXSpWh/Mk026TlE3Nihi73KO1yFnk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HpULd/btqXYZXSpWh/Mk026TlE3Nihi73KO1yFnk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HpULd/btqXYZXSpWh/Mk026TlE3Nihi73KO1yFnk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHpULd%2FbtqXYZXSpWh%2FMk026TlE3Nihi73KO1yFnk%2Fimg.png&quot; data-filename=&quot;제목을 입력해주세요._003 (13).png&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;300&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Github Access 토큰 발급&lt;/h2&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;[Github] - 프로필 선택 - [Settings]&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;186&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/coaitH/btqGbqRRoEC/Ywb0wFJ5K82hOAcFEusCCk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/coaitH/btqGbqRRoEC/Ywb0wFJ5K82hOAcFEusCCk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/coaitH/btqGbqRRoEC/Ywb0wFJ5K82hOAcFEusCCk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcoaitH%2FbtqGbqRRoEC%2FYwb0wFJ5K82hOAcFEusCCk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;186&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;[Github] - [Profile] - [Developer settings]&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Developer Settings 선택&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kzVK6/btqF8Z16QOY/UWOQehpEACARMmw94tXW00/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kzVK6/btqF8Z16QOY/UWOQehpEACARMmw94tXW00/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kzVK6/btqF8Z16QOY/UWOQehpEACARMmw94tXW00/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkzVK6%2FbtqF8Z16QOY%2FUWOQehpEACARMmw94tXW00%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;[GitHub Apps]&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Personal access tokens&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/z5sjb/btqF7LDkQiX/wq8O2RWvWnAswWDJ8mHz21/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/z5sjb/btqF7LDkQiX/wq8O2RWvWnAswWDJ8mHz21/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/z5sjb/btqF7LDkQiX/wq8O2RWvWnAswWDJ8mHz21/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fz5sjb%2FbtqF7LDkQiX%2Fwq8O2RWvWnAswWDJ8mHz21%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;[Personal access tokens]&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Generate new token&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bPLKLQ/btqF9DYIiY0/kMqmSiBuVz6VUNJ3mjC8D0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bPLKLQ/btqF9DYIiY0/kMqmSiBuVz6VUNJ3mjC8D0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bPLKLQ/btqF9DYIiY0/kMqmSiBuVz6VUNJ3mjC8D0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbPLKLQ%2FbtqF9DYIiY0%2FkMqmSiBuVz6VUNJ3mjC8D0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;[New personal access token]&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;토큰 생성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- repo / admin:org / admin:repo_hook - Generation token&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dB7O1Z/btqGbOE8OIk/x8AFkZsZDtVuZAKAsSORGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dB7O1Z/btqGbOE8OIk/x8AFkZsZDtVuZAKAsSORGk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dB7O1Z/btqGbOE8OIk/x8AFkZsZDtVuZAKAsSORGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdB7O1Z%2FbtqGbOE8OIk%2Fx8AFkZsZDtVuZAKAsSORGk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Qybov/btqGbpTaGkj/eDQiFDHEK3v07BLQq3QCS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Qybov/btqGbpTaGkj/eDQiFDHEK3v07BLQq3QCS0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Qybov/btqGbpTaGkj/eDQiFDHEK3v07BLQq3QCS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQybov%2FbtqGbpTaGkj%2FeDQiFDHEK3v07BLQq3QCS0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Personal access tokens 생성 키 확인&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생성이 완료되면 token 값 생성,&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(주의)&lt;/span&gt; 이 때 저장해놓지 않는다면 다시 token 값을 확인할 수 없음&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bWftlp/btqGbbOlhll/jZpEdcDgvBQs9rop7av9ck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bWftlp/btqGbbOlhll/jZpEdcDgvBQs9rop7av9ck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bWftlp/btqGbbOlhll/jZpEdcDgvBQs9rop7av9ck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWftlp%2FbtqGbbOlhll%2FjZpEdcDgvBQs9rop7av9ck%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Access Token을 이용해 Jenkins에 Github 연결&lt;/h2&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;[Jenkins 관리] - [시스템 설정]&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Bwlwo/btqGcgVJC7O/Jx4KGRGX1oTQQ6nuzD9uq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Bwlwo/btqGcgVJC7O/Jx4KGRGX1oTQQ6nuzD9uq1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Bwlwo/btqGcgVJC7O/Jx4KGRGX1oTQQ6nuzD9uq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBwlwo%2FbtqGcgVJC7O%2FJx4KGRGX1oTQQ6nuzD9uq1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;[Jenkins 관리] - [시스템 설정] - [GitHub] - [Add GitHub Server]&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cP3n1m/btqF8v79WnQ/6eNmVvw9TXpnsWcHf8K8KK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cP3n1m/btqF8v79WnQ/6eNmVvw9TXpnsWcHf8K8KK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cP3n1m/btqF8v79WnQ/6eNmVvw9TXpnsWcHf8K8KK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcP3n1m%2FbtqF8v79WnQ%2F6eNmVvw9TXpnsWcHf8K8KK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vUvTl/btqF80z43KL/sv8MvyOoYKXPPzGQUobiKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vUvTl/btqF80z43KL/sv8MvyOoYKXPPzGQUobiKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vUvTl/btqF80z43KL/sv8MvyOoYKXPPzGQUobiKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvUvTl%2FbtqF80z43KL%2Fsv8MvyOoYKXPPzGQUobiKK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Domain : Global credentials (unrestricted)&lt;br /&gt;Kind : Secret text&lt;br /&gt;Scope : Global (Jenkins, nodes, items, all child items, ect)&lt;br /&gt;Secret : Git에서 생성한 Token 복사 붙여넣기&lt;br /&gt;ID : jamie9504 - 식별자로 사용할 ID&lt;br /&gt;Description : jenkins&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;922&quot; data-filename=&quot;blob&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UPPnk/btqGcgnY3qi/XxHdvpM9aervEoVHoQ3oK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UPPnk/btqGcgnY3qi/XxHdvpM9aervEoVHoQ3oK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UPPnk/btqGcgnY3qi/XxHdvpM9aervEoVHoQ3oK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUPPnk%2FbtqGcgnY3qi%2FXxHdvpM9aervEoVHoQ3oK1%2Fimg.png&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;922&quot; data-filename=&quot;blob&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c7EZFr/btqGbNzyYsc/bvJJPjmSAEkmNdggUIhNgK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c7EZFr/btqGbNzyYsc/bvJJPjmSAEkmNdggUIhNgK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c7EZFr/btqGbNzyYsc/bvJJPjmSAEkmNdggUIhNgK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc7EZFr%2FbtqGbNzyYsc%2FbvJJPjmSAEkmNdggUIhNgK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Test connection 후 Credentioals verified for user (ID), rate .... 확인&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eITIXn/btqGds9vYQz/da73kznCcqvpJCkhGFxmkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eITIXn/btqGds9vYQz/da73kznCcqvpJCkhGFxmkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eITIXn/btqGds9vYQz/da73kznCcqvpJCkhGFxmkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeITIXn%2FbtqGds9vYQz%2Fda73kznCcqvpJCkhGFxmkK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;저장&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;187&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dwLI9q/btqGds2KQdy/PGkvWKOZZ6TC4GjMKmd8F1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dwLI9q/btqGds2KQdy/PGkvWKOZZ6TC4GjMKmd8F1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dwLI9q/btqGds2KQdy/PGkvWKOZZ6TC4GjMKmd8F1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdwLI9q%2FbtqGds2KQdy%2FPGkvWKOZZ6TC4GjMKmd8F1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;187&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Jenkins 프로젝트 생성&lt;/h2&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;[새로운 Item]&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Ak9Pb/btqGchtEidz/U4e0bjxWX0lHD2QKfycekk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Ak9Pb/btqGchtEidz/U4e0bjxWX0lHD2QKfycekk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Ak9Pb/btqGchtEidz/U4e0bjxWX0lHD2QKfycekk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAk9Pb%2FbtqGchtEidz%2FU4e0bjxWX0lHD2QKfycekk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;[Enter an item name]&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Item명 : Project명으로 지정하고 싶은 이름&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Freestyle Project로 설정&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lViS2/btqF9CFveSE/PVb4iJTFNoAKbubaB6kA4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lViS2/btqF9CFveSE/PVb4iJTFNoAKbubaB6kA4k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lViS2/btqF9CFveSE/PVb4iJTFNoAKbubaB6kA4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlViS2%2FbtqF9CFveSE%2FPVb4iJTFNoAKbubaB6kA4k%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;GitHub project에 url 입력&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cawS6n/btqGdsVZ71h/y3baBo0UK6ZcUBK3anSxjK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cawS6n/btqGdsVZ71h/y3baBo0UK6ZcUBK3anSxjK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cawS6n/btqGdsVZ71h/y3baBo0UK6ZcUBK3anSxjK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcawS6n%2FbtqGdsVZ71h%2Fy3baBo0UK6ZcUBK3anSxjK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;소스 코드 관리에 git 추가&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Repository URL : 레파지토리 URL 입력&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Credentials : Add - Jenkins&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/W2MoQ/btqF8vmOLEI/a9sQmLWQcbBHIc3ufrYC6k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/W2MoQ/btqF8vmOLEI/a9sQmLWQcbBHIc3ufrYC6k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/W2MoQ/btqF8vmOLEI/a9sQmLWQcbBHIc3ufrYC6k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FW2MoQ%2FbtqF8vmOLEI%2Fa9sQmLWQcbBHIc3ufrYC6k%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;[Jenkins Credentials Provider: Jenkins]&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Domain : Global credentials (unrestricted)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Kind : Username with password&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Scope : Global (Jenkins, nodes, items, all child items, etc)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Username : Github 아이디&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Password : Github 비밀번호&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Add&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SeDXQ/btqF8ZuuewC/jhzSPameVRoLOgGdujHQdk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SeDXQ/btqF8ZuuewC/jhzSPameVRoLOgGdujHQdk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SeDXQ/btqF8ZuuewC/jhzSPameVRoLOgGdujHQdk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSeDXQ%2FbtqF8ZuuewC%2FjhzSPameVRoLOgGdujHQdk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bq5kSn/btqF7KLkeMr/6U6TnJuOhiKDBVkfn9uMjk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bq5kSn/btqF7KLkeMr/6U6TnJuOhiKDBVkfn9uMjk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bq5kSn/btqF7KLkeMr/6U6TnJuOhiKDBVkfn9uMjk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbq5kSn%2FbtqF7KLkeMr%2F6U6TnJuOhiKDBVkfn9uMjk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;[빌드 유발]&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GitHub hook trigger for GITScm polling&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bGDakz/btqGbi7xWqt/GiwHyo47jgccRKvwRii3g0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bGDakz/btqGbi7xWqt/GiwHyo47jgccRKvwRii3g0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bGDakz/btqGbi7xWqt/GiwHyo47jgccRKvwRii3g0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGDakz%2FbtqGbi7xWqt%2FGiwHyo47jgccRKvwRii3g0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;[빌드]&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Use Gradle Wrapper 체크&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Make gradlew executable 체크(하지 않으면 권한 에러로 빌드 불가)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Tasks : 빌드시 사용할 gradle Task&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhnoRV/btqGbbueZBf/qHMVcjjJB7C2UWEkLuzrhk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhnoRV/btqGbbueZBf/qHMVcjjJB7C2UWEkLuzrhk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhnoRV/btqGbbueZBf/qHMVcjjJB7C2UWEkLuzrhk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbhnoRV%2FbtqGbbueZBf%2FqHMVcjjJB7C2UWEkLuzrhk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/44y9c/btqF80Up0nI/PWf0g1PW0rMppYkh6rlcC1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/44y9c/btqF80Up0nI/PWf0g1PW0rMppYkh6rlcC1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/44y9c/btqF80Up0nI/PWf0g1PW0rMppYkh6rlcC1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F44y9c%2FbtqF80Up0nI%2FPWf0g1PW0rMppYkh6rlcC1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cxXPb0/btqF8we5nqC/BhW3LxAjOdlaBqiuwLGkY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cxXPb0/btqF8we5nqC/BhW3LxAjOdlaBqiuwLGkY1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cxXPb0/btqF8we5nqC/BhW3LxAjOdlaBqiuwLGkY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcxXPb0%2FbtqF8we5nqC%2FBhW3LxAjOdlaBqiuwLGkY1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;빌드 실패&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빌드를 시도했는데, 실패한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;354&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bb1p1x/btqF60gerRL/uH7PnPMkOCSudtyRGwrPF0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bb1p1x/btqF60gerRL/uH7PnPMkOCSudtyRGwrPF0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bb1p1x/btqF60gerRL/uH7PnPMkOCSudtyRGwrPF0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbb1p1x%2FbtqF60gerRL%2FuH7PnPMkOCSudtyRGwrPF0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;354&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;이유가 무얼까 고민해봤는데 구조가 이렇게 되어있어서인 것 같음&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;490&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cu5yeV/btqGbaWoTul/SLK1UkhomIeu9wjG2FNtrK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cu5yeV/btqGbaWoTul/SLK1UkhomIeu9wjG2FNtrK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cu5yeV/btqGbaWoTul/SLK1UkhomIeu9wjG2FNtrK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcu5yeV%2FbtqGbaWoTul%2FSLK1UkhomIeu9wjG2FNtrK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;490&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;재설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Root Build script만 넣었는데 안되어서 확인해보니 Build File을 build.gradle이라도 적어줬어야 했다 :&amp;lt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpXAJb/btqGbOsDx7X/iitVF03agzDHKaLBs4pUS1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpXAJb/btqGbOsDx7X/iitVF03agzDHKaLBs4pUS1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpXAJb/btqGbOsDx7X/iitVF03agzDHKaLBs4pUS1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpXAJb%2FbtqGbOsDx7X%2FiitVF03agzDHKaLBs4pUS1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;성공&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ddV4iW/btqGcfQ5Buu/zUiqvIOKTPGp7K3lIgjEr0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ddV4iW/btqGcfQ5Buu/zUiqvIOKTPGp7K3lIgjEr0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ddV4iW/btqGcfQ5Buu/zUiqvIOKTPGp7K3lIgjEr0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FddV4iW%2FbtqGcfQ5Buu%2FzUiqvIOKTPGp7K3lIgjEr0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;[생성된 파일 로깅하기]&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Bulid 단계에 다음과 같이 추가 - Execute shell&lt;/p&gt;
&lt;pre id=&quot;code_1596294211401&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;echo &quot;생성된 jar 파일&quot; ; cd backend/board/build/libs/; ls -a *.jar&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/chmIaK/btqGd9PVTr8/sXh5kAdgZka6XjuLeY7BO0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/chmIaK/btqGd9PVTr8/sXh5kAdgZka6XjuLeY7BO0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/chmIaK/btqGd9PVTr8/sXh5kAdgZka6XjuLeY7BO0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FchmIaK%2FbtqGd9PVTr8%2FsXh5kAdgZka6XjuLeY7BO0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Jenkins Build Console log&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c1mYs3/btqGdtBxSrD/y78TkmYe8TWeQIuOdEkPl1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c1mYs3/btqGdtBxSrD/y78TkmYe8TWeQIuOdEkPl1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c1mYs3/btqGdtBxSrD/y78TkmYe8TWeQIuOdEkPl1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc1mYs3%2FbtqGdtBxSrD%2Fy78TkmYe8TWeQIuOdEkPl1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;끝! 다음은 CI/CD 적용을 해야겠다.&lt;/p&gt;</description>
      <category>우아한 테크코스/이것저것</category>
      <category>jenkins</category>
      <category>jenkins github 연동</category>
      <author>jamie.</author>
      <guid isPermaLink="true">https://jamie95.tistory.com/181</guid>
      <comments>https://jamie95.tistory.com/181#entry181comment</comments>
      <pubDate>Sun, 2 Aug 2020 00:13:39 +0900</pubDate>
    </item>
    <item>
      <title>Docker를 이용한 Jenkins Gradle, JDK 설정</title>
      <link>https://jamie95.tistory.com/180</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;제목을 입력해주세요._003 (12).png&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;300&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uPmzu/btqX6fE8x0q/bI2ZMfppar7PmP31LTvKyk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uPmzu/btqX6fE8x0q/bI2ZMfppar7PmP31LTvKyk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uPmzu/btqX6fE8x0q/bI2ZMfppar7PmP31LTvKyk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuPmzu%2FbtqX6fE8x0q%2FbI2ZMfppar7PmP31LTvKyk%2Fimg.png&quot; data-filename=&quot;제목을 입력해주세요._003 (12).png&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;300&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;[Jenkins] 접속 - [Jenkins 관리] - [Global Tool Configuration]&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;들어가기 전에 플러그인 관리 업데이트 가능함 떠서 업데이트 후 진행함&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NkXrF/btqGbaItPGn/Gb6ld8crjsFEmGZbqOo0Bk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NkXrF/btqGbaItPGn/Gb6ld8crjsFEmGZbqOo0Bk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NkXrF/btqGbaItPGn/Gb6ld8crjsFEmGZbqOo0Bk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNkXrF%2FbtqGbaItPGn%2FGb6ld8crjsFEmGZbqOo0Bk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;기본 설정&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;git이 설정되어 있음&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9KE55/btqF9DqAWe6/Kk4zCAHERY114Y9U8wtFSk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9KE55/btqF9DqAWe6/Kk4zCAHERY114Y9U8wtFSk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9KE55/btqF9DqAWe6/Kk4zCAHERY114Y9U8wtFSk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9KE55%2FbtqF9DqAWe6%2FKk4zCAHERY114Y9U8wtFSk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqHbWv/btqGbOybz2z/ykt76AkKBQrkaEhPNKhx60/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqHbWv/btqGbOybz2z/ykt76AkKBQrkaEhPNKhx60/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqHbWv/btqGbOybz2z/ykt76AkKBQrkaEhPNKhx60/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqHbWv%2FbtqGbOybz2z%2Fykt76AkKBQrkaEhPNKhx60%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;[JVM] 등록하기&lt;/h2&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Docker Hub에서&amp;nbsp;&lt;span&gt;&lt;a href=&quot;https://hub.docker.com/layers/jenkinsci/blueocean/latest/images/sha256-03aab51454f86d443b874564cb3dc75af8b14a0114c61e835665dbd0a8fc6597?context=explore&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;jenkinsci/blueocean&lt;/a&gt; 이미지 확인&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1596157082162&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ENV JAVA_HOME=/usr/lib/jvm/java-1.8-openjdk&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c0nKDA/btqGchGUa6o/yRekFK76IQgzlTxz9H1lIk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c0nKDA/btqGchGUa6o/yRekFK76IQgzlTxz9H1lIk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c0nKDA/btqGchGUa6o/yRekFK76IQgzlTxz9H1lIk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc0nKDA%2FbtqGchGUa6o%2FyRekFK76IQgzlTxz9H1lIk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Install automatically 해제 후 JAVA_HOME 이미지와 경로 동일하게 설정&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLJ7Xk/btqGbN67w40/CWJQNSMtPSsKlNKNMHcKw1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLJ7Xk/btqGbN67w40/CWJQNSMtPSsKlNKNMHcKw1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLJ7Xk/btqGbN67w40/CWJQNSMtPSsKlNKNMHcKw1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLJ7Xk%2FbtqGbN67w40%2FCWJQNSMtPSsKlNKNMHcKw1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;[Gradle] 등록하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;gradle은 자동 설치로 등록해보기&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dr80sx/btqF8vGUrod/E9SksJeNZIAsOZkm6955Hk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dr80sx/btqF8vGUrod/E9SksJeNZIAsOZkm6955Hk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dr80sx/btqF8vGUrod/E9SksJeNZIAsOZkm6955Hk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdr80sx%2FbtqF8vGUrod%2FE9SksJeNZIAsOZkm6955Hk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;[저장]&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설정 다 되었으면 저장하기&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CnMxU/btqGcgBejqu/MO8Jqt9WLKT70MCRiQjYBk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CnMxU/btqGcgBejqu/MO8Jqt9WLKT70MCRiQjYBk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CnMxU/btqGcgBejqu/MO8Jqt9WLKT70MCRiQjYBk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCnMxU%2FbtqGcgBejqu%2FMO8Jqt9WLKT70MCRiQjYBk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>우아한 테크코스/이것저것</category>
      <category>jenkins gradle 설정</category>
      <category>jenkins jdk 설정</category>
      <author>jamie.</author>
      <guid isPermaLink="true">https://jamie95.tistory.com/180</guid>
      <comments>https://jamie95.tistory.com/180#entry180comment</comments>
      <pubDate>Fri, 31 Jul 2020 10:15:09 +0900</pubDate>
    </item>
    <item>
      <title>Ubuntu - 재부팅시 Docker를 이용한 Jenkins 자동으로 ON</title>
      <link>https://jamie95.tistory.com/179</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;제목을 입력해주세요._003 (11).png&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;300&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FPhOQ/btqXXjCNhAn/EVCUbuI4GC0IptxZ6Rtdb0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FPhOQ/btqXXjCNhAn/EVCUbuI4GC0IptxZ6Rtdb0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FPhOQ/btqXXjCNhAn/EVCUbuI4GC0IptxZ6Rtdb0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFPhOQ%2FbtqXXjCNhAn%2FEVCUbuI4GC0IptxZ6Rtdb0%2Fimg.png&quot; data-filename=&quot;제목을 입력해주세요._003 (11).png&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;300&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Docker 컨테이너 확인 후 제거&lt;/h2&gt;
&lt;pre id=&quot;code_1596153242196&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ sudo docker ps
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                                              NAMES
4bb24e16a109        jenkinsci/blueocean   &quot;/sbin/tini -- /usr/&amp;hellip;&quot;   6 seconds ago       Up 5 seconds        0.0.0.0:50000-&amp;gt;50000/tcp, 0.0.0.0:8080-&amp;gt;8080/tcp   jenkins-blueocean
b9754d7f715e        docker:dind           &quot;dockerd-entrypoint.&amp;hellip;&quot;   2 minutes ago       Up 2 minutes        2375/tcp, 0.0.0.0:2376-&amp;gt;2376/tcp                   jenkins-docker

$ sudo docker stop jenkins-blueocean
$ sudo docker stop jenkins-docker

$ sudo docker rm jenkins-blueocean
$ sudo docker rm jenkins-docker

// 안 될경우 강제 삭제
$ sudo docker rm -f jenkins-blueocean
$ sudo docker rm -f jenkins-docker&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Docker 컨테이너 다시 띄우기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;다시 띄우는 이유 : --rm 옵션을 사용했었는데, 그렇게 되면 재부팅시 컨테이너 정보를 상실하여 Systemctl로 등록을 해도 정상 동작을 하지 않기 때문에 해당 옵션 제외하여 띄움&lt;/p&gt;
&lt;pre id=&quot;code_1596154883234&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ sudo docker container run \
  --name jenkins-docker \
  --detach \
  --privileged \
  --network jenkins \
  --network-alias docker \
  --env DOCKER_TLS_CERTDIR=/certs \
  --volume jenkins-docker-certs:/certs/client \
  --volume jenkins-data:/var/jenkins_home \
  --publish 2376:2376 \
  --restart=always \
  docker:dind
$ sudo docker container run \
  --name jenkins-blueocean \
  --detach \
  --network jenkins \
  --env DOCKER_HOST=tcp://docker:2376 \
  --env DOCKER_CERT_PATH=/certs/client \
  --env DOCKER_TLS_VERIFY=1 \
  --publish 8080:8080 \
  --publish 50000:50000 \
  --volume jenkins-data:/var/jenkins_home \
  --volume jenkins-docker-certs:/certs/client:ro \
  jenkinsci/blueocean
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;jenkins-blueocean.service 생성&lt;/h2&gt;
&lt;pre id=&quot;code_1596153543250&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ sudo vi /etc/systemd/system/jenkins-blueocean.service 

[Unit]
Description=docker jenkins-blueocean Service
After=docker.service
Requires=docker.service

[Service]
Restart=always
ExecStart=/usr/bin/docker start -a jenkins-blueocean
ExecStop=/usr/bin/docker stop -t 2 jenkins-blueocean

[Install]
WantedBy=multi-user.target&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;jenkins-docker.service 생성&lt;/h2&gt;
&lt;pre id=&quot;code_1596153238237&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ sudo vi /etc/systemd/system/jenkins-docker.service
[Unit]
Description=docker jenkins-docker Service
After=docker.service
Requires=docker.service

[Service]
Restart=always
ExecStart=/usr/bin/docker start -a jenkins-docker
ExecStop=/usr/bin/docker stop -t 2 jenkins-docker

[Install]
WantedBy=multi-user.target&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;jenkins 컨테이너들 데몬 등록&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데몬 : 쉽게 이해하자면 서버 시작시 실행되는 프로그램&lt;/p&gt;
&lt;pre id=&quot;code_1596153269960&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ sudo systemctl enable jenkins-blueocean.service
Created symlink /etc/systemd/system/multi-user.target.wants/jenkins-blueocean.service &amp;rarr; /etc/systemd/system/jenkins-blueocean.service.
$ sudo systemctl enable jenkins-docker.service
Created symlink /etc/systemd/system/multi-user.target.wants/jenkins-docker.service &amp;rarr; /etc/systemd/system/jenkins-docker.service.&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;서버 재부팅 - 확인 완료&lt;/h2&gt;
&lt;pre id=&quot;code_1596155423167&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ sudo docker ps
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                                              NAMES
bc433d480fa7        jenkinsci/blueocean   &quot;/sbin/tini -- /usr/&amp;hellip;&quot;   18 minutes ago      Up 4 seconds        0.0.0.0:50000-&amp;gt;50000/tcp, 0.0.0.0:8888-&amp;gt;8080/tcp   jenkins-blueocean
9fee1c2f7b77        docker:dind           &quot;dockerd-entrypoint.&amp;hellip;&quot;   18 minutes ago      Up 5 seconds        2375/tcp, 0.0.0.0:2376-&amp;gt;2376/tcp                   jenkins-docker&lt;/code&gt;&lt;/pre&gt;</description>
      <category>우아한 테크코스/이것저것</category>
      <category>docker</category>
      <category>jenkins 데몬</category>
      <category>도커 데몬</category>
      <category>도커 컨테이너 데몬</category>
      <author>jamie.</author>
      <guid isPermaLink="true">https://jamie95.tistory.com/179</guid>
      <comments>https://jamie95.tistory.com/179#entry179comment</comments>
      <pubDate>Fri, 31 Jul 2020 09:34:14 +0900</pubDate>
    </item>
    <item>
      <title>인텔리제이 cannot resolve symbol... 발생하는 경우</title>
      <link>https://jamie95.tistory.com/178</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;제목을 입력해주세요._003 (10).png&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;300&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/byvjDU/btqX3267LLE/l9A3lBNWi6QFaPjp0SjOGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/byvjDU/btqX3267LLE/l9A3lBNWi6QFaPjp0SjOGk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/byvjDU/btqX3267LLE/l9A3lBNWi6QFaPjp0SjOGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbyvjDU%2FbtqX3267LLE%2Fl9A3lBNWi6QFaPjp0SjOGk%2Fimg.png&quot; data-filename=&quot;제목을 입력해주세요._003 (10).png&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;300&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 상황&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;git을 pull 받았는데, 잘 되던 파일들이 갑자기 cannot resolve symbol이라고 뜨면서 빌드조차 되지 않음&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;해볼 만한 것&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. Build - Rebuild Project (다시 빌드하기)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. File - Invalidate Caches / Restart (캐시 날리기)&lt;/p&gt;</description>
      <category>우아한 테크코스/이것저것</category>
      <author>jamie.</author>
      <guid isPermaLink="true">https://jamie95.tistory.com/178</guid>
      <comments>https://jamie95.tistory.com/178#entry178comment</comments>
      <pubDate>Fri, 31 Jul 2020 00:06:54 +0900</pubDate>
    </item>
  </channel>
</rss>