Jenkins 에러 해결하기 'sudo: no tty present and no askpass program specified '

backend developer interested in technical problem
pipeline log에서
sudo: no tty present and no askpass program specified같은 에러로그가 있다면 아래 절차를 따릅니다.
sudo명령은 일반적으로 사용자의 비밀번호 입력을 요구Jenkins 파이프라인은 사용자 상호작용을 기본적으로 지원하지 않는다
Jenkins 에이전트가 실행되는 시스템에서, 해당 사용자에게 비밀번호 없이 **
sudo**를 사용할 수 있는 권한을 부여할 수 있다.
visudo /etc/sudoers
visudo로 편집합시다. 한번 잘못설정되면 고칠수가 없고 그 이후로 sudo명령어도 못쓰게 됩니다 ㅜㅜ아래 명령어 추가( username은 각자의 환경에 맞게 세팅).
또한 test용으로 NOPASSWD를 ALL로 했지만 보안을 위해 일부 명령어만으로 제한해주세요.
- 예시
username ALL=(ALL) NOPASSWD:/usr/bin/apt-get, /bin/systemctl
- 예시
username : 이 부분은 사용자 이름을 나타냅니다.
username사용자는 Jenkins 서비스를 실행하는 데 사용됩니다. 파이프라인을 수행하는 user를 적어줍시다.ALL=(ALL): 첫 번째 **ALL**은 이 규칙이 모든 호스트에 적용됨을 의미합니다.(ALL)부분은jenkins사용자가 모든 사용자(루트 포함)의 권한으로 명령을 실행할 수 있음을 나타냅니다.NOPASSWD:NOPASSWD: 이 옵션은 **sudo**를 사용할 때 비밀번호 입력을 요구하지 않도록 설정합니다. 즉,jenkins사용자가sudo명령을 실행할 때 비밀번호를 입력할 필요가 없습니다.ALL: 이 부분은jenkins사용자가 모든 명령을sudo로 실행할 수 있음을 의미합니다.




