이 페이지는 Bamboo가 Artifact 공유와 GlobalStorage 관리하는 방법을 설명한다.
Shared/Unshared artifacts 정의
Build Plan은 동일한 build plan, 다른 build plan, 그리고 build plan에 연결된 deployment에서 사용가능한 artiffact를 정의할 수 있다.
- Job > Artifacts > Create definition > Shared (checked)
빌드가 성공하면 정의된 artifact가 공유된 공간으로 복사되고, database에 등록된다.
- 파일 위치: <bamboo-home>/artifacts
SQL
데이터 예시:
BUILD_ID BUILD_TYPE
FULL_KEY
BUILD_NUMBER
SHARED
STORAGE_TAG
950273
CHAIN
PROJ-ART
1
true
plan-950273
950273 CHAIN
PROJ-ART
2
true
plan-950273
950273 CHAIN
PROJ-ART
3
true
plan-950273
950275 CHAIN_BRANCH
PROJ-ART0
1
true
plan-950275
950275 CHAIN_BRANCH PROJ-ART0 2 true plan-950275 360449 CHAIN
PROJ-PLAN
1
true
PROJ-PLAN
360449 CHAIN
PROJ-PLAN
2
true
PROJ-PLAN
360449 CHAIN
PROJ-PLAN
4
true
PROJ-PLAN
360450 JOB
PROJ-PLAN-JOB1
3
false
(null)
Shared Artifacts 위치
<bamboo home>/artifacts/plan-<build plan id>/shared/build-<build number>
- 예시: <bamboo server home>/artifacts/plan-45350939/shared/build-00050/app.jar
GlobalStorage
globalStorage 는 배포에서 사용된 artifact를 보관하는 저장 공간으로 <bamboo-home>/artifacts/<artifact id> 에 위치한다.
- 예시: <bamboo home>/artifacts/globalStorage/52461603
Artifact 생성 조건 (아래의 두 조건이 모두 만족되는 경우, artifact/shared → globalStorage 폴더로 이동):
- deployment에서 사용되는 shared artifacts
- 생성된 후 삭제된 artifact (수동 또는 자동 삭제 정책에 의해 build 이력 삭제 또는 build number의 artifact 삭제)
SQL
globalStorage 내의 artifact 목록 얻기
빌드 번호와 globalStorage에 보관된 artifact 간의 관계 목록:
자동 삭제 정책에 영향받지 않음
select ARTIFACT.ARTIFACT_ID, ARTIFACT.PLAN_KEY as BUILD_KEY, ARTIFACT.BUILD_NUMBER, ARTIFACT.CHAIN_ARTIFACT as SHARED from ARTIFACT where GLOBALLY_STORED = TRUE order by PLAN_KEY, BUILD_NUMBER;
결과 예시)
ARTIFACT_ID
BUILD_KEY
BUILD_NUMBER
SHARED
8585219
PROJ-PLAN
3
true
SQL 결과를 바탕으로 파일의 위치를 얻을 수 있다.
<bamboo-home>/artifacts/<ARTIFACT_ID> 폴더
:
ARTIFACT_ID | BUILD_KEY | BUILD_NUMBER | SHARED | Directory structure |
---|---|---|---|---|
8585219 | PROJ-PLAN | 3 | true | <bamboo-home>/artifacts/globalStorage/8585219/ |
사용중인 globalStorage 목록 얻기
Deployment에서 사용중인 globalStorage 내의 artifact 목록을 얻을 수 있다.
SELECT DP.Name as DeploymentProject, DE.name as Environment, version_name, A.plan_key as ArtifactSourceBuildPlan, A.build_number as ArtifactSourceBuildNumber, A.artifact_id, a.artifact_size, a.globally_stored, a.link_type FROM ARTIFACT A JOIN DEPLOYMENT_VERSION_ITEM_BA DVIB ON A.ARTIFACT_ID = DVIB.ARTIFACT_ID JOIN DEPLOYMENT_VERSION_ITEM DVI ON DVIB.VERSION_BAM_ARTIFACT_ITEM_ID = DVI.DEPLOYMENT_VERSION_ITEM_ID JOIN DEPLOYMENT_VERSION DV ON DVI.DEPLOYMENT_VERSION_ID = DV.DEPLOYMENT_VERSION_ID JOIN DEPLOYMENT_PROJECT DP ON DV.PROJECT_ID = DP.DEPLOYMENT_PROJECT_ID JOIN DEPLOYMENT_RESULT DR ON DV.DEPLOYMENT_VERSION_ID = DR.VERSION_ID JOIN DEPLOYMENT_ENVIRONMENT DE ON DE.ENVIRONMENT_ID = DR.ENVIRONMENT_ID WHERE GLOBALLY_STORED IS TRUE ORDER BY ARTIFACT_SIZE, ARTIFACT_ID