[Jenkins] Azure Storage 업로드
Azure Blob Storage는 대규모 비정형 데이터를 저장하고 관리하는 확장 가능하고 고가용성의 객체 스토리지 서비스입니다.
Jenkins에서 Azure Storage를 사용하여 빌드 아티팩트를 안전하게 저장하고 관리할 수 있으며, Azure Blob Storage를 통해 대규모 데이터 처리를 지원할 수 있습니다. 이를 통해 CI/CD 파이프라인의 효율성을 높이고, 데이터 백업 및 복구를 간소화할 수 있습니다. Jenkins를 통해 빌드 완료된 파일 또는 업로드가 필요한 파일을 Azure Storage에 업로드 해보는 작업을 진행해보겠습니다.
Azure Blob Storage의 생성 및 기초 사용법은 아래 글을 참고해주세요.
https://every-up.tistory.com/78
[Azure] Blob Storage 생성 및 기초 사용법
[Azure] Blob Storage 생성 및 기초 사용법Azure Blob Storage는 대규모 비정형 데이터(이미지, 동영상, 로그 등)를 저장하고 관리할 수 있는 Microsoft Azure의 객체 스토리지 서비스입니다. 세 가지 저장소 유
every-up.tistory.com
Azure Storage 플러그인 설치
Jenkins 관리 -> Plugins -> Available plugins 메뉴에서 Azure Storage plugin
검색 후 플러그인을 설치합니다.
해당 플러그인을 통해 Azure Storage에 접근할 수 있는 Storage Account Key를 저장하여 사용할 수 있습니다.
Azure Storage 접근 Credentials 설정
Jenkins 관리 -> Credentials 메뉴에서 global Domain 선택 후 Add credentials 을 선택합니다.
Kind를 Azure Storage를 선택 후 Storage Account Name, Storage Account Key, Blob EndPoint URL, ID 값을 모두 입력합니다.
Blob EndPoint URL 값은 스토리지 계정이 포함된 URL 정보 "https://{스토리지 계정}.blob.core.windows.net/"를 입력해주시면 됩니다.
Jenkins 코드
Jenkins에서는 withCredentials 기능을 통해 사전에 설정한 Credentials 값을 불러와 Azure Storage에 접근할 수 있습니다.
Azure CLI 로그인 작업을 통해서도 Azure Storage를 관리할 수 있지만 로그인 작업이 필요하며 명령어가 더 복잡하므로 Storage Account Key를 Credentials 설정을 통해 불러와 사용하였습니다.
Environment 정의
Azure Storage에 접근 후 파일을 업로드하기 위해 환경 변수를 정의합니다.
environment {
AZURE_STORAGE_NAME = "스토리지 계정 이름"
AZURE_CONTAINER_NAME = "스토리지 계정내 컨테이너 이름"
}
스토리지 계정 및 컨테이너 이름을 사전에 환경 변수로 정의 후 az 명령어로 파일 업로드 시 사용합니다.
업로드 명령어 정의 및 실행
withCredentials 기능을 사용하여 AZURE_STORAGE
ID의 Credentials 사용하도록 정의 하였습니다.
Credentials에 저장된 Storage Account Key 값은 STORAGE_KEY
이름으로 사용할 수 있습니다.
az storage blob upload 명령어를 통해 STORAGE_KEY
Storage Account Key 값을 사용하여 Azure Storage에 접근할 수 있으며, 업로드하고자 하는 UPLOAD_FILE
파일을 지정하여 TEST_DIR/ 경로에 업로드 되도록 설정하였습니다.
withCredentials([azureStorage(credentialsId: "AZURE_STORAGE",
storageAccountNameVariable : "STORAGE_NAME",
storageAccountKeyVariable : "STORAGE_KEY"
)]) {
script {
def COMMAND_AZURE_STORAGE_UPLOAD = """
az storage blob upload --overwrite \
--account-name ${AZURE_STORAGE_NAME} \
--account-key ${STORAGE_KEY} \
--container-name ${AZURE_CONTAINER_NAME} \
--file ${UPLOAD_FILE} \
--name TEST_DIR/${UPLOAD_FILE}
""".stripIndent().trim().replaceAll("\n", " ")
bat script: COMMAND_AZURE_STORAGE_UPLOAD
}
}
bat 스크립트로 명령어를 실행하면 정의된 명령어가 실행되어 파일을 Azure Storage에 업로드 합니다.
단순히 파일을 업로드하는 작업만 진행하였지만, Storage Account Key 값을 사용하여 Azure Storage의 다양한 기능들을 제어할 수 있습니다.
업로드 확인
Azure 콘솔을 통해 Azure Storage에 업로드된 파일을 확인합니다.
az storage blob upload 명령어의 옵션 중 --name 옵션에 따라 디렉토리 및 파일 이름 정보로 파일이 업로드 됩니다.
Jenkins에서 Azure Storage 플러그인을 설치하고, Credentials 설정을 통해 Azure Storage에 접근하여 파일을 업로드할 수 있습니다. withCredentials 기능을 사용해 Storage Account Key를 불러와 az storage blob upload 명령어로 파일을 업로드하며 업로드 후 Azure 콘솔에서 파일을 확인할 수 있습니다.
Jenkins CI/CD 자동화 코드를 통해 Azure Storage에 파일을 업로드만 하였지만 다양한 Storage 기능을 활용하여 사용하시기 바랍니다.
지금까지 Jenkins에서 Azure Storage를 사용하는 방법에 대해 알아보는 시간을 가졌습니다....! 끝...!
[Reference]
https://plugins.jenkins.io/windows-azure-storage
'CI-CD > Jenkins' 카테고리의 다른 글
[Jenkins] Window Nodes 추가 및 연동하기 (0) | 2023.07.03 |
---|---|
[Jenkins] AWS EC2에 컨테이너 배포하기 (0) | 2023.06.30 |
[Jenkins] AWS ECR에 컨테이너 이미지 업로드하기 (2) | 2023.06.13 |
[Jenkins] Jenkins Pipeline Artifacts 활용하기 (0) | 2023.04.26 |
[Jenkins] Cannot run program git.exe 에러 (0) | 2023.04.19 |