Jenkins Slack 통합

1. 개요

팀이 DevOps 관행을 담당 할 때 종종 빌드 및 기타 자동화 된 작업을 모니터링해야합니다.

이 자습서에서는 두 가지 인기있는 플랫폼 인 Jenkins와 Slack이 함께 작동하도록 구성하는 방법을 살펴보고 CI / CD 파이프 라인이 실행되는 동안 무슨 일이 발생하는지 알려줍니다.

2. Slack 설정

Jenkins가 메시지를 보낼 수 있도록 Slack을 구성하여 시작하겠습니다. 이를 위해 관리자 계정이 필요한 맞춤형 Slack 앱을 생성합니다 .

Slack에서는 애플리케이션을 만들고 OAuth 토큰을 생성합니다.

  • //api.slack.com 방문
  • 원하는 작업 공간에 로그인
  • 건물 시작 버튼을 클릭하십시오.
  • 애플리케이션 이름을 Jenkins로 지정 하고 앱 만들기를 클릭합니다.
  • OAuth 및 권한을 클릭하십시오.
  • 에서 봇 토큰 스코프의 섹션에서 추가 채팅 : 쓰기 범위를
  • 클릭 작업 공간에 앱 설치 버튼
  • 동의 버튼을 클릭 합니다

이 작업이 완료되면 요약 화면이 표시됩니다.

이제 OAuth 토큰을 기록해 두어야합니다. 나중에 Jenkins를 구성 할 때 필요합니다. 이를 민감한 자격 증명으로 취급 하고 안전하게 보관해야합니다.

Slack 설정을 완료하려면 새 Jenkins 사용자를 사용하려는 채널에 초대해야합니다. 이를 수행하는 한 가지 쉬운 방법은 각 채널 내에 @ 문자를 사용하여 새 사용자를 언급하는 것 입니다.

3. Jenkins 설정

Jenkins를 설정하려면 관리자 계정이 필요합니다 .

먼저 Jenkins에 로그인하고 Manage Jenkins > Plugin Manager로 이동하여 시작하겠습니다 .

그런 다음 Available 탭에서 Slack을 검색합니다 .

Slack 알림 확인란을 선택하고 다시 시작하지 않고 설치를 클릭 합니다 .

이제 새 자격 증명을 구성해야합니다. Jenkins> Credentials> System> Global Credentials로 이동하여 새 Secret 텍스트 자격 증명 을 추가 하겠습니다 .

Slack의 OAuth 토큰을 Secret 필드에 입력합니다 . 또한 나중에 쉽게 식별 할 수 있도록 이러한 자격 증명에 의미있는 ID와 설명을 제공해야합니다. Jenkins 자격 증명 저장소는이 토큰을 안전하게 보관할 수있는 장소입니다.

자격 증명을 저장하면 설정할 전역 구성이 하나 더 있습니다. 아래 젠킨스> 젠킨스> 구성 시스템 관리 , 우리는 확인해야합니다 사용자 정의 여유 응용 프로그램 봇 사용자 세 이하 확인란을 여유 섹션 :

이제 Jenkins 설정을 완료 했으므로 Slack 메시지를 보내도록 Jenkins 작업 및 파이프 라인을 구성하는 방법을 살펴 보겠습니다.

4. 기존 Jenkins 작업 구성

기존 Jenkins 작업은 일반적으로 목표를 달성하기 위해 하나 이상의 작업을 실행합니다. 이는 Jenkins 사용자 인터페이스를 통해 구성됩니다.

기존 작업을 Slack과 통합하기 위해 빌드 후 작업을 사용합니다 .

직업을 선택하거나 새 직업을 만드십시오. 빌드 후 작업 추가 메뉴를 드롭 다운하면 Slack 알림이 있습니다 .

선택하면 Slack 알림 작업에 사용할 수있는 입력이 많이 있습니다. 일반적으로 대부분의 기본값이면 충분합니다. 그러나 몇 가지 필수 정보가 있습니다.

  • 메시지를 보낼 빌드 단계 (시작, 성공, 실패 등)
  • 사용할 자격 증명의 이름 – 이전에 추가 한 자격 증명
  • 메시지를 보낼 Slack 채널 이름 또는 구성원 ID

