Jenkins를 이용해 Invoke Gradle script를 통해 application 빌드 후 Execute shell을 이용해 빌드된 jar를 Execute shell 통해 Docker image로 빌드 후 개인 DockerHub에 push를 하는 script를 작성했는데 이때 DockerHub 접속 정보를 script내에 그대로 작성하는 부분이 뭔가 찜찜했고 이걸 해결 할 수 있는지를 찾아보았고 해결하는 방법을 정리해본다.
개요의 상황의 캡처이다. DockerHub 계정을 script에 그대로 작성해놨었다.
DashBoard -> Jenkins 관리 -> Credentials
global 클릭 (domains가 없다면 생성)
Add Credentials 클릭
Kind
: Username with password
Scope
: Global
Username
: DockerHub ID
Password
: DockerHub password
ID
: Jenkins에서 식별하는 ID값 (안적어도 된다)
Description
: 설명
후 Create 버튼 클릭
Dashboard -> 본인 project -> Configuration -> 빌드 환경 (Build Environment)
Use secret text(s) or file(s)
클릭
Username Variable
: 설정한 ID 변수명
Password Variable
: 설정한 PW 변수명
Credentials
: Credentials에서 만든 DockerHub 계정 정보 선택
echo docker login
docker login -u ${DOCKER_USER} -p ${DOCKER_PASSWORD} docker.io
echo now path
pwd
echo docker image build
docker build -t pak0426/toy-mini-blog-back:latest .
echo docker image push
docker push pak0426/toy-mini-blog-back:latest
하단의 Execute shell
에서 원래 하드코딩으로 들어가있던 계정 정보를 위에 변수로 변경하면 된다.
빌드를 했더니 성공했다!!