
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를 설치하고 설정할 것입니다.
선결 조건
본 강좌를 배우려면 다음이 필요합니다.
sudo
사용자와 방화벽이 설치되어 있습니다.1단계 - Buildbot 설치
Buildbot 프로젝트는 최신 버전을 얻기 위해 파이썬 패키지 인덱스 pip를 사용하여 Buildbot을 설치하는 것을 권장합니다. 이 버전은 보통 Ubuntu 패키지에서 제공하는 버전보다 몇 개 앞당겨집니다.
우리는
sudo
사용자부터 시작하여 apt-get update
를 사용하여 최신 패키지 목록을 확보합니다.- sudo apt-get update
그런 다음 pip 자체를 설치합니다.- sudo apt-get install python-pip
pip가 사용되면, 웹 인터페이스에 필요한 의존 항목을 포함하여 마스터와worker 및 기타 의존 항목을 포함하여 Buildbot 패키지를 설치할 것입니다.Pip은 사용자를 실행하는 홈 디렉토리에 .cache
개의 파일을 생성합니다.우리는 sudo
의 -H
로고를 사용하여 이 파일들을 정확한 위치에 배치할 것이다.- 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의 최신 버전으로 업그레이드하는 데 시간이 좀 걸릴 것입니다.- sudo -H pip install --upgrade pip
OutputCollecting 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 설치를 검증합니다.- buildbot --version
OutputBuildbot version: 1.0.0
Twisted version: 17.9.0
본 강좌의 전제 조건에서 UFW 방화벽은 SSH 통신만 허용하도록 구성됩니다.상태를 확인합니다.- sudo ufw status
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Buildbot은 포트 8010을 웹 인터페이스로 사용합니다. 이것은 허용되지 않기 때문에 지금 바로 열겠습니다.- sudo ufw allow 8010
그리고 Buildbot 서비스를 실행하기 위해 전용 시스템 사용자와 그룹을 추가합니다.- sudo addgroup --system buildbot
- sudo adduser buildbot --system --ingroup buildbot --shell /bin/bash
마지막으로 Buildbot을 설치하기 위해 새 사용자로 로그인합니다.- sudo --login --user buildbot
이렇게 하면 buildbot
사용자로 로그인하고 /home/buildbot
디렉터리에 저장하여 운영 서버와 작업 서버를 구성합니다.2단계 - 호스트 구성
buildbot 명령
create-master
을 사용하여 기본 디렉터리의 값을 따릅니다.- buildbot create-master ~/master
Outputmkdir /home/buildbot/master
creating /home/buildbot/master/master.cfg.sample
creating database (sqlite:///state.sqlite)
buildmaster configured in /home/buildbot/master
다음은 master.cfg.sample
를 master.cfg
로 복사하고 원본을 보존하여 참고하도록 하겠습니다.- cp ~/master/master.cfg.sample ~/master/master.cfg
그리고 로컬 컴퓨터에서 웹 인터페이스에 접근할 수 있도록 이 파일을 편집할 것입니다.- 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'
행을 수정하고 추가한 후 파일을 저장하고 종료합니다.다음 내용을 입력하여 호스트 구성을 확인합니다.
- buildbot checkconfig ~/master
구문이 올바르면 다음 메시지로 끝나는 출력이 표시됩니다.Output. . .
Config file is good!
출력에 구문 오류가 있음을 표시하면 파일로 돌아가서 다시 확인하십시오.buildbotNetUsageData
명령이 성공하면 호스트를 시작합니다.- buildbot start ~/master
재부팅에 성공하면 다음 확인을 받아야 합니다.OutputFollowing twistd.log until startup finished..
The buildmaster appears to have (re)started correctly.
마지막으로 포트 8010checkconfig
의 웹 브라우저에서 이 사이트를 방문하도록 설정했습니다.buildbotURL

현재 우리는 마스터를 실행하고 웹 인터페이스에 접근할 수 있음을 검증했습니다. 다음은 예시worker를 만들 것입니다.
단계 3 - 작업 프로세스 구성
http://IP_or_site_domain:8010/
파일의 작업자 이름과 암호가 주 프로그램을 사용하도록 설정된 작업자 이름과 암호가 일치하면 주 프로그램과 작업자 간의 관계가 설정됩니다.이 단계에서는
master.cfg
의 buildbot-worker
명령을 호출하고 네 개의 설정을 전송하여 작업 프로세스를 만들고 구성합니다.create-worker
는 스토리지 작업자가 설정한 디렉토리의 이름입니다worker
는 노동자 주 서버가 실행하는 주소localhost
는 작업자의 명칭으로 example-worker
파일에서 이 작업자를 유일하게 표시해야 한다.~/master/master.cfg
는 작업자의 암호이며 이 암호는 pass
의 값과 일치해야 합니다.- buildbot-worker create-worker ~/worker localhost example-worker pass
Outputmkdir /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
을 삭제하고 이름과 전자 메일 주소로 대체합니다.- nano ~/worker/info/admin
~/일꾼/정보/관리자Sammy Shark <[email protected]>
완료되면 파일을 저장하고 종료합니다.관례에 따라
Your Name Here <[email protected]>
파일은 운영체제, 버전, 메모리 크기, CPU 속도, 설치된 관련 라이브러리의 버전을 제공하고 마지막으로worker에서 실행되는 Buildbot 버전을 제공합니다.파일을 열고 시스템 필요에 따라 샘플 내용을 업데이트하려면 관련 정보를 붙여넣습니다.
- nano ~/worker/info/host
시스템의 세부 사항을 반영하는 정보 업데이트:~/일꾼/정보/호스트
Ubuntu 16.04.2 2GB Droplet - Buildbot version: 1.0.0 - Twisted version: 17.1.0
완료되면 저장하고 종료합니다.마지막으로 Worker를 시작합니다.- buildbot-worker start ~/worker
OutputFollowing twistd.log until startup finished..
The buildbot-worker appears to have (re)started correctly.
현재 메인 프로그램과 작업 프로그램이 모두 설정되어 실행되고 있으며, 우리는 테스트 구축을 실행할 것입니다.단계 4 - 테스트 구축 실행
테스트 구축을 실행하려면 웹 인터페이스에서'구축'메뉴를 열고'일꾼'을 선택하십시오.예시worker와 우리가
info/host
및 info/admin
에서 설정한 정보를 보여야 합니다.여기에서 기본 생성기 "runtests"를 누르면 강제로 생성할 수 있습니다.
첫 번째 구축 요청을 보내기 전에'runtests'화면에 정보가 거의 없습니다.이제 화면 오른쪽 상단에 있는 [강제] 버튼을 클릭하여 강제합니다.

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

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

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

이 구축을 실행하려면 로그인할 필요가 없습니다.기본적으로 모든 사람이 관리 기능에 접근할 수 있기 때문에, 이 기능을 잠그고 사용자 계정을 만드는 데 시간이 좀 걸릴 것입니다.[Buildbot의 공인 문서]에서 사용 가능한 옵션에 대한 자세한 내용을 확인할 수 있습니다.( the Buildbot global configuration documentation ).
다시 열기
info/host
파일:- 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'})
완료되면 파일에 대해 다른 구문 검사를 실행합니다.- buildbot checkconfig ~/master
OutputConfig file is good!
오류가 표시되지 않으면 주 서비스를 다시 시작하십시오.- buildbot restart ~/master
웹 인터페이스를 다시 불러올 때, 오른쪽 상단에 "익명"이라고 쓰여 있고, 더 이상 관리 기능에 접근할 수 없는 링크가 나타날 것입니다.
"익명"을 누르면 방금 추가한 인증서를 테스트할 것입니다. 로그인 상자를 열면 설정한 사용자 이름과 비밀번호를 입력할 수 있습니다.우리가 로그인할 때, 비록'익명'은 더 이상 구축을 시작할 권리가 없지만, 우리의'Sammy'사용자는 구축을 시작할 권리가 있음을 보아야 한다.

이로써 Buildbot의 설치가 완료되었고 인터페이스를 보호하기 위한 최소한의 절차를 취했습니다.그러나 사용자 이름과 비밀번호는 명문으로 전송됩니다.다음 단계로, Buildbot을 진지하게 사용하기 전에, 우리는 당신이 http://docs.buildbot.net/current/developer/authz.html 웹 인터페이스를 보호하는 것을 권장합니다.
결론
이 강좌에서, 우리는 같은 기계에 Buildbot 호스트와 로컬 Buildbot 작업 프로그램을 설치하고 설정했다.Buildbot을 평가하는 경우 이 프로젝트reverse proxy를 원할 수도 있습니다.
그렇지 않으면 서버의 init 시스템이 Buildbot 프로세스를 관리할 수 있도록 다음 강좌 Quick Tour 를 계속합니다.