gc-guide/src/content/NexusUsage.tsx

141 lines
6.0 KiB
TypeScript
Raw Normal View 히스토리

import { Alert } from '../components/common/Alert';
import { CodeBlock } from '../components/common/CodeBlock';
export default function NexusUsage() {
return (
<div className="max-w-4xl mx-auto py-12 px-6">
<h1 className="text-3xl font-bold text-text-primary mb-2">Nexus </h1>
<p className="text-text-secondary mb-8">
Maven, Gradle, npm Nexus .
</p>
<Alert type="info" title="Nexus 주소">
<strong>nexus.gc-si.dev</strong> UI에서 .
</Alert>
{/* 팀 정책 vs 개인 설정 구분 */}
<div className="bg-accent-soft border border-accent/20 rounded-xl p-4 mt-6 mb-8">
<h3 className="font-semibold text-accent text-sm mb-2"> vs </h3>
<ul className="text-sm text-text-secondary space-y-1">
<li><span className="text-accent font-medium"> </span> Nexus를 . URL은 .</li>
<li><span className="text-text-muted font-medium"> </span> (username/password) . .</li>
</ul>
</div>
{/* Maven */}
<h2 className="text-xl font-bold text-text-primary mt-10 mb-4">Maven </h2>
<p className="text-text-secondary mb-2">
릿 Nexus URL이 .
.
</p>
<p className="text-xs text-text-muted mb-4">
. Git에 .
</p>
<CodeBlock
language="xml"
filename="~/.m2/settings.xml (개인 로컬 파일)"
code={`<settings>
<mirrors>
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>https://nexus.gc-si.dev/repository/maven-public/</url>
</mirror>
</mirrors>
<servers>
<server>
<id>nexus</id>
<username>\${env.NEXUS_USERNAME}</username>
<password>\${env.NEXUS_PASSWORD}</password>
</server>
</servers>
</settings>`}
/>
{/* Gradle */}
<h2 className="text-xl font-bold text-text-primary mt-10 mb-4">Gradle </h2>
<p className="text-text-secondary mb-2">
<code className="bg-bg-tertiary px-1 rounded">build.gradle</code> repositories ( ),
.
</p>
<CodeBlock
language="groovy"
filename="build.gradle (프로젝트에 포함)"
code={`repositories {
maven {
url 'https://nexus.gc-si.dev/repository/maven-public/'
credentials {
username = findProperty('nexusUsername') ?: System.getenv('NEXUS_USERNAME')
password = findProperty('nexusPassword') ?: System.getenv('NEXUS_PASSWORD')
}
}
}`}
/>
<Alert type="info">
<code className="bg-bg-tertiary px-1 rounded">~/.gradle/gradle.properties</code>( ){' '}
<code className="bg-bg-tertiary px-1 rounded">nexusUsername</code>/<code className="bg-bg-tertiary px-1 rounded">nexusPassword</code>
, .
</Alert>
{/* npm */}
<h2 className="text-xl font-bold text-text-primary mt-10 mb-4">npm </h2>
<p className="text-text-secondary mb-4">
<code className="bg-bg-tertiary px-1 rounded">.npmrc</code> URL만 .
<code className="bg-bg-tertiary px-1 rounded">~/.npmrc</code> .
</p>
<CodeBlock
language="ini"
filename=".npmrc (프로젝트에 포함 — URL만)"
code={`registry=https://nexus.gc-si.dev/repository/npm-public/
always-auth=true`}
/>
<CodeBlock
language="ini"
filename="~/.npmrc (개인 로컬 파일 — 인증)"
code={`//nexus.gc-si.dev/repository/npm-public/:_auth=<Base64 인코딩된 인증 토큰>`}
/>
<Alert type="warning" title="보안 주의">
<code className="bg-bg-tertiary px-1 rounded">_auth</code> {' '}
<code className="bg-bg-tertiary px-1 rounded">.npmrc</code> .
<code className="bg-bg-tertiary px-1 rounded">~/.npmrc</code> .
.
</Alert>
{/* 패키지 배포 */}
<h2 className="text-xl font-bold text-text-primary mt-10 mb-4"> </h2>
<p className="text-text-secondary mb-4">
Nexus에 .
</p>
<h3 className="text-lg font-semibold text-text-primary mt-6 mb-3">Maven </h3>
<CodeBlock
language="xml"
filename="pom.xml (프로젝트에 포함)"
code={`<distributionManagement>
<repository>
<id>nexus</id>
<url>https://nexus.gc-si.dev/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>nexus</id>
<url>https://nexus.gc-si.dev/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>`}
/>
<CodeBlock language="bash" code="mvn deploy" />
<h3 className="text-lg font-semibold text-text-primary mt-6 mb-3">npm </h3>
<CodeBlock
language="json"
filename="package.json (프로젝트에 포함)"
code={`{
"publishConfig": {
"registry": "https://nexus.gc-si.dev/repository/npm-hosted/"
}
}`}
/>
<CodeBlock language="bash" code="npm publish" />
</div>
);
}