- sourceBundle Gradle task 추가: 내부망 소스 번들 빌드 지원
- Jenkinsfile 수정: sourceBundle 빌드/아티팩트 보관 적용 - README 갱신: sourceBundle 사용법 추가
This commit is contained in:
Vendored
+8
-6
@@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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/*` 경로를 사용한다.
|
||||||
|
|
||||||
|
|||||||
@@ -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') }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user