<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Nexus-Repository on K-Life Hack | Systems Architecture &amp; DevOps</title><link>https://klifehack.com/en/tags/nexus-repository/</link><description>Recent content in Nexus-Repository on K-Life Hack | Systems Architecture &amp; DevOps</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Thu, 09 Jul 2026 10:37:05 +0900</lastBuildDate><atom:link href="https://klifehack.com/en/tags/nexus-repository/index.xml" rel="self" type="application/rss+xml"/><item><title>Artifact Management Design and Pipeline Integration using Nexus Repository</title><link>https://klifehack.com/en/p/nexus-repository-artifact-management-design/</link><pubDate>Thu, 09 Jul 2026 10:37:05 +0900</pubDate><guid>https://klifehack.com/en/p/nexus-repository-artifact-management-design/</guid><description>&lt;h1 id="artifact-management-design-and-troubleshooting-using-nexus-repository"&gt;Artifact Management Design and Troubleshooting using Nexus Repository
&lt;/h1&gt;&lt;p&gt;In modern infrastructure configurations where CI/CD pipeline automation is advancing, it is difficult to fully guarantee deployment consistency and reproducibility through source code management (SCM) optimization alone. Storing binary artifacts (JAR, WAR, npm packages, Docker images, etc.) generated by the build process directly in SCM is considered an anti-pattern as it leads to repository bloat and performance degradation. To centrally manage these build artifacts and external dependency libraries and build a highly reliable delivery line, the introduction of a dedicated artifact repository is essential.&lt;/p&gt;
&lt;h2 id="1-the-three-major-topology-designs-of-nexus-repository"&gt;1. The Three Major Topology Designs of Nexus Repository
&lt;/h2&gt;&lt;p&gt;Nexus Repository achieves efficient package delivery by combining three types of repositories with different roles (Hosted, Proxy, and Group).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Hosted Repository&lt;/b&gt;: An area for storing unique private packages developed and built within the organization. It hosts highly confidential modules that are not made public, as well as build artifacts deployed directly from CI/CD pipelines.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Proxy Repository&lt;/b&gt;: Acts as a cache proxy for public registries such as Maven Central, npmjs.org, and Docker Hub. Once a dependency is downloaded, it is cached in the local Blob Store, reducing traffic to the external network and significantly improving build speeds for subsequent runs.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Group Repository&lt;/b&gt;: A layer that virtually integrates multiple Hosted and Proxy repositories into a single endpoint. Developers and CI/CD clients can transparently access both internal artifacts and external libraries by referencing only this single URL.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="2-client-integration-implementation-details"&gt;2. Client Integration Implementation Details
&lt;/h2&gt;&lt;h3 id="21-maven-integration-settings-settingsxml"&gt;2.1 Maven Integration Settings (&lt;code&gt;settings.xml&lt;/code&gt;)
&lt;/h3&gt;&lt;p&gt;Configuration for blocking direct external access and routing through the Nexus Group repository during a Maven build.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-xml" data-lang="xml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;&amp;lt;settings&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;xmlns=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;http://maven.apache.org/SETTINGS/1.0.0&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;xmlns:xsi=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;http://www.w3.org/2001/XMLSchema-instance&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;xsi:schemalocation=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd&amp;#34;&lt;/span&gt;&lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;&amp;lt;mirrors&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;&amp;lt;mirror&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;&amp;lt;id&amp;gt;&lt;/span&gt;nexus-group&lt;span style="color:#f92672"&gt;&amp;lt;/id&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;&amp;lt;mirrorof&amp;gt;&lt;/span&gt;*&lt;span style="color:#f92672"&gt;&amp;lt;/mirrorof&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;&amp;lt;name&amp;gt;&lt;/span&gt;Internal Nexus Group Repository&lt;span style="color:#f92672"&gt;&amp;lt;/name&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;&amp;lt;url&amp;gt;&lt;/span&gt;http://nexus.internal.net/repository/maven-public/&lt;span style="color:#f92672"&gt;&amp;lt;/url&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;&amp;lt;/mirror&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;&amp;lt;/mirrors&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;&amp;lt;servers&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;&amp;lt;server&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;&amp;lt;id&amp;gt;&lt;/span&gt;nexus-group&lt;span style="color:#f92672"&gt;&amp;lt;/id&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;&amp;lt;username&amp;gt;&lt;/span&gt;deployment-user&lt;span style="color:#f92672"&gt;&amp;lt;/username&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;&amp;lt;password&amp;gt;&lt;/span&gt;SecurePassword123!&lt;span style="color:#f92672"&gt;&amp;lt;/password&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;&amp;lt;/server&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;&amp;lt;/servers&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;&amp;lt;/settings&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="22-docker-daemon-integration-settings-daemonjson"&gt;2.2 Docker Daemon Integration Settings (&lt;code&gt;daemon.json&lt;/code&gt;)
&lt;/h3&gt;&lt;p&gt;Application of settings for verification environments or proxy mirror specifications when using Nexus as a private Docker registry via HTTP communication.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;registry-mirrors&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;https://nexus.internal.net/repository/docker-proxy/&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ],
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;insecure-registries&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;nexus.internal.net:5001&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="3-lifecycle-management-and-cleanup-policies"&gt;3. Lifecycle Management and Cleanup Policies
&lt;/h2&gt;&lt;p&gt;The most frequent issue in artifact repository operations is storage capacity exhaustion caused by &amp;ldquo;Snapshots&amp;rdquo; and temporary images generated with every build. Automation of lifecycle management is required to prevent this.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;b&gt;Formulation of Component Cleanup Policies&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Snapshot&lt;/code&gt; repositories: Automatic deletion of artifacts not updated within the last 14 days that are not release versions.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Docker&lt;/code&gt; registries: Purging of untagged (dangling) images or images exceeding a specific retention period (e.g., 30 days).&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start="2"&gt;
&lt;li&gt;&lt;b&gt;Blob Store Compaction (Task Scheduling)&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;In Nexus, deleting a component does not immediately free up disk space. Configuration of a schedule to periodically run the &amp;ldquo;Admin - Compact blob store&amp;rdquo; task is necessary to physically delete logically deleted data.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="4-troubleshooting"&gt;4. Troubleshooting
&lt;/h2&gt;&lt;h3 id="-friction-point-1-write-errors-due-to-blob-store-exhaustion-http-500--read-only-mode"&gt;💡 Friction Point 1: Write errors due to Blob Store exhaustion (HTTP 500 / Read-only Mode)
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Cause&lt;/b&gt;: When disk usage exceeds a threshold (default is 90%), Nexus automatically shifts the Blob Store to Read-only mode to prevent data corruption.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Countermeasure&lt;/b&gt;: Manual deletion of unnecessary metadata or old Snapshots via tasks. Execution of the Blob Store compaction task to release physical disk space.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="-friction-point-2-ssl-handshake-errors-via-proxy-repository-pkix-path-building-failed"&gt;⚠️ Friction Point 2: SSL handshake errors via Proxy Repository (PKIX path building failed)
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Cause&lt;/b&gt;: If an internal proxy or SSL visualization appliance is present, the certificate chain for external registries may be broken, causing the JVM running Nexus to reject the connection.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Countermeasure&lt;/b&gt;: Acquisition of the certificate for the target host from the Nexus administration screen (&lt;code&gt;Security -&amp;amp;gt; SSL Certificates&lt;/code&gt;) and addition to the Nexus Truststore.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="5-operational-verification-logs"&gt;5. Operational Verification Logs
&lt;/h2&gt;&lt;p&gt;Simulation of verification terminal logs to confirm normal operability after infrastructure construction.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ curl -I -u deployment-user:SecurePassword123! http://nexus.internal.net/service/rest/v1/status
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;HTTP/1.1 200 OK
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Date: Thu, 09 Jul 2026 09:00:00 GMT
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Server: Nexus/3.68.0-01 (OSS)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;X-Content-Type-Options: nosniff
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Content-Length: 0
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ docker login nexus.internal.net:5001 -u deployment-user -p SecurePassword123!
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;WARNING! Using --password via the CLI is insecure. Use --password-stdin.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Login Succeeded
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ docker pull nexus.internal.net:5001/alpine:3.18
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;3.18: Pulling from alpine
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Digest: sha256:48d818124339491250f023456789abcdef1234567890abcdef1234567890ab
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Status: Downloaded newer image for nexus.internal.net:5001/alpine:3.18
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="6-operational-notes"&gt;6. Operational Notes
&lt;/h2&gt;&lt;p&gt;Integrating Nexus Repository into a CI/CD pipeline goes beyond merely securing storage; it directly leads to faster builds, improved resilience against external failures, and enhanced supply chain security. Correctly understanding the characteristics of Hosted, Proxy, and Group repositories and incorporating appropriate cleanup policies and disk monitoring into the design are the keys to long-term stable operation.&lt;/p&gt;</description></item></channel></rss>