웹사이트 검색

CentOS에 Jenkins를 설치하고 GitHub에 연결하는 방법


이 페이지에서

  1. Jenkins 설치:
  2. 설정 구성:
  3. Jenkins 구성:
    1. 플러그인 설치:\n
    2. 인증 정보 추가:

    Jenkins는 널리 사용되는 오픈소스 CI/CD 도구를 제공합니다. 이 기사에서는 SSH를 사용하여 서버에 파일을 보내기 위해 Jenkins를 설치하고 Github로 구성하는 방법을 배웁니다.

    젠킨스 설치:

    Jenkins는 JAVA 기반 어플리케이션이므로 우선 JAVA를 설치해야 합니다. 다음 명령은 centos 7에 JAVA를 설치합니다.

    sudo yum install java-1.8.0-openjdk-devel

    자바 버전 확인

    [ ~]# java -version
    openjdk version "1.8.0_212"
    OpenJDK Runtime Environment (build 1.8.0_212-b04)
    OpenJDK 64-Bit Server VM (build 25.212-b04, mixed mode)

    이제 다음 명령을 사용하여 Jenkins Repository를 구성합니다.

    curl --silent --location http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo | sudo tee /etc/yum.repos.d/jenkins.repo

    그러면 다음 출력이 표시됩니다.

    [jenkins]
    name=Jenkins-stable
    baseurl=http://pkg.jenkins.io/redhat-stable
    gpgcheck=1

    그런 다음 다음 명령을 실행하여 Jenkins 키를 추가합니다.

    sudo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key

    이제 Jenkins Repository를 구성했으며 다음과 같은 간단한 명령을 사용하여 Jenkins를 설치할 준비가 되었습니다.

    sudo yum install jenkins

    설치가 완료되면 Jenkins 서비스를 확인하고 시스템 재부팅 시 활성화합니다.

    sudo systemctl start Jenkins
    sudo systemctl enable jenkins

    이제 시스템을 재부팅하고 다음 명령을 사용하여 jenkins 서비스가 실행 중인지 확인하십시오.

    sudo systemctl enable jenkins

    이제 방화벽에서 Jenkins를 허용하십시오.

    firewall-cmd --permanent --add-port=8080/tcp
    firewall-cmd --reload

    설정 구성:

    Jenkins를 직접 사용할 수 없으므로 웹 브라우저에 도메인 이름 또는 IP 주소를 입력한 다음 Jenkins 기본 포트 번호 8080을 입력해야 합니다.

    위의 스크린샷에서 Jenkins 자동 생성 암호를 한 번 입력해야 합니다. 다음 명령을 실행하여 암호를 얻습니다.

    sudo cat /var/lib/jenkins/secrets/initialAdminPassword

    이것은 2179c452db3b45f98cf9e4c4961ab635와 같은 출력을 제공합니다

    비밀번호를 입력한 후 Jenkins 시스템에 플러그인을 설치해야 합니다. 이를 위해 단순히 설치된 제안 플러그인을 선택하여 모든 기본 플러그인을 설치하십시오.

    모든 세부 정보를 입력하고 저장하고 계속을 클릭하십시오.

    이제 기본 포트 번호도 변경할 수 있는 인스턴스 구성을 요청합니다.

    이제 Jenkins를 저장하고 사용할 준비가 되었습니다.

    축하합니다. 새 Jenkins 설정이 성공적으로 완료되어 사용할 준비가 되었습니다.

    다음 스크린샷은 Jenkins의 기본 대시보드를 보여줍니다.

    젠킨스 구성:

    플러그인 설치:

    다음 단계로 이동하기 전에 다음 플러그인을 설치해야 합니다.

    Jenkins 관리 -> 플러그인 관리 -> 사용 가능 -> 필터 -> GitHub 연동에 필요한 다음 플러그인을 검색합니다.

    SSH를 통한 게시
    Git
    GitHub 플러그인
    Git 클라이언트 플러그인

    여기에서 Publish Over SSH 플러그인은 SSH를 통해 파일을 서버에 푸시하는 데 필요했습니다.

    자격 증명 추가:

    Jenkins에서 서버 자격 증명을 추가해야 합니다.

    Jenkins 대시보드로 이동 → 자격 증명 → 시스템 → 전역 자격 증명(무제한) → 자격 증명 추가

    설치하려는 사용자 인증 정보의 종류를 선택할 수 있습니다. 여기에서 나중에 사용할 수 있도록 GitHub 자격 증명 사용자 이름과 비밀번호를 추가합니다.

    Jenkins 서버의 ssh.

    Jenkins는 ssh를 사용하여 원격 서버에 연결할 수 있으며 한 서버에서 다른 서버로 스크립트, 명령 또는 복사 파일을 실행할 수 있습니다.

    이를 위해 Jenkins 서버와 원격 서버 간에 ssh 연결을 생성해야 합니다.

    다음 단계에서는 Jenkins 서버와 연결하려는 Jenkins에 SSH 자격 증명을 추가합니다.

    Jenkins에서 사용자 루트로 웹 서버에 연결하려고 합니다. 예를 들어 웹 서버는 138.197.151.144이고 사용자는 루트이므로 ssh를 사용하여 해당 서버에 로그인해야 합니다.

    ssh 

    이제 홈 디렉토리로 이동하여 .ssh 폴더로 이동합니다.

    cd ~/.ssh

    다음 단계는 웹 서버에서 루트 사용자를 위한 개인 키와 공개 키를 생성하는 것입니다.

    ssh-keygen -t rsa -f private_key_for_jenkins

    위의 명령을 실행하면 "Enter passphrase"를 요청할 것이므로 암호를 입력할 필요가 없습니다. 따라서 Enter 키를 두 번 클릭하면 웹 서버 private_key_for_jenkins 및 private_key_for_jenkins.pub에 두 개의 키가 생성됩니다.

    여기서 private_key_for_jenkins는 138.197.151.144의 개인 키이며 이 파일의 내용을 Jenkins 서버에 사용해야 합니다.

    웹 서버의 공개 키인 private_key_for_jenkins.pub라는 두 번째 파일이 있습니다. 동일한 디렉터리에 있는 authorised_keys라는 다른 파일에 해당 데이터를 복사해야 합니다.

    대부분의 경우 authorised_keys 파일은 ~/.ssh/ 폴더에 있지만 때때로 누락되어 새 authorised_keys 파일을 생성해야 합니다. 다음 명령을 실행하여 authorised_keys에 복사하면 됩니다. 이 명령은 사용 가능한 경우 새 authorised_keys도 생성합니다.

    cat private_key_for_jenkins.pub > authorized_keys

    이제 Jenkins 서버에 로그인한 다음 Jenkins 관리 -> 시스템 구성으로 이동합니다.

    대안으로 웹 브라우저에서 http://ip_address:8080/configure를 직접 작성할 수 있습니다. 이렇게 하면 ssh 구성을 위한 시스템 구성이 열립니다.

    이제 \Jenkins 구성\에서 SSH 서버 서버 섹션을 찾습니다. 이 섹션은 Jenkins 서버에 'SSH 자격 증명 플러그인'이 설치된 경우에만 사용할 수 있습니다.

    Publish over SSH 섹션으로 이동하여 키로 이동하여 private_key_for_jenkins의 콘텐츠를 붙여넣습니다.

    이제 SSH 서버 옵션에서 추가 버튼을 클릭하고 SSH 서버 세부 정보를 입력합니다. 고급 옵션에서 ssh 포트 및 기타 설정을 변경할 수 있습니다.

    변경 후 '테스트 구성'을 클릭하면 모든 설정이 올바른 경우 위의 스크린샷과 같은 성공 메시지가 표시됩니다.

    ssh를 사용하여 여러 서버에 동일한 코드를 게시하기 위한 요구 사항에 따라 여러 서버를 추가할 수 있습니다.

    이를 위해서는 앞에서 언급한 것처럼 각 서버에 대한 개인 키를 생성하고 해당 개인 키를 Jenkins 서버에 추가해야 합니다.

    마지막으로 '저장' 버튼을 클릭하고 변경 사항을 저장합니다. 원격 서버에 대한 SSH 연결을 성공적으로 생성했습니다. 이제 파일을 원격 서버로 보낼 수 있으며 해당 서버에서 명령이나 스크립트를 실행할 수도 있습니다.

    Github를 사용한 Jenkins 구성

    PUSH 및 PULL 요청에 의해 트리거되는 빌드 자동화를 위해 Jenkins WebHook을 각 GitHub 리포지토리 또는 조직 웹후크에 추가해야 합니다.

    Github 리포지토리에서 웹후크를 구성하는 단계입니다.

    1. GitHub 계정에 로그인합니다.

    2. 웹후크를 설정해야 하는 저장소를 클릭합니다.

    3. 해당 리포지토리의 설정 옵션으로 이동합니다.

    4. Webhooks를 클릭하고 페이로드 URL을 추가합니다. http://jenkins_ip:8080/github-webhook/처럼 보입니다.

    5. 콘텐츠 유형에서 인코딩 유형으로 "application/json"을 선택합니다.

    6. "비밀"을 공백으로 둡니다(Jenkins "시스템 구성 -> GitHub 플러그인" 섹션에서 비밀이 생성 및 구성되지 않은 경우).

    7. "개별 이벤트 선택"을 선택합니다.

    8. PUSH 및 Pull Request 이벤트 활성화

    9. "활성"이 선택되어 있는지 확인하십시오.

    10. 마지막으로 "웹훅 추가" 버튼을 클릭합니다.

    자세한 내용은 아래 스크린샷을 확인하세요.

    Jenkins는 이제 해당 리포지토리에 대한 푸시 및 풀 요청 알림을 수신하고 관련 빌드가 자동으로 트리거됩니다.

    Jenkins에서 첫 번째 작업 만들기

    이제 Jenkins 대시보드로 이동하여 새 항목을 선택한 다음 항목 이름을 입력하고 Freestyle Project를 선택합니다.

    확인을 클릭하면 구성 섹션으로 리디렉션됩니다.

    아래 스크린샷과 같이 현재 일반 탭에 있습니다. 일반적으로 탭은 프로젝트에 대한 설명을 제공하고 Github 프로젝트를 클릭합니다. 여기에 프로젝트의 GitHub URL을 입력합니다.

    이제 소스 코드 관리로 이동한 다음 Git을 클릭하고 코드를 가져올 리포지토리 URL을 입력합니다.

    이미 GitHub 자격 증명을 추가하고 드롭다운 메뉴를 클릭하고 GitHub 사용자 이름과 암호를 선택합니다.

    다음으로 브랜치로 이동하여 */master 브랜치를 빌드하고 선택합니다. 프로젝트 요구 사항에 따라 브랜치를 추가할 수 있습니다.

    이제 Build Trigger 탭으로 이동하여 GITScm 폴링 옵션에 대한 Github 후크 트리거를 선택합니다. GitHub 저장소를 변경할 때마다
    자동으로 빌드됩니다.

    이제 빌드 환경으로 이동하여 빌드가 실행된 후 파일 보내기 또는 SSH를 통한 명령 실행을 선택합니다.

    빌드 실행 후 파일을 원격 서버로 보냅니다.

    SSH 게시자로 이동 --> SSH 서버 --> 드롭다운 메뉴에서 서버 이름 선택

    여기에서 고급 매개변수도 설정할 수 있지만 현재는 기본 설정으로 이동합니다.

    이제 ssh를 통해 복사할 파일 종류를 추가해야 합니다. 여기에서 GitHub 리포지토리의 모든 폴더와 파일을 선택합니다. 파일 추가 및 폴더 선택을 위해 소스 파일에 **/*를 추가하기만 하면 됩니다.

    비슷한 방법으로 Exec 명령 텍스트 상자에 원격 서버에서 실행될 명령을 줄 수 있습니다.

    그런 다음 파일을 복사해야 하는 원격 디렉터리를 지정합니다. 이는 선택적 옵션입니다.

    SSH 게시자 --> 전송 --> 전송 세트 --> 소스 파일 --> 추가 **/*

    SSH 게시자 --> 전송 --> 전송 세트 --> 원격 디렉터리 --> /jenkins-test

    SSH 게시자 --> 전송 --> 전송 세트 --> 명령 실행 --> 명령

    기본적으로 Jenkins는 .git .svn .gitignore 등과 같은 특정 파일을 제외합니다. 여기에서 모든 파일을 원격 서버에 복사하려고 합니다. 이를 위해 Exec 명령 바로 아래에 있는 고급 버튼을 클릭하고 "기본 제외 항목 없음" 옵션을 선택합니다.

    그게 전부입니다. 빌드 후 작업에는 프로젝트 요구 사항에 따라 사용할 수 있는 많은 옵션이 있습니다.

    빌드 테스트

    구성을 테스트할 시간입니다.

    Jenkins 대시보드로 이동한 다음 프로젝트 Jenkins-test를 클릭합니다.

    그런 다음 빌드에 대한 지금 빌드 옵션을 클릭하십시오. 빌드 프로세스가 실패하면 노란색 아이콘과 함께 빌드 버전 번호가 표시됩니다.

    빌드 프로세스를 확인하고 스크린샷에 표시된 대로 빌드 번호를 클릭하기만 하면 됩니다.

    이제 콘솔 출력을 클릭합니다. 여기에서 자세한 정보 표시 모드의 모든 프로세스를 볼 수 있습니다.

    마지막으로 콘솔 출력 끝에 "Finished: SUCCESS" 행이 표시됩니다.

    축하합니다! 이제 Jenkins가 GitHub와 성공적으로 통합되어 사용할 준비가 되었습니다.