github를 통해 git push가 일어나고 웹훅으로 젠킨스 빌드를 유발합니다.
이 때, github 저장소의 내용을 읽어옵니다.
읽어온 저장소에 gradle를 통해 빌드하고, Dockerfile로 이미지를 만들어 도커 허브에 push 하는 방법을 알아보겠습니다.
이전 포스팅으로 github 웹훅 설정과 ssh 설정에 대한 포스팅을 했습니다. 이번 포스팅에선 gradle 빌드와 Dockerfile 부분만 알아보도록하겠습니다.
1. 젠킨스에 해당 item을 누른 후 구성을 클릭
2. 아래로 내리면 Build 가 있습니다. Gradle script 호출하는 부분에서 Use Gradle Wrapper를 클릭한 후 Make gradlew executable 를 클릭합니다. 클릭해주어야 gradlew 권한 오류가 나지 않습니다.
그 후 Tasks에서 build를 실행하게 만들어줍니다. Execute shell 은 쉘 명령을 실행하도록 합니다.
우리는 Gradle 빌드가 완료되면 프로젝트에 Dockerfile을 가지고 docker를 build하여 이미지를 만들고, 도커 허브에 push 할 것이기에 해당 명령어를 입력합니다. 파란색 펜으로 가려진 부분은 도커허브의 저장소입니다.
echo 'Gighub hook trigger' 은 안적어도 됩니다.
3. 도커 허브에 들어가서 회원가입 및 로그인을 진행하고 Create Repository를 통해 저장소를 만듭니다.
4. 밑에 저장소 파란색 펜이 칠해진 부분에 계정/저장소명 나오는 것을 2. 에 파란색에 입력합니다.
5. 쉘에 입력된 명령에 sudo 명령을 젠킨스에서 시도하려면 권한을 부여해야합니다.
sudo vi /etc/sudoers
vi 에디터로 sudoers를 불러옵니다.
jenkins ALL=(ALL) NOPASSWD: ALL
이렇게 입력해준 후 저장합니다.
* 젠킨스에게 sudo 명령어 권한을 모두 주기 때문에 위험할 수도 있음.
* NOPASSWD: 파일이나 디렉토리 를 지정하여 권한을 지정할 수 있음.
6. Gradle 빌드할 프로젝트입니다.
Dockerfile 보이시나요?
들어가보면
https://spring.io/guides/topicals/spring-boot-docker/
spring.io에 들어가보면 도커파일의 기본구조는 이렇게 하면 된다라고 알려줍니다.
여기서 Gradle로 빌드할 것이기 때문에 JAR_FILE=build/libs/*.jar 로 해주면 됩니다.
저는 이렇게 빌드 결과물이 2개 이상이 나와 COPY를 경로로 지정하라는 오류가 나서 파일 명 자체를 지정했습니다.
7. 저장을 눌러줍니다.
8. 젠킨스에서 빌드를 누르기전에 ec2 에서 docker 계정을 로그인 하여야 합니다. 로그인을 진행 해줍니다.
sudo docker login
Username:
Passwd:
9. 젠킨스 빌드를 누르면
Gradle 빌드가 완료되고
아까 쉘에 입력한
sudo docker build -t 도커허브계정/저장소명 명령어를 실행하여 Dockerfile을 읽어서 이미지를 생성합니다.
sudo docker push 도커허브계정/저장소명 명령어를 실행하여 도커허브에 이미지를 푸시하면
완료됩니다.
도커 허브 저장소에 들어가보면
이미지가 생긴 것을 볼 수 있습니다.
'DevOps > Jenkins' 카테고리의 다른 글
Vue.js 프로젝트 Jenkins로 nginx에 배포해보기 (0) | 2021.07.15 |
---|---|
젠킨스 SSH Server 연결하고 빌드 후 조치 알아보기 (0) | 2021.06.30 |
젠킨스 깃허브 웹훅 연동하기 (0) | 2021.06.29 |
ubuntu Jenkins 설치 방법 (0) | 2021.06.29 |