[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

 

 

 

+ Recent posts