[Jenkins] Azure Storage 업로드
[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 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