<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Jenkins on jaylab-log</title><link>https://jaylab.link/tags/jenkins/</link><description>Recent content in Jenkins on jaylab-log</description><generator>Hugo</generator><language>ko-kr</language><lastBuildDate>Thu, 07 Aug 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://jaylab.link/tags/jenkins/index.xml" rel="self" type="application/rss+xml"/><item><title>배포할 때마다 끊기던 서비스를 무중단으로: Jenkins Rolling Deployment에서 내린 네 가지 결정</title><link>https://jaylab.link/jenkins-rolling-deploy-pipeline/</link><pubDate>Thu, 07 Aug 2025 00:00:00 +0000</pubDate><guid>https://jaylab.link/jenkins-rolling-deploy-pipeline/</guid><description>타겟 그룹 전체를 동시에 재시작하던 Jenkins 파이프라인을 서버별 순차 배포와 LB 제어로 바꾸며 내린 네 가지 결정과 아직 남은 한계</description></item><item><title>Tomcat 배포 방식의 올바른 이해와 구조적 분석</title><link>https://jaylab.link/tomcat-improve-cicd-pipeline/</link><pubDate>Thu, 11 May 2023 00:00:00 +0000</pubDate><guid>https://jaylab.link/tomcat-improve-cicd-pipeline/</guid><description>&lt;p&gt;Tomcat 서버의 애플리케이션 배포는 웹 애플리케이션 운영에서 가장 기본적인 영역이면서도, 실제로는 많은 개발자들이 정확한 동작 원리를 놓치고 있는 부분이다. 최근 고객사 운영 서버의 &lt;code&gt;server.xml&lt;/code&gt; 설정을 분석하던 중, &lt;code&gt;&amp;lt;Context&amp;gt;&lt;/code&gt; 태그와 &lt;code&gt;&amp;lt;Host&amp;gt;&lt;/code&gt;의 &lt;code&gt;appBase&lt;/code&gt; 속성이 혼재된 구성에서 WAR 파일 배포 과정에 대한 오해를 발견했다.&lt;/p&gt;
&lt;h3 id="기존의-배포-설정"&gt;기존의 배포 설정&lt;/h3&gt;
&lt;p&gt;운영 중인 서버의 &lt;code&gt;server.xml&lt;/code&gt; 설정:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-xml" data-lang="xml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;Host&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;localhost&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;appBase=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;/home/manager/eps/webapps&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;unpackWARs=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;true&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;autoDeploy=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;true&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;Context&lt;/span&gt; &lt;span class="na"&gt;path=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;docBase=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;/home/manager/eps/webapps/legacy&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;reloadable=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;false&amp;#34;&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;Context&lt;/span&gt; &lt;span class="na"&gt;path=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;/v5&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;docBase=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;/home/manager/eps/webapps/ui5&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;reloadable=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;false&amp;#34;&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c"&gt;&amp;lt;!-- ... AccessLogValve 설정 ... --&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;/Host&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;이 설정에서 명시적인 &lt;code&gt;&amp;lt;Context&amp;gt;&lt;/code&gt; 배포와 &lt;code&gt;appBase&lt;/code&gt;를 통한 자동 배포가 공존하고 있었음.. 그런데 여기서 문제가 발생. 새로운 버전의 &lt;code&gt;ui5.war&lt;/code&gt; 파일을 배포하려 할 때, 기존 관리자는 다음과 같은 절차를 따르고 있었다.&lt;/p&gt;</description></item></channel></rss>