전에 추가한 github Token에 권한을 추가해도 되지만, 관리 편의를 위해서 새로운 Token을 생성합니다. Settings -> Developer settings -> Personal access tokens -> Generate new token (classic)
권한은 다음과 같이 설정합니다.
Jenkins Credential 추가
Jenkins에서도 새로운 Credential을 추가합니다. Manage Jenkins -> Manage Credentials -> Stores scoped to Jenkins -> Global credentials (unrestricted) -> Add Credentials
docker socket 권한 설정
Jenkins 컨테이너 내부에서 외부 docker에 대해 명령어를 사용하기 위한 설정을 해줍니다. docker-compose.yml파일에 - /var/run/docker.sock:/var/run/docker.sock를 추가해 줍니다.
1 2 3 4 5 6 7 8 9
jenkins: image:jenkins/jenkins:lts container_name:jenkins ports: -"8080:8080" volumes: -jenkins_home:/var/jenkins_home -/var/run/docker.sock:/var/run/docker.sock#새로 추가 restart:unless-stopped
또한 Jenkins 컨테이너 내부에서 docker 명령어를 사용하기 위해서 추가 설정해줍니다.
https://github.com/<본인 이름>?tab=packages에 들어가서 이미지가 잘 올라갔는지 확인합니다.
ssh 설정
Plugin에서 SSH Agent가 설치되지 않았다면 설치해 줍니다. 설치가 됐으면 키 설정을 해줍니다.
jenkins > Manage Jenkins > Credentials > System > Global credentials (unrestricted) > Add Credentials에서 SSH Username with private key를 추가합니다. 그러면 다음과 같은 화면이 보입니다.
sshagent를 사용해서 ssh로 서버에 접속하고, docker 명령어를 사용해서 이미지를 pull하고, 컨테이너를 실행합니다.
컨테이너가 잘 실행되었는지 확인합니다.
마무리
이렇게 Jenkins를 사용해서 CI/CD 배포 자동화를 해보았습니다. 아직은 Jenkins의 간단한 사용법만 알아봤지만, Jenkins는 다양한 플러그인을 사용해서 작업을 간단히 자동화할 수 있는 방법이 많습니다. Jenkins를 사용해서 더 많은 작업을 편하게 자동화 해봅시다.