동적 변수를 젠킨스 파라미터로 사용하기 (Extended Choice Parameter)
TL;DR
동적 변수를 젠킨스 파라미터로 가져와서 사용하는 방법을 공유합니다.
예) AWS S3의 버킷리스트 확인하고, 지정 버킷에 파일 업로드
Extensible Choice Parameter 플러그인과 Groovy 그리고 AWS CLI를 사용하였습니다.
사전 설치
- Jenkins 2.222.1
- Extensible Choice Parameter 1.6.0 플러그인 설치
- AWS CLI 1.18.43
AWS CLI 설치 및 설정
# aws cli 설치
$ apt-get update
$ apt-get install python-pip
$ pip install awscli
aws-cli/1.18.43 Python/2.7.13 Linux/4.15.0-43-generic botocore/1.15.43
# aws configure 설정
$ aws configure
AWS Access Key ID [None]: # Access Key 입력
AWS Secret Access Key [None]: # Secret Key 입력
Default region name [None]: # ap-northeast-2
Default output format [None]: # 그냥 엔터
# S3 Butcket 리스트 확인
$ aws s3 ls
2020-04-29 01:46:23 jenkins-bucket-01
2020-04-29 01:46:37 jenkins-bucket-02
2020-04-29 01:46:46 jenkins-bucket-03
2020-04-29 05:06:10 jenkins-bucket-04
2020-04-29 05:06:22 jenkins-bucket-05
Jenkins Job 설정 및 실행
1. Extended Choice Parameter 추가
S3_BUCKET_NAME
이름의 파라미터를 생성하고, 아래 그림과 같이 설정합니다.
import hudson.model.*
import jenkins.model.*
def listBucket() {
def bucket= ("aws s3 ls").execute() // s3 버킷 리스트 확인
return bucket.text.readLines().collect { it.split()[2] }.unique().join(",")
}
return listBucket()
2. Git 추가
업로드 테스트 할 Dockerfile
파일을 젠킨스 저장소에서 다운로드 받습니다.
https://github.com/jenkinsci/jenkins.git
3. Excute shell 추가
Dockerfile
파일의 업로드와 업로드확인 명령을 수행합니다.
#!/bin/sh
echo " > AWS S3 ${S3_BUCKET_NAME} 업로드.."
aws s3 cp ./Dockerfile s3://${S3_BUCKET_NAME}/Dockerfile
echo " > AWS S3 ${S3_BUCKET_NAME} 업로드 확인..."
aws s3 ls s3://${S3_BUCKET_NAME}
4. Job 실행
최초 Build with Parameters 선택시 바로 실행되지 않습니다.
Groovy Script 동작을 승인하는 과정이 필요합니다. (1회)
In-Process Script Approval > Approve
다시 Build with Parameters 선택 합니다.
드디어! 매개변수 항목에 S3 Bucket 리스트를 확인하고 선택할 수 있습니다.
jenkins-bucket-05
로 선택 후, 빌드하기를 해보겠습니다.
콘솔 아웃풋 보면, Dockerfile
이 업로드 됨을 확인할 수 있습니다.
물론 AWS 웹 콘솔에서도 확인 가능합니다.
맺음말
어떤 동적 변수를 가져와서 잘 활용하느냐가 가치일 것입니다.
최근 AWS 시작(?)하면서, 예를 S3로 하였습니다.
(Shell 방식이 아닌) AWS 관련 Jenkins 플러그인도 설치하고 사용하면서 다른 후기도 남겨볼께요.
Author And Source
この問題について(동적 변수를 젠킨스 파라미터로 사용하기 (Extended Choice Parameter)), 我々は、より多くの情報をここで見つけました https://qiita.com/leechungkyu/items/9465d924747d0a170cd7著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .