젠킨스 플러그인 설정 가이드 - GitHub OAuth, Node.js, Slack 알림

English (N/A)

젠킨스의 강점 중 하나는 풍부한 플러그인 생태계다. 초기 설정을 마쳤다면 이제 실무에서 필요한 플러그인들을 설치하고 설정해보자.

1. 초기 플러그인 설치

젠킨스를 처음 설치하면 "Install suggested plugins" 옵션이 나온다. 이걸 선택하면 기본적으로 필요한 플러그인들이 자동으로 설치된다.

추가로 아래 플러그인들도 설치해두면 좋다.

플러그인용도
AWS StepsAWS 서비스 연동 (S3, ECR 등)
AWS Global ConfigurationCredential에 AWS 인증 정보 등록
Slack Notification빌드 결과 슬랙 알림

젠킨스 관리 → 플러그인 관리 → Available plugins 에서 검색해서 설치할 수 있다.

2. GitHub OAuth 설정

GitHub 계정으로 젠킨스에 로그인할 수 있도록 OAuth를 설정한다.

상세한 설정 방법은 공식 플러그인 문서를 참고하면 된다.

간단히 요약하면:

  1. GitHub에서 OAuth App 생성 (Settings → Developer settings → OAuth Apps)
  2. Authorization callback URL: http://your-jenkins-url/securityRealm/finishLogin
  3. 젠킨스에서 GitHub OAuth 플러그인 설치
  4. 젠킨스 관리 → 보안 설정 에서 Security Realm을 GitHub Authentication으로 변경
  5. Client ID와 Client Secret 입력

3. Node.js 플러그인 설정

jenkins 유저는 시스템 유저의 nvm에 접근할 수 없는 경우가 많다. 이유는 다음과 같다:

  1. jenkins 유저는 interactive shell이 없어서 ~/.bashrc, ~/.bash_profile 이 실행되지 않음
  2. nvm은 OS 사용자의 로컬에 설치되므로 jenkins 유저가 접근 불가

해결 방법은 두 가지가 있다:

  1. Node.js를 전역으로 설치
  2. Node.js 플러그인 사용 (권장)

플러그인을 사용하면 젠킨스 내에서 여러 버전의 Node.js를 관리할 수 있어서 더 유연하다.

설정 방법

  1. 젠킨스 관리 → 플러그인 관리 에서 "NodeJS" 플러그인 설치
  2. 젠킨스 관리 → Tools 에서 NodeJS installations 추가
  3. 원하는 버전 선택 (예: NodeJS 20.x)
  4. Jenkinsfile에서 사용:
pipeline {
    agent any
    tools {
        nodejs 'NodeJS 20'
    }
    stages {
        stage('Build') {
            steps {
                sh 'npm install'
                sh 'npm run build'
            }
        }
    }
}

4. SSH 설정

배포 서버에 SSH로 접속해야 하는 경우, pem 파일 권한을 jenkins 유저에게 부여해야 한다.

# pem 파일 소유권 변경
sudo chown jenkins:jenkins /var/lib/jenkins/.ssh/your-key.pem

# jenkins 유저로 SSH 접속 테스트
sudo -u jenkins ssh -i /var/lib/jenkins/.ssh/your-key.pem ec2-user@your-server

5. Slack 알림 설정

빌드 결과를 Slack으로 받으려면 Slack Notification 플러그인을 설치하고 설정해야 한다.

상세 설정은 공식 플러그인 문서를 참고한다.

주의사항

설정을 완료한 후에도 메시지를 받을 각 슬랙 채널에서 반드시 해당 앱을 초대 해야 한다. 채널에서 /invite @Jenkins (또는 앱 이름)를 입력하면 된다.

6. 외부 IP 바인딩 설정 (Mac)

Mac에서 Homebrew로 설치한 젠킨스는 기본적으로 localhost(127.0.0.1)에서만 접근 가능하다. 다른 PC에서도 접근하려면 IP 바인딩을 변경해야 한다.

먼저 젠킨스 설치 경로를 확인한다.

brew list jenkins-lts

그 다음 plist 파일을 수정한다.

vim ~/Library/LaunchAgents/homebrew.mxcl.jenkins-lts.plist

파일에서 --httpListenAddress=127.0.0.1 부분을 --httpListenAddress=0.0.0.0 으로 변경한다.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>Label</key>
    <string>homebrew.mxcl.jenkins-lts</string>
    <key>ProgramArguments</key>
    <array>
      <string>/usr/bin/java</string>
      <string>-Dmail.smtp.starttls.enable=true</string>
      <string>-jar</string>
      <string>/usr/local/opt/jenkins-lts/libexec/jenkins.war</string>
      <string>--httpListenAddress=0.0.0.0</string>
      <string>--httpPort=8080</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
  </dict>
</plist>

변경 후 젠킨스를 재시작한다.

brew services restart jenkins-lts

이제 같은 네트워크에 있는 다른 PC에서 http://your-mac-ip:8080 으로 접근할 수 있다.

참고

이 포스트는 젠킨스 완벽 가이드 시리즈의 일부다. 인증 정보 설정, 파이프라인 구성 등 다른 주제는 해당 가이드에서 확인할 수 있다.