Jenkins로 docker 이미지를 빌드하고 hub에 푸시하는 과정을 .sh 파일 하나를 실행해서 한꺼번에 수행하려고 합니다. 하지만 Jenkins가 ec2 서버에서 sudo 명령어를 실행하려면, Jenkins에게 따로 권한을 줘야합니다. 권한을 주지 않고 빌드하면 sudo: not found Build step ‘Execute shell’ marked build as failure 같은 에러가 납니다.
그래서 root 계정으로 들어가서 /etc/sudoers 파일을 수정해줍시다.
su # 루트 계정으로 접속하기, password 를 모른다면 초기 설정해주시면 됩니다.
cd /etc # etc 폴더로 들어가서
vi sudoers # root 권한으로 sudoers 파일 열기
sudoers 파일로 들어가서, jenkins에게 권한을 줍니다. 만약 젠킨스에게 모든 권한을 주는 것이 보안 상의 이유로 걱정이 된다면, jenkins가 실행해야하는 파일 경로를 적어서 그 파일 실행에만 권한을 부여해주시면 됩니다.
jenkins ALL=(ALL) NOPASSWD: ALL jenkins ALL=(ALL) NOPASSWD: 파일 경로….
그러면 빌드 시 났던 에러가 사라지고 .sh 파일이 잘 실행됩니다!