Jenkins 작업에 사용되는 커밋 정보, 사용자 지정 메시지, 사용자 지정 봇 아이콘 등과 같은 추가 필드를 원하는 경우 지정할 수도 있습니다.

UI를 통해 설정하는 경우 연결 테스트 버튼을 사용하여 Jenkins가 Slack에 도달 할 수 있는지 확인할 수 있습니다. 성공하면 Jenkins 사용자의 Slack 채널에 테스트 메시지가 표시됩니다.

메시지가 표시되지 않으면 Jenkins 로그 파일이 문제 해결에 유용합니다. 일반적으로 빌드 후 작업에 모든 필수 필드 가 있는지, OAuth 토큰이 올바르게 복사되었는지, Slack을 구성 할 때 토큰에 적절한 범위가 부여되었는지 다시 확인해야합니다.

5. Jenkins 파이프 라인 구성

Jenkins Pipelines는 기존 작업과 다릅니다. 그들은 빌드를 정의하기 위해 단계로 나누어 진 단일 Groovy 스크립트를 사용합니다. 또한 빌드 후 작업이 없으므로 파이프 라인 스크립트 자체를 사용하여 Slack 메시지를 보냅니다 .

다음 스 니펫은 Jenkins 파이프 라인에서 Slack으로 메시지를 보냅니다.

slackSend botUser: true, channel: 'builds', color: '#00ff00', message: 'Testing Jekins with Slack', tokenCredentialId: 'slack-token'

기존 Jenkins 작업 설정과 마찬가지로 사용할 채널 이름과 자격 증명 이름을 지정해야합니다.

Jenkins 파이프 라인을 통해 파일 업로드, 메시지 스레드 등과 같은 다양한 추가 Slack 기능을 사용할 수도 있습니다.

Jenkins 파이프 라인 사용의 한 가지 단점은 테스트 버튼이 없다는 것입니다. Slack과의 통합을 테스트하려면 전체 파이프 라인을 실행해야합니다.

작업을 처음 설정할 때 작업을 수행하는 동안 Slack 명령 만 포함 된 새 파이프 라인을 만들 수 있습니다.

6. 추가 고려 사항

이제 Jenkins와 Slack이 연결되었으므로 몇 가지 추가 고려 사항이 있습니다.

첫째, 단일 Jenkins 인스턴스가 여러 Slack 작업 공간과 통신 할 수 있습니다 . 사용자 지정 응용 프로그램을 만들고 각 작업 공간에 대해 새 토큰을 생성하기 만하면됩니다. 각 토큰이 Jenkins에 자체 자격 증명으로 저장되는 한 다른 작업은 다른 작업 영역에 게시 할 수 있습니다.

동일한 라인을 따라 다른 Jenkins 작업이 다른 Slack 채널에 게시 할 수 있습니다 . 이는 우리가 구성하는 빌드 후 작업의 작업 별 설정입니다 . 예를 들어 소프트웨어 빌드와 관련된 작업은 개발 전용 채널에 게시 할 수 있습니다. 그리고 테스트 또는 프로덕션과 관련된 작업은 자체 전용 채널로 이동할 수 있습니다.

마지막으로 전송할 항목에 대한 세밀한 제어를 제공하는 Jenkins 용으로 널리 사용되는 Slack 플러그인 중 하나를 살펴 보았지만 다양한 용도로 사용되는 다른 플러그인이 많이 있습니다. 예를 들어, 모든 Jenkins 작업이 동일한 알림을 보내도록하려면 이에 더 적합한 Global Slack Notifier 플러그인이 있습니다.

7. 결론

이 기사에서는 Jenkins와 Slack을 통합하여 CI / CD 파이프 라인에 대한 피드백을 얻는 방법을 살펴 보았습니다.

Jenkins 플러그인을 사용자 지정 Slack 애플리케이션과 함께 사용하여 Jenkins에서 Slack으로 메시지를 보낼 수있었습니다. 이를 통해 팀은 Jenkins 작업의 상태를 파악하고 문제를 더 빨리 해결할 수 있습니다.