Ubuntu 16.04에 Buildbot 설치 방법

Ubuntu 16.04에 Buildbot 설치 방법

2022-06-01 last update

15 minutes reading Ubuntu Ubuntu 16.04 CI/CD

소개


Buildbot은 Python 기반의 연속 통합 시스템으로 소프트웨어 구축, 테스트, 발표 과정을 자동화하는 데 사용된다.이것은 PythonTwisted library을 사용하여buildmaster와 하나 이상의 Worker 간의 비동기적인 통신을 처리하여 여러 플랫폼에서 테스트를 하고 구축하는 데 편리하도록 한다.Buildbot은 고도로 설정할 수 있고 구축 과정이 어떻게 작업해야 하는지에 대한 가설이 드물기 때문에 복잡한 구축 과정이나 프로젝트의 독특한 수요에 따라 도구가 필요한 프로젝트에 적합하다.
이 강좌에서, 우리는 같은 기계에 Buildbotbuildmaster와worker를 설치하고 설정할 것입니다.

선결 조건


본 강좌를 배우려면 다음이 필요합니다.
  • Ubuntu 16.04 서버, 최소 1GB의 RAM, 비rootsudo 사용자와 방화벽이 설치되어 있습니다.
  • 서버가 설정된 후에 당신은 계속 조작할 수 있습니다.

    1단계 - Buildbot 설치


    Buildbot 프로젝트는 최신 버전을 얻기 위해 파이썬 패키지 인덱스 pip를 사용하여 Buildbot을 설치하는 것을 권장합니다. 이 버전은 보통 Ubuntu 패키지에서 제공하는 버전보다 몇 개 앞당겨집니다.
    우리는 sudo 사용자부터 시작하여 apt-get update 를 사용하여 최신 패키지 목록을 확보합니다.
    1. sudo apt-get update
    그런 다음 pip 자체를 설치합니다.
    1. sudo apt-get install python-pip
    pip가 사용되면, 웹 인터페이스에 필요한 의존 항목을 포함하여 마스터와worker 및 기타 의존 항목을 포함하여 Buildbot 패키지를 설치할 것입니다.Pip은 사용자를 실행하는 홈 디렉토리에 .cache 개의 파일을 생성합니다.우리는 sudo-H 로고를 사용하여 이 파일들을 정확한 위치에 배치할 것이다.
    1. sudo -H pip install 'buildbot[bundle]'
    이것은 서버의 속도에 따라 약간의 시간이 걸릴 수 있습니다.성공적으로 설치된 출력의 끝은 다음과 같습니다.
    Output
    . . . Successfully installed Automat-0.6.0 Jinja2-2.10 MarkupSafe-1.0 PyJWT-1.6.0 Tempita-0.5.2 Twisted-17.9.0 attrs-17.4.0 autobahn-18.3.1 buildbot-1.0.0 buildbot-console-view-1.0.0 buildbot-grid-view-1.0.0 buildbot-waterfall-view-1.0.0 buildbot-worker-1.0.0 buildbot-www-1.0.0 constantly-15.1.0 decorator-4.2.1 future-0.16.0 hyperlink-18.0.0 idna-2.6 incremental-17.5.0 pbr-3.1.1 python-dateutil-2.6.1 six-1.11.0 sqlalchemy-1.2.5 sqlalchemy-migrate-0.11.0 sqlparse-0.2.4 txaio-2.9.0 zope.interface-4.4.3
    또한 pip 업그레이드 자체에 대한 조언을 표시할 수 있습니다.
    Output
    . . . You are using pip version 8.1.1, however version 9.0.1 is available. You should consider upgrading via the 'pip install --upgrade pip' command.
    이것은 저희 Buildbot 설치에 영향을 주지 않지만, 우리는 pip의 최신 버전으로 업그레이드하는 데 시간이 좀 걸릴 것입니다.
    1. sudo -H pip install --upgrade pip
    Output
    Collecting pip Downloading pip-9.0.1-py2.py3-none-any.whl (1.3MB) 100% |████████████████████████████████| 1.3MB 768kB/s Installing collected packages: pip Found existing installation: pip 8.1.1 Not uninstalling pip at /usr/lib/python2.7/dist-packages, outside environment /usr Successfully installed pip-9.0.1
    마지막으로 버전 확인을 통해 Buildbot 설치를 검증합니다.
    1. buildbot --version
    Output
    Buildbot version: 1.0.0 Twisted version: 17.9.0
    본 강좌의 전제 조건에서 UFW 방화벽은 SSH 통신만 허용하도록 구성됩니다.상태를 확인합니다.
    1. sudo ufw status
    Output
    Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6)
    Buildbot은 포트 8010을 웹 인터페이스로 사용합니다. 이것은 허용되지 않기 때문에 지금 바로 열겠습니다.
    1. sudo ufw allow 8010
    그리고 Buildbot 서비스를 실행하기 위해 전용 시스템 사용자와 그룹을 추가합니다.
    1. sudo addgroup --system buildbot
    2. sudo adduser buildbot --system --ingroup buildbot --shell /bin/bash
    마지막으로 Buildbot을 설치하기 위해 새 사용자로 로그인합니다.
    1. sudo --login --user buildbot
    이렇게 하면 buildbot 사용자로 로그인하고 /home/buildbot 디렉터리에 저장하여 운영 서버와 작업 서버를 구성합니다.

    2단계 - 호스트 구성


    buildbot 명령 create-master 을 사용하여 기본 디렉터리의 값을 따릅니다.
    1. buildbot create-master ~/master
    Output
    mkdir /home/buildbot/master creating /home/buildbot/master/master.cfg.sample creating database (sqlite:///state.sqlite) buildmaster configured in /home/buildbot/master
    다음은 master.cfg.samplemaster.cfg 로 복사하고 원본을 보존하여 참고하도록 하겠습니다.
    1. cp ~/master/master.cfg.sample ~/master/master.cfg
    그리고 로컬 컴퓨터에서 웹 인터페이스에 접근할 수 있도록 이 파일을 편집할 것입니다.
    1. nano ~/master/master.cfg
    데스크톱이나 다른 장치에서 웹 인터페이스에 접근하기 위해서, 우리는 buildbotURL 에서 localhost 서버의 IP 주소나 도메인 이름으로 변경할 것입니다.또한 사용 현황 보고 정책을 설정합니다.master.cfg 에는 다른 중요한 구성 값이 설정되어 있지만 나머지 기본값은 유지됩니다.
    파일 하단 근처에서 buildbotURL 행을 찾아 localhost 사이트의 IP 주소 또는 도메인 이름으로 바꿉니다.
    주.cfg
    c['buildbotURL'] = "http://IP_or_site_domain:8010/"
    
    주: master.cfg 또'노동자'부분에서 노동자를 미리 정의했다.
    주.cfg
    . . .
    ####### WORKERS
    
    # The 'workers' list defines the set of recognized workers. Each element is
    # a Worker object, specifying a unique worker name and password.  The same
    # worker name and password must be configured on the worker.
    c['workers'] = [worker.Worker("example-worker", "pass")]
    . . .
    
    
    이 강좌의 뒤에서, 우리는 이 증빙서류들을 사용하여worker를 만들 것입니다.
    다음은 파일의 밑에 buildbotNetUsageData 명령의 값을 설정합니다.이것은 응용 프로그램의 개선을 돕기 위해 개발자에게 통계 정보를 보고할지 여부를 정의합니다.이 작업을 종료하려면 None 로 설정할 수 있습니다.사용 상황에 대한 기본 정보를 보내는 데 개의치 않으신다면 문자열 "basic" 을 사용하십시오.
    이 설정에 대한 자세한 내용은 Ubuntu 16.04 initial server setup guide 에서 확인할 수 있습니다.
    주.cfg
    c['buildbotNetUsageData'] = None
    # To send back basic information, use this instead:
    #c['buildbotNetUsageData'] = 'basic'
    
    'buildbotURL' 행을 수정하고 추가한 후 파일을 저장하고 종료합니다.
    다음 내용을 입력하여 호스트 구성을 확인합니다.
    1. buildbot checkconfig ~/master
    구문이 올바르면 다음 메시지로 끝나는 출력이 표시됩니다.
    Output
    . . . Config file is good!
    출력에 구문 오류가 있음을 표시하면 파일로 돌아가서 다시 확인하십시오.buildbotNetUsageData 명령이 성공하면 호스트를 시작합니다.
    1. buildbot start ~/master
    재부팅에 성공하면 다음 확인을 받아야 합니다.
    Output
    Following twistd.log until startup finished.. The buildmaster appears to have (re)started correctly.
    마지막으로 포트 8010checkconfig의 웹 브라우저에서 이 사이트를 방문하도록 설정했습니다.buildbotURL
    현재 우리는 마스터를 실행하고 웹 인터페이스에 접근할 수 있음을 검증했습니다. 다음은 예시worker를 만들 것입니다.

    단계 3 - 작업 프로세스 구성

    http://IP_or_site_domain:8010/ 파일의 작업자 이름과 암호가 주 프로그램을 사용하도록 설정된 작업자 이름과 암호가 일치하면 주 프로그램과 작업자 간의 관계가 설정됩니다.
    이 단계에서는 master.cfgbuildbot-worker 명령을 호출하고 네 개의 설정을 전송하여 작업 프로세스를 만들고 구성합니다.
  • create-worker는 스토리지 작업자가 설정한 디렉토리의 이름입니다
  • .
  • worker는 노동자 주 서버가 실행하는 주소
  • localhost는 작업자의 명칭으로 example-worker 파일에서 이 작업자를 유일하게 표시해야 한다.
  • ~/master/master.cfg는 작업자의 암호이며 이 암호는 pass의 값과 일치해야 합니다.
    1. buildbot-worker create-worker ~/worker localhost example-worker pass
    Output
    mkdir /home/buildbot/worker mkdir /home/buildbot/worker/info Creating info/admin, you need to edit it appropriately. Creating info/host, you need to edit it appropriately. Not creating info/access_uri - add it if you wish Please edit the files in /home/buildbot/worker/info appropriately. worker configured in /home/buildbot/worker
    worker가 처음 연결될 때, ~master/master.cfg 디렉터리에 있는 파일을 실행하는buildmaster로 보냅니다.그것들은 웹 인터페이스에 표시되어 개발자에게 테스트 실패에 대한 더 많은 정보를 제공할 것이다.
    우리는 지금 이것들을 설정할 것이다.먼저 관리자 전자 메일이 포함된 파일을 열고 예시 행info을 삭제하고 이름과 전자 메일 주소로 대체합니다.
    1. nano ~/worker/info/admin
    ~/일꾼/정보/관리자
    Sammy Shark <[email protected]>
    
    완료되면 파일을 저장하고 종료합니다.
    관례에 따라 Your Name Here <[email protected]> 파일은 운영체제, 버전, 메모리 크기, CPU 속도, 설치된 관련 라이브러리의 버전을 제공하고 마지막으로worker에서 실행되는 Buildbot 버전을 제공합니다.
    파일을 열고 시스템 필요에 따라 샘플 내용을 업데이트하려면 관련 정보를 붙여넣습니다.
    1. nano ~/worker/info/host
    시스템의 세부 사항을 반영하는 정보 업데이트:
    ~/일꾼/정보/호스트
    Ubuntu 16.04.2 2GB Droplet - Buildbot version: 1.0.0 - Twisted version: 17.1.0
    
    완료되면 저장하고 종료합니다.마지막으로 Worker를 시작합니다.
    1. buildbot-worker start ~/worker
    Output
    Following twistd.log until startup finished.. The buildbot-worker appears to have (re)started correctly.
    현재 메인 프로그램과 작업 프로그램이 모두 설정되어 실행되고 있으며, 우리는 테스트 구축을 실행할 것입니다.

    단계 4 - 테스트 구축 실행


    테스트 구축을 실행하려면 웹 인터페이스에서'구축'메뉴를 열고'일꾼'을 선택하십시오.예시worker와 우리가 info/hostinfo/admin 에서 설정한 정보를 보여야 합니다.여기에서 기본 생성기 "runtests"를 누르면 강제로 생성할 수 있습니다.

    첫 번째 구축 요청을 보내기 전에'runtests'화면에 정보가 거의 없습니다.이제 화면 오른쪽 상단에 있는 [강제] 버튼을 클릭하여 강제합니다.

    강제 생성에 대한 정보를 입력할 수 있는 대화상자가 열립니다.

    이 테스트 구축에 대해 필드를 비우고 팝업 창의'구축 시작'단추를 누르십시오.이름 필드에 값을 입력한 경우 유효한 전자 메일 주소가 있어야 합니다.
    몇 초 후 구축이 성공적으로 완료되어야 합니다.

    이름 옆에 있는 숫자나 화살표를 클릭하여 생성 단계별 세부 정보를 볼 수 있습니다.

    이 구축을 실행하려면 로그인할 필요가 없습니다.기본적으로 모든 사람이 관리 기능에 접근할 수 있기 때문에, 이 기능을 잠그고 사용자 계정을 만드는 데 시간이 좀 걸릴 것입니다.[Buildbot의 공인 문서]에서 사용 가능한 옵션에 대한 자세한 내용을 확인할 수 있습니다.( the Buildbot global configuration documentation ).
    다시 열기 info/host 파일:
    1. nano ~/master/master.cfg
    파일 밑에 다음 줄을 추가하고 사용자 이름과 비밀번호를 변경합니다.
    파일: ~/master/master.cfg
    . . .
    c['www']['authz'] = util.Authz(
           allowRules = [
               util.AnyEndpointMatcher(role="admins")
           ],
           roleMatchers = [
               util.RolesFromUsername(roles=['admins'], usernames=['Sammy'])
           ]
    )
    c['www']['auth'] = util.UserPasswordAuth({'Sammy': 'Password'})
    
    완료되면 파일에 대해 다른 구문 검사를 실행합니다.
    1. buildbot checkconfig ~/master
    Output
    Config file is good!
    오류가 표시되지 않으면 주 서비스를 다시 시작하십시오.
    1. buildbot restart ~/master
    웹 인터페이스를 다시 불러올 때, 오른쪽 상단에 "익명"이라고 쓰여 있고, 더 이상 관리 기능에 접근할 수 없는 링크가 나타날 것입니다.

    "익명"을 누르면 방금 추가한 인증서를 테스트할 것입니다. 로그인 상자를 열면 설정한 사용자 이름과 비밀번호를 입력할 수 있습니다.우리가 로그인할 때, 비록'익명'은 더 이상 구축을 시작할 권리가 없지만, 우리의'Sammy'사용자는 구축을 시작할 권리가 있음을 보아야 한다.

    이로써 Buildbot의 설치가 완료되었고 인터페이스를 보호하기 위한 최소한의 절차를 취했습니다.그러나 사용자 이름과 비밀번호는 명문으로 전송됩니다.다음 단계로, Buildbot을 진지하게 사용하기 전에, 우리는 당신이 http://docs.buildbot.net/current/developer/authz.html 웹 인터페이스를 보호하는 것을 권장합니다.

    결론


    이 강좌에서, 우리는 같은 기계에 Buildbot 호스트와 로컬 Buildbot 작업 프로그램을 설치하고 설정했다.Buildbot을 평가하는 경우 이 프로젝트reverse proxy를 원할 수도 있습니다.
    그렇지 않으면 서버의 init 시스템이 Buildbot 프로세스를 관리할 수 있도록 다음 강좌 Quick Tour 를 계속합니다.