LoginSignup
1
0

More than 3 years have passed since last update.

동적 변수를 젠킨스 파라미터로 사용하기 (Extended Choice Parameter)

Last updated at Posted at 2020-04-29

jenkins-banner.png

TL;DR

동적 변수를 젠킨스 파라미터로 가져와서 사용하는 방법을 공유합니다.
예) AWS S3의 버킷리스트 확인하고, 지정 버킷에 파일 업로드
Extensible Choice Parameter 플러그인과 Groovy 그리고 AWS CLI를 사용하였습니다.

사전 설치

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 이름의 파라미터를 생성하고, 아래 그림과 같이 설정합니다.

j001.png

GroovyScript

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
j002.png

3. Excute shell 추가

Dockerfile 파일의 업로드와 업로드확인 명령을 수행합니다.
j003.png

shell
#!/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

r001.png
r002.png

다시 Build with Parameters 선택 합니다.
드디어! :thumbsup_tone2: 매개변수 항목에 S3 Bucket 리스트를 확인하고 선택할 수 있습니다.
jenkins-bucket-05로 선택 후, 빌드하기를 해보겠습니다.
v001.png
s001.png

콘솔 아웃풋 보면, Dockerfile이 업로드 됨을 확인할 수 있습니다.
물론 AWS 웹 콘솔에서도 확인 가능합니다.
v002.png
v003.png

맺음말

어떤 동적 변수를 가져와서 잘 활용하느냐가 가치일 것입니다.

최근 AWS 시작(?)하면서, 예를 S3로 하였습니다.
(Shell 방식이 아닌) AWS 관련 Jenkins 플러그인도 설치하고 사용하면서 다른 후기도 남겨볼께요.

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0