- sourceBundle Gradle task 추가: 내부망 소스 번들 빌드 지원

- Jenkinsfile 수정: sourceBundle 빌드/아티팩트 보관 적용
- README 갱신: sourceBundle 사용법 추가
This commit is contained in:
Rinjae
2026-07-24 14:21:42 +09:00
parent a9d6567ed4
commit 2dc31a16d7
3 changed files with 66 additions and 9 deletions
Vendored
+8 -6
View File
@@ -38,7 +38,7 @@ pipeline {
stage('Build JAR') { stage('Build JAR') {
steps { steps {
sh 'gradle clean build --no-daemon' sh 'gradle clean build sourceBundle --no-daemon'
} }
} }
@@ -69,18 +69,20 @@ pipeline {
rm -rf build/dist rm -rf build/dist
mkdir -p build/dist mkdir -p build/dist
cp build/libs/damo-manager.jar build/dist/ cp build/libs/damo-manager.jar build/dist/
cp build/distributions/damo-manager-src-*.zip build/dist/
cp README.md build/dist/ cp README.md build/dist/
cd build/dist cd build/dist
sha1sum damo-manager.jar README.md > SHA1SUMS for f in damo-manager.jar damo-manager-src-*.zip README.md; do
sha256sum damo-manager.jar README.md > SHA256SUMS sha256sum "$f" > "$f.sha256"
done
ls -la ls -la
echo "---- SHA256SUMS ----" echo "---- *.sha256 ----"
cat SHA256SUMS cat *.sha256
''' '''
} }
post { post {
success { success {
archiveArtifacts artifacts: 'build/dist/damo-manager.jar,build/dist/README.md,build/dist/SHA1SUMS,build/dist/SHA256SUMS', fingerprint: true archiveArtifacts artifacts: 'build/dist/damo-manager.jar,build/dist/damo-manager-src-*.zip,build/dist/README.md,build/dist/*.sha256', fingerprint: true
} }
} }
} }
+24 -3
View File
@@ -39,14 +39,35 @@ gradle runBypassSmoke # bypass 모드 (기본값, 옵션 없음)
gradle runFakeSmoke # fake 모드 (-Ddamo-manager.enabled=true, scpdb 부재) gradle runFakeSmoke # fake 모드 (-Ddamo-manager.enabled=true, scpdb 부재)
``` ```
### 내부망 반입용 소스 번들 (sourceBundle)
빌드된 jar 를 이메일에 첨부하면 수신 측 메일 서버에서 차단되는 경우가 많다. 대신 소스 + 빌드 스크립트를 zip 으로 패키징해 반입하고, 내부망에서 빌드한다.
```bash
gradle sourceBundle
ls build/distributions/ # damo-manager-src-1.0.0.zip
```
zip 에는 소스 전체와 **JDK 만으로 동작하는** 빌드 스크립트(`build-internal.sh` / `build-internal.bat`)가 들어 있다. 내부망에 Gradle·인터넷이 없어도 된다.
```bash
# 내부망에서 (JDK 8+ 필요)
unzip damo-manager-src-1.0.0.zip
cd damo-manager-src-1.0.0
sh build-internal.sh # Windows 는 build-internal.bat
java -jar build-internal/damo-manager.jar sha256 test # 검증
```
JDK 9 이상이면 스크립트가 자동으로 `--release 8` 을 적용한다. 상세는 번들 내 `BUILD-INTERNAL.md` 참고. zip 첨부도 차단되는 메일 서버라면 확장자를 `.zip.txt` 로 바꿔 발송 후 내부에서 원복한다.
### Jenkins 빌드 ### Jenkins 빌드
저장소 루트에 `Jenkinsfile` 이 있다. `djb-vm` 에이전트에서 `pollSCM` 으로 트리거되며 다음을 수행한다. 저장소 루트에 `Jenkinsfile` 이 있다. `djb-vm` 에이전트에서 `pollSCM` 으로 트리거되며 다음을 수행한다.
1. **Build JAR**`gradle clean build --no-daemon` 1. **Build JAR**`gradle clean build sourceBundle --no-daemon`
2. **Smoke test** — fake / bypass 모드 main + CLI `info` 실행 2. **Smoke test** — fake / bypass 모드 main + CLI `info` 실행
3. **Package & checksum**`build/dist/``damo-manager.jar` + `README.md` 복사 후 `SHA1SUMS` / `SHA256SUMS` 생성 3. **Package & checksum**`build/dist/``damo-manager.jar` + `damo-manager-src-*.zip` + `README.md` 복사 후 파일별 `*.sha256` 생성
4. **archiveArtifacts**`damo-manager.jar`, `README.md`, `SHA1SUMS`, `SHA256SUMS` 보관 (fingerprint) 4. **archiveArtifacts**`damo-manager.jar`, `damo-manager-src-*.zip`, `README.md`, `*.sha256` 보관 (fingerprint)
빌드 환경(JDK8/Gradle 경로)은 다른 djb-eapim Jenkinsfile 과 동일한 `/apps/opts/*` 경로를 사용한다. 빌드 환경(JDK8/Gradle 경로)은 다른 djb-eapim Jenkinsfile 과 동일한 `/apps/opts/*` 경로를 사용한다.
+34
View File
@@ -59,3 +59,37 @@ tasks.register('runBypassSmoke', JavaExec) {
mainClass = 'com.eactive.ext.djb.DamoManager' mainClass = 'com.eactive.ext.djb.DamoManager'
dependsOn 'classes' dependsOn 'classes'
} }
// 내부망 반입용 소스 번들. 실행: gradle sourceBundle
// jar 첨부가 메일 서버에서 차단되므로 소스 + JDK 전용 빌드 스크립트를 zip 으로 패키징한다.
// 내부망에서는 JDK 만으로 빌드 가능 (scripts/BUILD-INTERNAL.md 참고).
def bundleVersionFile = layout.buildDirectory.file('tmp/sourceBundle/VERSION')
tasks.register('writeBundleVersion') {
def v = project.version.toString()
outputs.file bundleVersionFile
doLast {
bundleVersionFile.get().asFile.text = v + '\n'
}
}
tasks.register('sourceBundle', Zip) {
group = 'distribution'
description = 'Package sources + JDK-only build scripts into a zip for air-gapped internal build'
dependsOn 'writeBundleVersion'
archiveBaseName = 'damo-manager-src'
archiveVersion = project.version
destinationDirectory = layout.buildDirectory.dir('distributions')
into "damo-manager-src-${project.version}"
from(projectDir) {
include 'src/**', 'build.gradle', 'settings.gradle', 'README.md'
}
from bundleVersionFile
from('scripts') {
include 'BUILD-INTERNAL.md', 'build-internal.bat'
}
from('scripts') {
include 'build-internal.sh'
filePermissions { unix('0755') }
}
}