<?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>CI/CD on jaylab-log</title><link>https://jaylab.link/tags/ci/cd/</link><description>Recent content in CI/CD on jaylab-log</description><generator>Hugo</generator><language>ko-kr</language><lastBuildDate>Thu, 24 Jul 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://jaylab.link/tags/ci/cd/index.xml" rel="self" type="application/rss+xml"/><item><title>기존 JDK를 지우지 않고 JDK 11로 빌드하기: SDKMAN이 PATH를 가로채는 원리</title><link>https://jaylab.link/jdk-version-manager-sdkman/</link><pubDate>Thu, 24 Jul 2025 00:00:00 +0000</pubDate><guid>https://jaylab.link/jdk-version-manager-sdkman/</guid><description>로컬은 Corretto 21인데 빌드 테스트는 JDK 11이 필요할 때, SDKMAN이 기존 JDK를 건드리지 않고 PATH 우선순위만 가로채 세션 단위로 버전을 바꾸는 원리와 기존 JDK를 처리하는 세 가지 선택</description></item><item><title>Docker Buildx를 사용한 멀티 아키텍처 이미지 빌드, Github Actions 적용 사례</title><link>https://jaylab.link/docker-buildx-multiarch-and-git-actions/</link><pubDate>Thu, 13 Jun 2024 00:00:00 +0000</pubDate><guid>https://jaylab.link/docker-buildx-multiarch-and-git-actions/</guid><description>Docker Buildx는 다양한 아키텍처에서 실행 가능한 이미지를 빌드할 수 있는 Docker CLI이다. 이를 활용하면 특정 아키텍쳐에서 지원하는 이미지로 빌드할 수 있다.</description></item><item><title>[ArgoCD] Error: Unable to create ‘..git/index.lock’: File exists</title><link>https://jaylab.link/argocd-index-lock-error/</link><pubDate>Thu, 02 May 2024 00:00:00 +0000</pubDate><guid>https://jaylab.link/argocd-index-lock-error/</guid><description>&lt;h4 id="argocd-application-생성시-에러-발생"&gt;ArgoCD Application 생성시 에러 발생&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;▼ Error message&lt;/strong&gt;
Unable to create application: application spec for saassss is invalid: InvalidSpecError: Unable to get app details: rpc error: code = Internal desc = Failed to checkout FETCH_HEAD: &lt;code&gt;git checkout --force FETCH_HEAD&lt;/code&gt; failed exit status 128: fatal: Unable to create ‘..git/index.lock’: File exists. Another git process seems to be running in this repository, e.g. an editor opened by ‘git commit’. Please make sure all processes are terminated then try again. If it still fails, a git process may have crashed in this repository earlier: remove the file manually to continue.&lt;/p&gt;</description></item><item><title>[CI/CD] Github Actions: build, push, update another repo file</title><link>https://jaylab.link/git-actions-build-push-update/</link><pubDate>Fri, 19 Apr 2024 00:00:00 +0000</pubDate><guid>https://jaylab.link/git-actions-build-push-update/</guid><description>Github Actions을 사용하여 멀티플랫폼이 지원되는 이미지 빌드 방법과 Docker Hub 혹은 ECR에 Push하는 방법. 그리고 제 3의 Git Repo 파일 내용 변경 방법을 정리해보았다.</description></item><item><title>Github Actions &amp; ArgoCD CI/CD (for K8S, Java App)</title><link>https://jaylab.link/git-actions-argocd-cicd-minikube/</link><pubDate>Fri, 05 Apr 2024 00:00:00 +0000</pubDate><guid>https://jaylab.link/git-actions-argocd-cicd-minikube/</guid><description>Github Actions를 활용해서 애플리케이션 Build &amp;amp; Image push. 애플리케이션과 Kubernetes manifest 파일 변경점 발생시 ArgoCD를 통하여 로컬 Minikube 환경에 자동배포 환경 구축하기</description></item><item><title>ArgoCD 활용 Minikube 환경에 배포(feat. AWS ECR)</title><link>https://jaylab.link/argocd-ecr-image-pull-error/</link><pubDate>Thu, 28 Mar 2024 00:00:00 +0000</pubDate><guid>https://jaylab.link/argocd-ecr-image-pull-error/</guid><description>ArgoCD를 통해 내 로컬에 Minikube 클러스터 환경이 구성되도록 만들었다. 그리고 Dockerhub Public image를 가져오던 기존방식에서 AWS ECR의 image를 pull 하는 방식으로 바꿔보았고, 이 과정에서 발생한 문제에 대해 알게된 원인과 해결방법을 기록해보았다.</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>