(เดเดฟเดคเตเดฐเด
เดนเดฒเต!
เดเดจเตเดฑเต เดชเตเดฐเต เดเดตเตเดเตเดจเดฟ เดเตเตผเดเดฟเตป, เดเดพเตป เดเดฐเต เดฎเตเดจเดฟเดเดเต เดเดฎเตเดชเดจเดฟเดฏเดฟเดฒเต เดเดฐเต เดตเดฟเดเดธเดจ เดเตเดฎเดฟเดฒเต เดเดฐเต เดชเตเดฐเตเดเตเดฐเดพเดฎเดฑเดพเดฃเต เดชเตเดณเดฟเดฎเตเดฑเตเดฑเตฝ.
เดเดคเตเดเตเดเดฟเดฒเตเด เดตเดฒเดฟเดฏ เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดเดฐเดเดญเดฟเดเตเดเตเดฎเตเดชเตเตพ, เดจเดฟเดเตเดเตพ เดเดฟเดจเตเดคเดฟเดเตเดเดพเตป เดคเตเดเดเตเดเตเดจเตเดจเต: "เดเดคเต เดธเตเดซเตโเดฑเตเดฑเตโเดตเตเดฏเดฑเดพเดฃเต เด เดคเต เดธเตผเดตเตเดตเตเดธเต เดเตเดฏเตเดฏเดพเตป เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเต?" เด เดเตเดคเตเดค เดชเดคเดฟเดชเตเดชเต เดชเตเดฑเดคเตเดคเดฟเดฑเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต เดเดฐเต เดเดเดฟ เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดจเดฟเดฐเดตเดงเดฟ เดเดเตเดเดเตเดเดณเดฟเดฒเตเดเต เดเดเดจเตเดจเตเดชเตเดเตเดจเตเดจเต. เด เดเดเตเดเดเตเดเดณเตเดเต เดถเตเดเดเดฒ เดฏเดพเดจเตเดคเตเดฐเดฟเดเดฎเดพเดเตเดฎเตเดชเตเตพ เดเดคเต เดจเดฒเตเดฒเดคเดพเดฃเต. เดเดฐเต เดเดเดฟ เดชเตเดฐเตเดเดเตเดฑเตเดฑเดฟเดจเตเดฑเต เดคเดจเตเดจเต เดเดฐเต เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเต เดชเตเดฑเดคเตเดคเดฟเดฑเดเตเดเตเดจเตเดจ เดเดเตเดเตเดฎเตเดฑเตเดฑเดกเต เดชเตเดฐเดเตเดฐเดฟเดฏเดฏเต เดตเดฟเดณเดฟเดเตเดเตเดจเตเดจเต เดคเตเดเตผเดเตเดเดฏเดพเดฏ เดเดเตเดเดฐเดฃเด. เดฌเดฟเตฝเดกเตเดฌเตเดเตเดเต เด เดชเตเดฐเดเตเดฐเดฟเดฏ เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเตเดจเตเดจเดคเดฟเตฝ เดเดเตเดเตพเดเตเดเต เดเดฐเต เดจเดฒเตเดฒ เดธเดนเดพเดฏเดฟเดฏเดพเดฏเดฟ เดฎเดพเดฑเดฟ.
เด เดฒเตเดเดจเดคเตเดคเดฟเตฝ, เดธเดพเดงเตเดฏเดคเดเดณเตเดเตเดเตเดฑเดฟเดเตเดเตเดณเตเดณ เดเดฐเต เด
เดตเดฒเตเดเดจเด เดจเตฝเดเดพเตป เดเดพเตป เดคเตเดฐเตเดฎเดพเดจเดฟเดเตเดเต เดฌเดฟเตฝเดกเตเดฌเตเดเตเดเต. เด เดธเตเดซเตเดฑเตเดฑเตโเดตเตเดฏเดฑเดฟเดจเต เดเดจเตเดคเต เดเดดเดฟเดตเตเดฃเตเดเต? เด
เดตเดจเต เดเดเตเดเดจเต เดธเดฎเตเดชเดฟเดเตเดเดพเด, เด
เดตเดจเตเดฎเดพเดฏเดฟ เดเดฐเต เดธเดพเดงเดพเดฐเดฃ เดซเดฒเดชเตเดฐเดฆเดฎเดพเดฏ เดชเตเดฐเดตเตผเดคเตเดคเดจ เดฌเดจเตเดงเด เดเดเตเดเดจเต เดเตเดเตเดเดฟเดชเตเดชเดเตเดเตเดเดพเด? เดจเดฟเดเตเดเดณเตเดเต เดฎเตเดทเตเดจเดฟเตฝ เดจเดฟเดเตเดเดณเตเดเต เดชเตเดฐเตเดเดเตโเดฑเตเดฑเต เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเด เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดฎเดพเดฏเดฟ เดเดฐเต เดตเตผเดเตเดเดฟเดเดเต เดธเตเดตเดจเด เดธเตเดทเตโเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเดฒเตเดเต เดเดเตเดเดณเตเดเต เด
เดจเตเดญเดตเด เดจเดฟเดเตเดเตพเดเตเดเต เดธเตเดตเดฏเด เดชเตเดฐเดฏเตเดเดฟเดเตเดเดพเดตเตเดจเตเดจเดคเดพเดฃเต.
เดเดณเตเดณเดเดเตเดเด
เดเดณเตเดณเดเดเตเดเด
1. เดเดจเตเดคเตเดเตเดฃเตเดเต BuildBot?
เดฎเตเดฎเตเดชเต เดนเดฌเตเตผ-เดเดฏเดฟเตฝ เดเดพเตป เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเตเดณเตเดณ เดฒเตเดเดจเดเตเดเตพ เดเดฃเตเดเดฟเดฐเตเดจเตเดจเต เดคเตเดเตผเดเตเดเดฏเดพเดฏ เดเดเตเดเดฐเดฃเด เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต เดฌเดฟเตฝเดกเตเดฌเตเดเตเดเต. เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต,
เดจเดฟเตผเดคเตเดคเตเด! เดเดฐเตเดเตเดเดฟเดฒเตเด เด
เดคเต เด
เดตเดฐเตเดเต เดชเตเดฐเตเดเดเตเดเตเดเดณเดฟเตฝ เดเดชเดฏเตเดเดฟเดเตเดเดฟเดเตเดเตเดฃเตเดเต? เด
เดคเต เดเดจเตเดจเต เดฎเดพเดฑเตเดจเตเดจเต
เด เดชเตเดชเตเตพ เดเดณเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเตปเดฑเต เดฏเตเดเตเดคเดฟ เดเดจเตเดคเดพเดฃเต เดฌเดฟเตฝเดกเตเดฌเตเดเตเดเต? เดเดฒเตเดฒเดพเดคเตเดคเดฟเดจเตเดฎเตเดชเดฐเดฟ, เดฎเดฑเตเดฑเต เดเดชเดเดฐเดฃเดเตเดเตพ เดเดฃเตเดเต: เดเตเดฐเตเดฏเดฟเดธเต เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด ะธ เดเตเดเตเดเดฟเตปเดธเต. เดเดพเตป เด เดฐเตเดคเดฟเดฏเดฟเตฝ เดเดคเตเดคเดฐเด เดจเตฝเดเตเด. เดฎเดฟเดเตเด เดเตเดฒเดฟเดเตพเดเตเดเตเด เดเตเดเตเดเดฟเตปเดธเต เดธเดคเตเดฏเด เดฎเดคเดฟเดฏเดพเดเตเด. เด เดคเดพเดเดเตเดเต, เดฌเดฟเตฝเดกเตเดฌเตเดเตเดเต - เดเตเดเตเดคเตฝ เด เดกเดพเดชเตเดฑเตเดฑเตเดตเต, เด เดคเตเดธเดฎเดฏเด เดชเตเดฐเดถเตโเดจเดเตเดเตพ เด เดตเดฟเดเต เดเดณเตเดณเดคเตเดชเตเดฒเต เดคเดจเตเดจเต เดชเดฐเดฟเดนเดฐเดฟเดเตเดเดชเตเดชเตเดเตเด เดเตเดเตเดเดฟเตปเดธเต. เดคเตเดฐเตเดฎเดพเดจเด เดจเดฟเดจเตเดฑเตเดคเดพเดฃเต. เดเดจเตเดจเดพเตฝ เดตเดฟเดเดธเดฟเดเตเดเตเดเตเดฃเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดเดพเตผเดเตเดฑเตเดฑเต เดชเตเดฐเตเดเดเตเดฑเตเดฑเดฟเดจเดพเดฏเดฟ เดเดเตเดเตพ เดเดฐเต เดเตเดณเดฟเดจเดพเดฏเดฟ เดคเดฟเดฐเดฏเตเดจเตเดจเดคเดฟเดจเดพเตฝ, เดเดจเตเดฑเดฑเดพเดเตเดฑเตเดฑเดฟเดตเดฟเดฑเตเดฑเดฟเดฏเตเด เด เดคเตเดฒเตเดฏเดฎเดพเดฏ เดเดจเตเดฑเตผเดซเตเดธเตเด เดเดณเตเดณ เดเดฐเต เดฌเดฟเตฝเดกเต เดธเดฟเดธเตเดฑเตเดฑเด เดฒเดญเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดเดเตเดเดเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดฐเดเดญเดฟเดเตเดเตเดจเตเดจ เดเดจเตเดจเต เดเดจเตเดคเตเดเตเดฃเตเดเต เดคเดฟเดฐเดเตเดเตเดเตเดคเตเดคเตเดเตเดเดพ.
เดเดพเตผเดเตเดฑเตเดฑเต เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดชเตเดคเตเดคเดฃเดฟเตฝ เดเดดเตเดคเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเดตเตผเดเตเดเต, เดเตเดฆเตเดฏเด เดเดฏเตผเดจเตเดจเตเดตเดฐเตเดจเตเดจเต: "เดเดจเตเดคเตเดเตเดฃเตเดเต เดชเตเดฐเตเดเดเตเดฑเตเดฑเดฟเตฝ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจ เดญเดพเดทเดฏเตเดเต เด เดเดฟเดธเตเดฅเดพเดจเดคเตเดคเดฟเตฝ เดตเตเดฏเดเตเดคเดฎเดพเดฏ เดเดจเตเดฑเตผเดซเตเดธเต เดเดณเตเดณ เดเดฐเต เดเดจเตเดฑเดเตเดฐเตเดทเตป เดธเดฟเดธเตเดฑเตเดฑเด เดคเดฟเดฐเดเตเดเตเดเตเดคเตเดคเตเดเตเดเดพ?" เดเดชเตเดชเตเตพ เดจเตเดเตเดเดเตเดเตพ เด เดตเดคเดฐเดฟเดชเตเดชเดฟเดเตเดเดพเดจเตเดณเตเดณ เดธเดฎเดฏเดฎเดพเดฃเต เดฌเดฟเตฝเดกเตเดฌเตเดเตเดเต.
เด เดคเดฟเดจเดพเตฝ, เดเดเตเดเดณเตเดเต "เดเตปเดธเตเดเตเดฐเตเดฎเตเดจเตเดฑเตฝ เดเตเดตเดพเตผเดเตเดเดฑเตเดฑเต". เดเดจเตเดจเต เดธเดเดฌเดจเตเดงเดฟเดเตเดเดฟเดเดคเตเดคเตเดณเด, เดเดพเตป เดจเดพเดฒเต เดธเดตเดฟเดถเตเดทเดคเดเตพ เดคเดฟเดฐเดฟเดเตเดเดฑเดฟเดเตเดเต เดฌเดฟเตฝเดกเตเดฌเตเดเตเดเต:
- เดเดคเต GPL เดฒเตเดธเตปเดธเดฟเดจเต เดเตเดดเดฟเดฒเตเดณเตเดณ เดเดฐเต เดเดชเตเดชเตบ เดธเตเดดเตโเดธเต เดเดเตเดเดเตเดเตเดเดพเดฃเต
- เดเดฐเต เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดเดชเดเดฐเดฃเดฎเดพเดฏเตเด เดเดตเดถเตเดฏเดฎเดพเดฏ เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเดณเตเดเต เดตเดฟเดตเดฐเดฃเดฎเดพเดฏเตเด เดชเตเดคเตเดคเดฃเดฟเดจเตเดฑเต เดเดชเดฏเตเดเดฎเดพเดฃเดฟเดคเต
- เด เดธเดเดฌเตเดฒเดฟ เดจเดเดเตเดเตเดจเตเดจ เดฎเตเดทเตเดจเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเตเดฐเดคเดฟเดเดฐเดฃเด เดฒเดญเดฟเดเตเดเดพเดจเตเดณเตเดณ เด เดตเดธเดฐเดฎเดพเดฃเดฟเดคเต
- เดเดตเดฏเดพเดฃเต, เดเดเตเดตเดฟเตฝ, เดเดฐเต เดนเตเดธเตเดฑเตเดฑเดฟเดจเตเดณเตเดณ เดเดฑเตเดฑเดตเตเด เดเตเดฑเดเตเด เดเดตเดถเตเดฏเดเดคเดเตพ. เดตเดฟเดจเตเดฏเดพเดธเดคเตเดคเดฟเดจเต เดชเตเดคเตเดคเดฃเตเด เดเตเดตเดฟเดธเตเดฑเตเดฑเตเด เดเดตเดถเตเดฏเดฎเดพเดฃเต, เดเตเดเดพเดคเต เดเดฐเต เดตเตเตผเดเตเดตเตฝ เดฎเตเดทเตเดจเตเด เดเดพเดต เดฎเตเดทเตเดจเตเด เดเดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ.
2. เดฌเดฟเตฝเดกเตเดฎเดพเดธเตเดฑเตเดฑเตผ เดจเดฏเดฟเดเตเดเตเดจเตเดจ เดเดถเดฏเด
เดเดพเดธเตโเดเต เดกเดฟเดธเตเดเตเดฐเดฟเดฌเตเดฏเตเดทเตป เดเตผเดเตเดเดฟเดเตเดเตโเดเดฑเดฟเดจเตเดฑเต เดเตเดจเตเดฆเตเดฐเดฎเดพเดฃเต เดฌเดฟเตฝเดกเตเดฎเดพเดธเตเดฑเตเดฑเตผ. เดเดคเต เดเดฐเต เดธเตเดตเดจเดฎเดพเดฃเต:
- เดเตเดฐเดพเดเตเดเต เดธเตเดเตเดทเดฟเดเตเดเตเดจเตเดจเต เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดธเตเดดเตเดธเต เดเตเดฐเตเดฏเดฟเดฒเต เดฎเดพเดฑเตเดฑเดเตเดเตพ
- เด เดฏเดฏเตเดเตเดเตเดจเตเดจเต เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเด เด เดคเต เดชเดฐเตเดเตเดทเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเด เดตเตผเดเตเดเตผ เดธเตเดตเดจเด เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเตเดฃเตเด เดเดฎเดพเตปเดกเตเดเตพ
- เด เดฑเดฟเดฏเดฟเดเตเดเตเดจเตเดจเต เดธเตเดตเตเดเดฐเดฟเดเตเด เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเดณเตเดเต เดซเดฒเดเตเดเดณเตเดเตเดเตเดฑเดฟเดเตเดเต เดเดชเดฏเตเดเตเดคเดพเดเตเดเตพ
เดฌเดฟเตฝเดกเตเดฎเดพเดธเตเดฑเตเดฑเตผ เดซเดฏเตฝ เดตเดดเดฟ เดเตเดฐเดฎเตเดเดฐเดฟเดเตเดเต master.cfg. เด เดซเดฏเตฝ เดฑเตเดเตเดเดฟเดฒเดพเดฃเต เดฌเดฟเตฝเดกเตเดฎเดพเดธเตเดฑเตเดฑเตผ. เด เดฑเตเดเตเดเต เดเดเตเดเดจเต เดธเตเดทเตเดเดฟเดเตเดเดชเตเดชเตเดเตเดจเตเดจเตเดตเตเดจเตเดจเต เดเดพเตป เดชเดฟเดจเตเดจเตเดเต เดเดพเดฃเดฟเดเตเดเตเด. เดซเดฏเตฝ เดคเดจเตเดจเต master.cfg เดเตเดณเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดชเตเดคเตเดคเตบ เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เด เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต เดฌเดฟเตฝเดกเตเดฌเตเดเตเดเต.
เด เดเตเดคเตเดค เดเดฑเตเดฑเดตเตเด เดชเตเดฐเดงเดพเดจเดชเตเดชเตเดเตเด เดตเดธเตเดคเต เดฌเดฟเตฝเดกเตเดฌเตเดเตเดเต เดเดฐเต เดชเตเดฐเตเดฃเตเดเต เดคเตเดดเดฟเดฒเดพเดณเดฟ. เดตเตเดฏเดคเตเดฏเดธเตโเดค OS เดเดณเตเดณ เดฎเดฑเตเดฑเตเดฐเต เดนเตเดธเตเดฑเตเดฑเดฟเตฝ เด เดธเตเดตเดจเด เดฒเตเดเตเดเต เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเตเด, เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดเดฐเตเดชเดเตเดทเต เดเดตเดฟเดเตเดฏเดพเดฏเดฟเดฐเตเดจเตเดจเดพเดฒเตเด เดฌเดฟเตฝเดกเตเดฎเดพเดธเตเดฑเตเดฑเตผ. เด เดคเดฟเดจเตเดฑเตเดคเดพเดฏ เดชเดพเดเตเดเตเดเตเดเดณเตเด เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดเดณเตเด เดเดชเดฏเตเดเดฟเดเตเดเต เดชเตเดฐเดคเตเดฏเตเดเด เดคเดฏเตเดฏเดพเดฑเดพเดเตเดเดฟเดฏ เดตเตเตผเดเตเดตเตฝ เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเดฏเดฟเดฒเตเด เดเดคเต เดจเดฟเดฒเดจเดฟเตฝเดเตเดเตเด. เดชเตเดคเตเดคเตบ เดฏเตเดเตเดเดฟเดฒเดฟเดฑเตเดฑเดฟเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเต เด เดตเตเตผเดเตเดตเตฝ เดเตปเดตเดฏเตเตบเดฎเตเดจเตเดฑเตเดเตพ เดคเดฏเตเดฏเดพเดฑเดพเดเตเดเดพเด virtualenv, venv.
เดฌเดฟเตฝเดกเตเดฎเดพเดธเตเดฑเตเดฑเตผ เดเดฒเตเดฒเดพเดตเดฐเดฟเดฒเตเดเตเดเตเด เดเดฎเดพเตปเดกเตเดเตพ เดชเตเดฐเดเตเดทเตเดชเดฃเด เดเตเดฏเตเดฏเตเดจเตเดจเต เดคเตเดดเดฟเดฒเดพเดณเดฟ-y, เด เดตเตป เด เดต เดจเดฟเดฑเดตเตเดฑเตเดฑเตเดจเตเดจเต. เด เดคเดพเดฏเดคเต, เดเดฐเต เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเด เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดฎเตเดณเตเดณ เดชเตเดฐเดเตเดฐเดฟเดฏ เดคเตเดเดฐเดพเตป เดเดดเดฟเดฏเตเดฎเตเดจเตเดจเต เดเดคเต เดฎเดพเดฑเตเดจเตเดจเต เดคเตเดดเดฟเดฒเดพเดณเดฟ-เด เดตเดฟเตปเดกเตเดธเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเต, เดฒเดฟเดจเดเตเดธเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจ เดฎเดฑเตเดฑเตเดฐเต เดตเตผเดเตเดเดฑเดฟเตฝ.
เดเตเดเตเดเต เดเดเตเดเต เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดธเตเดดเตเดธเต เดเตเดกเตเดเตพ เดเดฐเตเดจเตเดจเดฟเดจเตเด เดธเดเดญเดตเดฟเดเตเดเตเดจเตเดจเต เดคเตเดดเดฟเดฒเดพเดณเดฟ-เด.
3. เดเตปเดธเตเดฑเตเดฑเดฒเตเดทเตป
เด เดคเดฟเดจเดพเตฝ, เดจเดฎเตเดเตเดเต เดชเตเดเดพเด. เดเดพเตป เดนเตเดธเตเดฑเตเดฑเดพเดฏเดฟ เดเดฌเตเดฃเตเดเต 18.04 เดเดชเดฏเตเดเดฟเดเตเดเตเด. เดเดพเตป เด เดคเดฟเตฝ เดเดฐเตเดฃเตเดฃเด เดธเตเดฅเดพเดชเดฟเดเตเดเตเด เดฌเดฟเตฝเดกเตเดฎเดพเดธเตเดฑเตเดฑเตผ-เดเดฏเตเด เดเดจเตเดจเต เดคเตเดดเดฟเดฒเดพเดณเดฟ-เด. เดเดจเตเดจเดพเตฝ เดเดฆเตเดฏเด เดจเดฟเดเตเดเตพ python3.7 เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเดฃเด:
sudo apt-get update
sudo apt-get install python3.7
3.7.2-เดจเต เดชเดเดฐเด python3.7.1 เดเดตเดถเตเดฏเดฎเตเดณเตเดณเดตเตผเดเตเดเต, เดจเดฟเดเตเดเตพเดเตเดเต เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดต เดเตเดฏเตเดฏเดพเด:
sudo apt-get update
sudo apt-get software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get install python3.7
sudo ln -fs /usr/bin/python3.7 /usr/bin/python3
pip3 install --upgrade pip
เด เดเตเดคเตเดค เดเดเตเดเด เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเตเด เดเดจเตเดจเดคเดพเดฃเต เดเตเดตเตเดฑเตเดฑเต เดเตเดฏเตเดคเต ะธ เดฌเดฟเตฝเดกเตเดฌเตเดเตเดเต, เดเตเดเดพเดคเต เด เดงเดฟเด เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดทเดฎเดค เดเดชเดฏเตเดเดฟเดเตเดเดพเตป เดจเดฟเดเตเดเดณเต เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจ เดชเดพเดเตเดเตเดเตเดเดณเตเด เดฌเดฟเตฝเดกเตเดฌเตเดเตเดเต-เด.
/*ะัะต ััะพ ะฟะพะด sudo ะฑัะดะตั ัััะฐะฝะพะฒะปะตะฝะฝะพ ะดะปั ะฒัะตั
ะฟะพะปัะทะพะฒะฐัะตะปะตะน ะฒ ะดะธัะตะบัะพัะธั /usr/local/lib/python3.7/dist-packages*/
#ะะฐ ั
ะพััะต ะบะพัะพััะน ะฟัะพะธะทะฒะพะดะธั ะผะพะฝะธัะพัะธะฝะณ Worker-ะพะฒ
sudo pip install twisted #ะะธะฑะปะธะพัะตะบะฐ twisted
sudo pip install buildbot #BuildMaster
#ะะพะฟะพะปะฝะธัะตะปัะฝัะน ััะฝะบัะธะพะฝะฐะป
pip install pysqlite3 #ะฃััะฐะฝะฐะฒะปะธะฒะฐะตะผ ะฑะฐะทั sqllite ะฒ ััะตะฑะฝัั
ัะตะปัั
pip install jinja2 #framework ะฝะฐะฟะพะดะพะฑะธะต django, ะดะปั web ะธ ะดะปั ะฟะพััะพะฒัั
ัะฐัััะปะปะพะบ
pip install autobahn #Web cะพะบะตัั ะดะปั ัะฒัะทะธ BuildMaster->Worker
pip install sqlalchemy sqlalchemy-migrate #ะะปั ะพัะพะฑัะฐะถะตะฝะธั ัั
ะตะผั ะฑะฐะทั ะดะฐะฝะฝัั
#ะะปั Web ะพัะพะฑัะฐะถะตะฝะธั BuildBot-a
pip install buildbot-www buildbot-grid-view buildbot-console-view buildbot-waterfall-view
pip install python-dateutil #ะัะพะฑัะฐะถะตะฝะธะต ะดะฐั ะฒ web
#ะะฐ ััะพัะพะฝะต ั
ะพััะฐ ะบะพัะพััะน ะฝะตะฟะพััะตะดััะฒะตะฝะฝะพ ะพัััะตััะฒะปัะตั ัะฑะพัะบั ะธ ัะตััะธัะพะฒะฐะฝะธะต
pip install buildbot-worker #Worker
#ะะพะฟะพะปะฝะธัะตะปัะฝัะน ััะฝะบัะธะพะฝะฐะป
sudo pip install virtualenv #ะะธัััะฐะปัะฝะฐั ััะตะดะฐ
4. เดเดฆเตเดฏ เดเดเตเดเดเตเดเตพ
เดธเตเดทเตเดเดฟเดเตเดเดพเดจเตเดณเตเดณ เดธเดฎเดฏเด เดฌเดฟเตฝเดกเตเดฎเดพเดธเตเดฑเตเดฑเตผ. เด เดคเต เดจเดฎเตเดฎเตเดเต เดซเตเตพเดกเดฑเดฟเตฝ เดเดฏเดฟเดฐเดฟเดเตเดเตเด /home/habr/master.
mkdir master
buildbot create-master master # ะกะพะฑััะฒะตะฝะฝะพ ัะดะตัั ะธ ัะพะทะดะฐะตะผ
mkdir worker
buildbot-worker create-worker --umask=0o22 --keepalive=60 worker localhost:4000 yourWorkerName password
เดจเดฟเดเตเดเตพ เดเดเตเดฎเตเดชเตเตพ เดคเตเดดเดฟเดฒเดพเดณเดฟ, เดคเตเดเตผเดจเตเดจเต เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟเดฏเดพเดฏเดฟ เด เดคเต เดธเตเดทเตเดเดฟเดเตเดเตเด /เดตเตเดเต/เดนเดพเดฌเตเตผ/เดคเตเดดเดฟเดฒเดพเดณเดฟ เดชเตเดฐเตเดเดเตเดฑเตเดฑเดฟเดจเตเดฑเต เดชเตเดฐเตเดณเตเดณ เดซเตเตพเดกเตผ, เด เดคเดฟเตฝ เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต master.cfg. เดชเตเดฐเตเดเดเตเดฑเตเดฑเดฟเดจเตเดฑเต เดชเตเดฐเตเดณเตเดณ เดซเตเตพเดกเดฑเดฟเตฝ เด เดคเต เดเดฐเต เดกเดฏเดฑเดเตเดเดฑเดฟ เดธเตเดทเตเดเดฟเดเตเดเตเด เดชเดฃเดฟเดฏเตเด, เด เดคเต เดคเตเดเตผเดจเตเดจเตเด เดเตเดฏเตเดฏเตเด เดเตเดเตเดเต เดเดเตเดเต. เดตเตผเดเตเดเดฟเดเดเต เดกเดฏเดฑเดเตเดเดฑเดฟ เดคเตเดดเดฟเดฒเดพเดณเดฟ-เด เดคเต เดเดฐเต เดกเดฏเดฑเดเตเดเดฑเดฟ เดเดฏเดฟ เดฎเดพเดฑเตเด /home/habr/yourProject/build.
"เดเตเตพเดกเตป เดเต
เดเดชเตเดชเตเตพ เดเดพเตป เดฎเตเตป เดเดฃเตเดกเดฟเด เดเดดเตเดคเดฟเดฏเดคเต: เดเดฐเต เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดฏเดเดฎเดพเดจเดจเต เดฎเตเดคเตฝ เดเดตเดถเตเดฏเดชเตเดชเตเดเตเด เดคเตเดดเดฟเดฒเดพเดณเดฟ- เดเตเดเดพเดคเต เด เดกเดฏเดฑเดเตโเดเดฑเดฟเดฏเดฟเตฝ เดตเดฟเดฆเตเดฐเดฎเดพเดฏเดฟ เดเตเดฏเตโเดคเดคเต เดเดเตโเดธเดฟเดเตเดฏเตเดเตเดเต เดเตเดฏเตเดฏเดฟเดฒเตเดฒ, เดเดพเดฐเดฃเด เดธเตโเดเตเดฐเดฟเดชเตเดฑเตเดฑเดฟเดจเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเดพเดจเตเดณเตเดณ เด
เดจเตเดฎเดคเดฟเดฏเดฟเดฒเตเดฒ. เดธเดพเดนเดเดฐเตเดฏเด เดถเดฐเดฟเดฏเดพเดเตเดเดพเตป, เดจเดฟเดเตเดเตพเดเตเดเต เดเดฐเต เดเต เดเดตเดถเตเดฏเดฎเดพเดฃเต
เดฌเดฟเตฝเดกเตเดฎเดพเดธเตเดฑเตเดฑเตผ ะธ เดคเตเดดเดฟเดฒเดพเดณเดฟ เดชเดฐเดธเตเดชเดฐเด เดฌเดจเตเดงเด เดธเตเดฅเดพเดชเดฟเดเตเดเตเด. เด เดคเต เดคเดเดฐเตเดเดฏเตเด เดธเดเดญเดตเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต เดคเตเดดเดฟเดฒเดพเดณเดฟ เดเดฐเต เดชเตเดฐเดคเดฟเดเดฐเดฃเดคเตเดคเดฟเดจเดพเดฏเดฟ เดเตเดฑเดเตเดเต เดธเดฎเดฏเด เดเดพเดคเตเดคเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต เดฌเดฟเตฝเดกเตเดฎเดพเดธเตเดฑเตเดฑเตผ-เด. เดชเตเดฐเดคเดฟเดเดฐเดฃเดฎเดฟเดฒเตเดฒเตเดเตเดเดฟเตฝ, เดเดฃเดเตเดทเตป เดชเตเดจเดฐเดพเดฐเดเดญเดฟเดเตเดเตเด. เดคเดพเดเตเดเตเตฝ --keepalive=60 เด เดคเดฟเดจเต เดถเตเดทเดฎเตเดณเตเดณ เดธเดฎเดฏเด เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต เดเดฃเดเตเดเต เดฑเตเดฌเตเดเตเดเต เดเตเดฏเตเดฏเตเดจเตเดจเต.
5. เดเตเตบเดซเดฟเดเดฑเตเดทเตป. เดเดเตเดเด เดเดเตเดเดฎเดพเดฏเตเดณเตเดณ เดชเดพเดเดเดเตเดเตเดฑเดฟเดชเตเดชเต
เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดฌเดฟเตฝเดกเตเดฎเดพเดธเตเดฑเตเดฑเตผ เดเดเตเดเตพ เดเดฎเดพเตปเดกเต เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเต เดเตเดฏเตเดค เดฎเตเดทเตเดจเตเดฑเต เดตเดถเดคเตเดคเต เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเตเดจเตเดจเต เดธเตเดทเตเดเดฟเดเตเดเตเด-เดฎเดพเดธเตเดฑเตเดฑเตผ. เดเดเตเดเดณเตเดเต เดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดเดคเตเดฐเต เดกเดฏเดฑเดเตเดเดฑเดฟเดฏเดพเดฃเต /home/habr/master. เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดซเดฏเตฝ master.cfg เดเดคเตเดตเดฐเต เดจเดฟเดฒเดตเดฟเดฒเดฟเดฒเตเดฒ, เดชเดเตเดทเต เดเดฎเดพเตปเดกเต เดเดคเดฟเดจเดเด เดคเดจเตเดจเต เดซเดฏเตฝ เดธเตเดทเตเดเดฟเดเตเดเต master.cmg.เดธเดพเดฎเตเดชเดฟเตพ. เดจเดฟเดเตเดเตพ เด เดคเดฟเดจเตเดฑเต เดชเตเดฐเต เดฎเดพเดฑเตเดฑเตเดฃเตเดเดคเตเดฃเตเดเต master.cfg.เดธเดพเดฎเตเดชเดฟเตพ ะฒ master.cfg
mv master.cfg.sample master.cfg
เดจเดฎเตเดเตเดเต เดเดคเต เดคเตเดฑเดเตเดเดพเด master.cfg. เดเตเดเดพเดคเต เด เดคเดฟเตฝ เดเดจเตเดคเดพเดฃเต เด เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเดคเตเดจเตเดจเต เดจเตเดเตเดเดพเด. เด เดคเดฟเดจเตเดถเตเดทเด, เดจเดฎเตเดฎเตเดเต เดธเตเดตเดจเตเดคเด เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดซเดฏเตฝ เดเดฃเตเดเดพเดเตเดเดพเตป เดถเตเดฐเดฎเดฟเดเตเดเดพเด.
master.cfg
c['change_source'] = []
c['change_source'].append(changes.GitPoller(
'git://github.com/buildbot/hello-world.git',
workdir='gitpoller-workdir', branch='master',
pollInterval=300))
c['schedulers'] = []
c['schedulers'].append(schedulers.SingleBranchScheduler(
name="all",
change_filter=util.ChangeFilter(branch='master'),
treeStableTimer=None,
builderNames=["runtests"]))
c['schedulers'].append(schedulers.ForceScheduler(
name="force",
builderNames=["runtests"]))
factory = util.BuildFactory()
factory.addStep(steps.Git(repourl='git://github.com/buildbot/hello-world.git', mode='incremental'))
factory.addStep(steps.ShellCommand(command=["trial", "hello"],
env={"PYTHONPATH": "."}))
c['builders'] = []
c['builders'].append(
util.BuilderConfig(name="runtests",
workernames=["example-worker"],
factory=factory))
c['services'] = []
c['title'] = "Hello World CI"
c['titleURL'] = "https://buildbot.github.io/hello-world/"
c['buildbotURL'] = "http://localhost:8010/"
c['www'] = dict(port=8010,
plugins=dict(waterfall_view={}, console_view={}, grid_view={}))
c['db'] = {
'db_url' : "sqlite:///state.sqlite",
}
5.1 เดฌเดฟเตฝเดกเตเดฎเดพเดธเตเดฑเตเดฑเตผ เดเตเตบเดซเดฟเดเดฑเตเดทเตป
c = BuildmasterConfig = {}
เดฌเดฟเตฝเดกเตเดฎเดพเดธเตเดฑเตเดฑเตผ เดเตเตบเดซเดฟเดเดฑเตเดทเตป - เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดซเดฏเดฒเดฟเดจเตเดฑเต เด
เดเดฟเดธเตเดฅเดพเดจ เดจเดฟเดเดฃเตเดเต. เดเดคเต เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดซเดฏเดฒเดฟเตฝ เดเตพเดชเตเดชเตเดเตเดคเตเดคเดฟเดฏเดฟเดฐเดฟเดเตเดเดฃเด. เดเดชเดฏเตเดเดคเตเดคเดฟเดจเตเดฑเต เดเดณเตเดชเตเดชเดคเตเดคเดฟเดจเดพเดฏเดฟ, เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดเตเดกเดฟเตฝ เดเดฐเต เด
เดชเดฐเดจเดพเดฎเด เด
เดตเดคเดฐเดฟเดชเตเดชเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต "เดธเดฟ". เดถเตเตผเดทเดเดเตเดเตพ
5.2 เดคเตเดดเดฟเดฒเดพเดณเดฟเดเตพ
c['workers'] = [worker.Worker("example-worker", "pass")]
เด เดธเดฎเดฏเด เดเดเตเดเตพ เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเต เดฌเดฟเตฝเดกเตเดฎเดพเดธเตเดฑเตเดฑเตผ-y เดฒเดฟเดธเตเดฑเตเดฑเต เดคเตเดดเดฟเดฒเดพเดณเดฟ-เดเดธเต. เดเดพเตป เดคเดจเตเดจเต เดคเตเดดเดฟเดฒเดพเดณเดฟ เดเดเตเดเตพ เดธเตเดทเตเดเดฟเดเตเดเต
5.3 change_source
c['change_source'] = []
c['change_source'].append(changes.GitPoller(
'git://github.com/buildbot/hello-world.git',
workdir='gitpoller-workdir', branch='master',
pollInterval=300))
เดเต เดตเดดเดฟ เดฎเดพเดฑเตเดฑเด_เดเดฑเดตเดฟเดเด เดจเดฟเดเดฃเตเดเต c เดชเตเดฐเตเดเดเตโเดฑเตเดฑเดฟเดจเตเดฑเต เดธเตเดดเตโเดธเต เดเตเดกเต เดเดชเดฏเตเดเดฟเดเตเดเต เดฑเดฟเดชเตเดชเตเดธเดฟเดฑเตเดฑเดฑเดฟเดฏเต เดชเตเตพ เดเตเดฏเตเดฏเตเดจเตเดจ เดเดฐเต เดเดฌเตโเดเดเตเดฑเตเดฑเต เดเดเดพเตป เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจ เดฒเดฟเดธเตเดฑเตเดฑเดฟเดฒเตเดเตเดเต เดจเดฎเตเดเตเดเต เดเดเตโเดธเดธเต เดฒเดญเดฟเดเตเดเตเด. เดเดฆเดพเดนเดฐเดฃเด เดเดฟเดฒ เดเดเดตเตเดณเดเดณเดฟเตฝ เดชเตเตพ เดเตเดฏเตเดฏเตเดจเตเดจ เดเดฐเต Git เดฑเดฟเดชเตเดชเตเดธเดฟเดฑเตเดฑเดฑเดฟ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต.
เดเดฆเตเดฏเดคเตเดคเต เดตเดพเดฆเด เดจเดฟเดเตเดเดณเตเดเต เดถเตเดเดฐเดคเตเดคเดฟเดฒเตเดเตเดเตเดณเตเดณ เดชเดพเดคเดฏเดพเดฃเต.
เดตเตผเดเตเดเตเดกเดฟเตผ เดตเดถเดคเตเดคเตเดณเตเดณ เดซเตเตพเดกเดฑเดฟเดฒเตเดเตเดเตเดณเตเดณ เดชเดพเดคเดฏเต เดชเตเดฐเดคเดฟเดจเดฟเดงเตเดเดฐเดฟเดเตเดเตเดจเตเดจเต เดคเตเดดเดฟเดฒเดพเดณเดฟ-เดชเดพเดคเดฏเตเดฎเดพเดฏเตเดณเตเดณ เดฌเดจเตเดงเต /home/habr/worker/yourProject/build เดฑเดฟเดชเตเดชเตเดธเดฟเดฑเตเดฑเดฑเดฟเดฏเตเดเต เดชเตเดฐเดพเดฆเตเดถเดฟเด เดชเดคเดฟเดชเตเดชเต git เดธเดเดญเดฐเดฟเดเตเดเตเด.
เดถเดพเด เดชเดฟเดจเตเดคเตเดเดฐเตเดฃเตเด เดถเตเดเดฐเดคเตเดคเดฟเตฝ เดเดฐเต เดชเตเดฐเดคเตเดฏเตเด เดถเดพเด เด เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต.
เดคเดฟเดฐเดเตเดเตเดเตเดชเตเดชเต เดเดเดตเตเดณ เด เดคเดฟเดจเต เดถเตเดทเดฎเตเดณเตเดณ เดธเตเดเตเดเตปเดกเตเดเดณเตเดเต เดเดฃเตเดฃเด เด เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต เดฌเดฟเตฝเดกเตเดฎเดพเดธเตเดฑเตเดฑเตผ เดฎเดพเดฑเตเดฑเดเตเดเตพเดเตเดเดพเดฏเดฟ เดถเตเดเดฐเดคเตเดคเดฟเตฝ เดตเตเดเตเดเตเดเตเดชเตเดชเต เดจเดเดคเตเดคเตเด.
เดเดฐเต เดชเตเดฐเตเดเดเตเดฑเตเดฑเดฟเดจเตเดฑเต เดถเตเดเดฐเดคเตเดคเดฟเตฝ เดฎเดพเดฑเตเดฑเดเตเดเตพ เดเตเดฐเดพเดเตเดเตเดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต เดจเดฟเดฐเดตเดงเดฟ เดฎเดพเตผเดเดเตเดเดณเตเดฃเตเดเต.
เดเดฑเตเดฑเดตเตเด เดฒเดณเดฟเดคเดฎเดพเดฏ เดฐเตเดคเดฟเดฏเดพเดฃเต เดตเตเดเตเดเตเดเตเดชเตเดชเต, เด
เดคเต เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเต เดฌเดฟเตฝเดกเตเดฎเดพเดธเตเดฑเตเดฑเตผ เดเดเดฏเตเดเตเดเดฟเดเต เดฑเดฟเดชเตเดชเตเดธเดฟเดฑเตเดฑเดฑเดฟ เดเดชเดฏเตเดเดฟเดเตเดเต เดธเตเตผเดตเดฑเดฟเดจเต เดตเตเดเตเดเตเดเตเดชเตเดชเต เดจเดเดคเตเดคเตเดจเตเดจเต. เดเดเตเดเดฟเตฝ เดธเดฎเตผเดชเตเดชเดฟเดเตเดเตเด เดฑเดฟเดชเตเดชเตเดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเดฒเต เดฎเดพเดฑเตเดฑเดเตเดเตพ เดชเตเดฐเดคเดฟเดซเดฒเดฟเดชเตเดชเดฟเดเตเดเต เดฌเดฟเตฝเดกเตเดฎเดพเดธเตเดฑเตเดฑเตผ เดเตเดฑเดเตเดเต เดเดพเดฒเดคเดพเดฎเดธเดคเตเดคเตเดเต เดเดฐเต เดเดจเตเดคเดฐเดฟเด เดตเดธเตเดคเต เดธเตเดทเตเดเดฟเดเตเดเตเด เดฎเดพเดฑเตเดฑเด เดเตเดเดพเดคเต เดเดตเดจเตเดฑเต เดนเดพเตปเดกเตโเดฒเตผเดเตเดเต เด
เดฏเดฏเตโเดเตเดเตเด เดทเตเดกเตเดฏเตเดณเตผ, เดเดคเต เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเด เดชเดฐเตเดเตเดทเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดฎเตเดณเตเดณ เดจเดเดชเดเดฟเดเตพ เดเดฐเดเดญเดฟเดเตเดเตเด เดคเตเดดเดฟเดฒเดพเดณเดฟ-เด. เด เดเดเตเดเดเตเดเดณเดฟเตฝ เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเตเด เด
เดชเตเดกเตเดฑเตเดฑเต เดธเดเดญเดฐเดฃเดฟเดฏเดพเดฃเต. เดเตเดคเตเดฏเดฎเดพเดฏเดฟ เดเดฃเดพเดฃเต เดคเตเดดเดฟเดฒเดพเดณเดฟเดเดคเต เดฑเดฟเดชเตเดชเตเดธเดฟเดฑเตเดฑเดฑเดฟเดฏเตเดเต เดเดฐเต เดชเตเดฐเดพเดฆเตเดถเดฟเด เดชเดเตผเดชเตเดชเต เดธเตเดทเตเดเดฟเดเตเดเตเด. เด เดชเตเดฐเดเตเดฐเดฟเดฏเดฏเตเดเต เดตเดฟเดถเดฆเดพเดเดถเดเตเดเตพ เด
เดเตเดคเตเดค เดฐเดฃเตเดเต เดตเดฟเดญเดพเดเดเตเดเดณเดฟเตฝ เดเตเดตเดเต เดเตพเดชเตเดชเตเดเตเดคเตเดคเตเด. (
เดเดฐเต เดฑเดฟเดชเตเดชเตเดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเดฒเต เดฎเดพเดฑเตเดฑเดเตเดเตพ เดเตเดฐเดพเดเตเดเตเดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด เดคเดฟเดฒเตเด เดเดเดญเตเดฐเดฎเดพเดฏ เดฎเดพเตผเดเตเดเด, เด เดคเต เดนเตเดธเตเดฑเตเดฑเตเดเตเดฏเตเดฏเตเดจเตเดจ เดธเตเตผเดตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเตเดฐเดฟเดเตเดเต เดธเดจเตเดฆเตเดถเดเตเดเตพ เด เดฏเดฏเตเดเตเดเตเด เดเดจเตเดจเดคเดพเดฃเต. เดฌเดฟเตฝเดกเตเดฎเดพเดธเตเดฑเตเดฑเตผ- เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดธเตเดดเตเดธเต เดเตเดกเตเดเตพ เดฎเดพเดฑเตเดฑเตเดจเตเดจเดคเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเต. เด เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดกเดตเดฒเดชเตเดชเตผ เดเดฃเตเดเดพเดเตเดเดฟเดฏ เดเดเตป เดธเดฎเตผเดชเตเดชเดฟเดเตเดเตเด, เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดฑเดฟเดชเตเดชเตเดธเดฟเดฑเตเดฑเดฑเดฟ เดเดณเตเดณ เดธเตเตผเดตเตผ เดเดฐเต เดธเดจเตเดฆเตเดถเด เด เดฏเดฏเตเดเตเดเตเด เดฌเดฟเตฝเดกเตเดฎเดพเดธเตเดฑเตเดฑเตผ-เดตเต. เดเดฐเต เดตเดธเตเดคเต เดธเตเดทเตเดเดฟเดเตเดเตเดเตเดฃเตเดเต เด เดตเตป เด เดคเดฟเดจเต เดคเดเดธเตเดธเดชเตเดชเตเดเตเดคเตเดคเตเด PBCchangeSource. เด เดเตเดคเตเดคเดคเดพเดฏเดฟ, เด เดเดฌเตเดเดเตเดฑเตเดฑเต เดเดคเดฟเดฒเตเดเตเดเต เดเตเดฎเดพเดฑเตเด เดทเตเดกเตเดฏเตเดณเตผ, เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเด เด เดคเต เดชเดฐเตเดเตเดทเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดฎเตเดณเตเดณ เดจเดเดชเดเดฟเดเตพ เดธเดเตเดตเดฎเดพเดเตเดเตเดจเตเดจเต. เด เดฐเตเดคเดฟเดฏเตเดเต เดเดฐเต เดชเตเดฐเดงเดพเดจ เดญเดพเดเด เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเต เดเตเดพเดณเตเดคเตเดคเต-เดฑเดฟเดชเตเดชเตเดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเดฒเต เดธเตเตผเดตเตผ เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเตเดเตพ. เดคเดฟเดฐเดเตเดเดฅเดฏเดฟเตฝ เดเตเดพเดณเตเดคเตเดคเต-a, เดเดชเตเดชเตเตพ เดชเตเดฐเตเดธเดธเตเดธเดฟเดเดเต เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเตพเดเตเดเต เดเดคเตเดคเดฐเดตเดพเดฆเดฟ เดธเดฎเตผเดชเตเดชเดฟเดเตเดเตเด-เด, เดจเดฟเดเตเดเตพ เดฏเตเดเตเดเดฟเดฒเดฟเดฑเตเดฑเดฟเดฏเต เดตเดฟเดณเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต เด เดฏเดเตเดเตเด เดเตเดเดพเดคเต เดจเตเดฑเตเดฑเตโเดตเตผเดเตเดเต เดตเดฟเดฒเดพเดธเด เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเตเด เดฌเดฟเตฝเดกเตเดฎเดพเดธเตเดฑเตเดฑเตผ-เด. เดเตเตพเดเตเดเตเดจเตเดจ เดจเตเดฑเตเดฑเตโเดตเตผเดเตเดเต เดชเตเตผเดเตเดเตเด เดจเดฟเดเตเดเตพ เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต PBCchangeSource. PBCchangeSource, เดตเดดเดฟ, เดญเดพเดเดฎเดพเดฃเต เดฌเดฟเตฝเดกเตเดฎเดพเดธเตเดฑเตเดฑเตผ-เด. เด เดฐเตเดคเดฟเดเตเดเต เด เดจเตเดฎเดคเดฟ เดเดตเดถเตเดฏเดฎเดพเดฃเต เด เดกเตเดฎเดฟเตป-เด เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดฑเดฟเดชเตเดชเตเดธเดฟเดฑเตเดฑเดฑเดฟ เดธเตเดฅเดฟเดคเดฟ เดเตเดฏเตเดฏเตเดจเตเดจ เดธเตเตผเดตเดฑเดฟเตฝ. เดจเดฟเดเตเดเตพ เดเดฆเตเดฏเด เดฑเดฟเดชเตเดชเตเดธเดฟเดฑเตเดฑเดฑเดฟเดฏเตเดเต เดเดฐเต เดฌเดพเดเตเดเดชเตเดชเต เดเดฃเตเดเดพเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต.
5.4 เดทเตเดกเตเดฏเตเดณเตผเดฎเดพเตผ
c['schedulers'] = []
c['schedulers'].append(schedulers.SingleBranchScheduler(
name="all",
change_filter=util.ChangeFilter(branch='master'),
treeStableTimer=None,
builderNames=["runtests"]))
c['schedulers'].append(schedulers.ForceScheduler(
name="force",
builderNames=["runtests"]))
เดทเตเดกเตเดฏเตเดณเตผเดฎเดพเตผ - เดเดคเต เดชเตเดฐเตเดเดเตเดฑเตเดฑเดฟเดจเตเดฑเต เด
เดธเดเดฌเตเดฒเดฟเดฏเตเดเตเดฏเตเด เดเตเดธเตเดฑเตเดฑเดฟเดเดเดฟเดจเตเดฑเตเดฏเตเด เดฎเตเดดเตเดตเตป เดถเตเดเดเดฒเดฏเตเด เดเดฐเดเดญเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดเตเดฐเดฟเดเดฑเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดเดเดเดฎเดพเดฃเต.
เดฐเตเดเดชเตเดชเตเดเตเดคเตเดคเดฟเดฏ เดฎเดพเดฑเตเดฑเดเตเดเตพ เดฎเดพเดฑเตเดฑเด_เดเดฑเดตเดฟเดเด, เดเตเดฒเดฟเดฏเตเดเต เดชเตเดฐเดเตเดฐเดฟเดฏเดฏเดฟเตฝ เดฐเตเดชเดพเดจเตเดคเดฐเดชเตเดชเตเดเตเดเต เดฌเดฟเตฝเดกเตเดฌเตเดเตเดเต-เดเดฌเตเดเดเตเดฑเตเดฑเต เดเตเดฏเตเดฏเดพเตป เดฎเดพเดฑเตเดฑเด เดเดชเตเดชเตเตพ เดเดฐเตเดจเตเดจเตเด เดทเตเดกเตเดฏเตเดณเตผ เด
เดตเดฏเต เด
เดเดฟเดธเตเดฅเดพเดจเดฎเดพเดเตเดเดฟ, เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดจเดฟเตผเดฎเตเดฎเดพเดฃ เดชเตเดฐเดเตเดฐเดฟเดฏ เดเดฐเดเดญเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด
เดญเตเดฏเตผเดคเตเดฅเดจเดเตพ เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเตเดจเตเดจเต. เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เด เด
เดญเตเดฏเตผเดคเตเดฅเดจเดเตพ เดเตเดฏเตเดตเดฟเดฒเตเดเตเดเต เดเดชเตเดชเตเตพ เดเตเดฎเดพเดฑเตเดฑเด เดเตเดฏเตเดฏเดชเตเดชเตเดเตเดฎเตเดจเตเดจเตเด เดเดคเต เดจเดฟเตผเดฃเตเดฃเดฏเดฟเดเตเดเตเดจเตเดจเต. เดเดฐเต เดตเดธเตเดคเต
เดเดชเตเดชเตเดดเดคเตเดคเต เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ เดจเดฎเตเดฎเตพ เด
เดคเต เดเดพเดฃเตเดจเตเดจเต เดทเตเดกเตเดฏเตเดณเตผเดฎเดพเตผ 2 เดเดทเดฃเดเตเดเตพ เดธเตเดทเตเดเดฟเดเตเดเต. เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เดเดฐเตเดจเตเดจเดฟเดจเตเด เด
เดคเดฟเดจเตเดฑเตเดคเดพเดฏ เดคเดฐเดฎเตเดฃเตเดเต.
เดธเดฟเดเดเดฟเตพเดฌเตเดฐเดพเดเตเดเต เดทเตเดกเตเดฏเตเดณเตผ - เดทเตเดกเตเดฏเตเดณเดฟเดฒเต เดเดฑเตเดฑเดตเตเด เดเดจเดชเตเดฐเดฟเดฏเดฎเดพเดฏ เดเตเดฒเดพเดธเตเดเดณเดฟเตฝ เดเดจเตเดจเต. เดเดคเต เดเดฐเต เดถเดพเด เดจเดฟเดฐเตเดเตเดทเดฟเดเตเดเตเดเดฏเตเด เด เดคเดฟเตฝ เดฐเตเดเดชเตเดชเตเดเตเดคเตเดคเดชเตเดชเตเดเตเด เดฎเดพเดฑเตเดฑเดคเตเดคเดพเตฝ เดเตเดฐเดฟเดเตผ เดเตเดฏเตเดฏเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต. เดฎเดพเดฑเตเดฑเดเตเดเตพ เดเดพเดฃเตเดฎเตเดชเตเตพ, เดฌเดฟเตฝเดกเต เด เดญเตเดฏเตผเดคเตเดฅเดจ เด เดฏเดฏเตโเดเตเดเตเดจเตเดจเดคเต เด เดตเดจเต เดเดพเดฒเดคเดพเดฎเดธเด เดตเดฐเตเดคเตเดคเดพเด (เดชเตเดฐเดคเตเดฏเตเด เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเดฟเตฝ เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเดฟเดฏ เดเดพเดฒเดฏเดณเดตเดฟเดฒเตเดเตเดเต เดฎเดพเดฑเตเดฑเดฟเดตเดฏเตเดเตเดเตเด เดเตเดฐเตเดธเตเดฑเตเดฑเดฌเดฟเตพ เดเตเดฎเตผ) AT เดชเตเดฐเต เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจ เดทเตเดกเตเดฏเตเดณเดฟเดจเตเดฑเต เดชเตเดฐเต เดธเดเตเดเดฎเดพเดเตเดเตเดจเตเดจเต เดฌเดฟเตฝเดกเตเดฌเตเดเตเดเต-เดตเตเดฌเต เดเดจเตเดฑเตผเดซเตเดธเต. IN เดฎเดพเดฑเตเดฑเตเด เดซเดฟเตฝเดฑเตเดฑเตผ เดเดฐเต เดซเดฟเตฝเดเตเดเตผ เดธเดเตเดเตเดเดฐเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต, เด เดคเต เดชเดพเดธเดพเดฏเดคเดฟเดจเต เดถเตเดทเด เดฌเตเดฐเดพเดเตเดเดฟเดฒเต เดฎเดพเดฑเตเดฑเดเตเดเตพ เดจเดฟเตผเดฎเตเดฎเดพเดฃเดคเตเดคเดฟเดจเดพเดฏเดฟ เดเดฐเต เด เดญเตเดฏเตผเดคเตเดฅเดจ เด เดฏเดฏเตเดเตเดเดพเตป เดทเตเดกเตเดฏเตเตพ เดเดตเดถเตเดฏเดชเตเดชเตเดเตเดจเตเดจเต. IN เดฌเดฟเตฝเดกเตผ เดชเตเดฐเตเดเตพ เดชเตเดฐเต เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต เดฌเดฟเตฝเดกเตผ-a, เด เดคเต เดเดเตเดเตพ เดเตเดฑเดเตเดเต เดเดดเดฟเดเตเดเต เดธเดเตเดเดฎเดพเดเตเดเตเด. เดเดเตเดเดณเตเดเต เดเตเดธเดฟเดฒเต เดชเตเดฐเต เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดจเดพเดฎเดคเตเดคเดฟเดจเต เดธเดฎเดพเดจเดฎเดพเดฏเดฟเดฐเดฟเดเตเดเตเด: เดจเดฟเดเตเดเดณเตเดเต เดชเดฆเตเดงเดคเดฟ.
เดซเตเดดเตเดธเต เดทเตเดกเตเดฏเตเดณเตผ เดตเดณเดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดเดฐเต เดเดพเดฐเตเดฏเด. เดเดฐเต เดฎเตเดธเต เดเตเดฒเดฟเดเตเดเดฟเดฒเตเดเตเดฏเดพเดฃเต เดเดคเตเดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เดทเตเดกเตเดฏเตเตพ เดเตเดฐเดฟเดเตผ เดเตเดฏเตเดฏเตเดจเตเดจเดคเต เดฌเดฟเตฝเดกเตเดฌเตเดเตเดเต-เดตเตเดฌเต เดเดจเตเดฑเตผเดซเตเดธเต. เดชเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเตพเดเตเดเตเดณเตเดณ เด เดคเต เดธเดพเดฐเดพเดเดถเด เดเดฃเตเดเต เดธเดฟเดเดเดฟเตพเดฌเตเดฐเดพเดเตเดเต เดทเตเดกเตเดฏเตเดณเตผ.
PS เดจเดฎเตเดชเตผ 3. เดเดฐเตเดชเดเตเดทเต เด
เดคเต เดเดชเดฏเตเดเดชเตเดฐเดฆเดฎเดพเดเตเด
เดเดจเตเดเดพเดฒเดฟเดเด เดเดฐเต เดจเดฟเดถเตเดเดฟเดค เดธเดฎเดฏ-เดจเดฟเดถเตเดเดฟเดค เดเดตเตเดคเตเดคเดฟเดฏเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดทเตเดกเตเดฏเตเตพ เดเดฃเต. เดเตเตพ เดเดคเตเดชเตเดฒเต เดคเตเดจเตเดจเตเดจเตเดจเต
from buildbot.plugins import schedulers
nightly = schedulers.Periodic(name="daily",
builderNames=["full-solaris"],
periodicBuildTimer=24*60*60)
c['schedulers'] = [nightly]
5.5 เดจเดฟเตผเดฎเตเดฎเดพเดฃ เดซเดพเดเตเดเดฑเดฟ
factory = util.BuildFactory()
factory.addStep(steps.Git(repourl='git://github.com/buildbot/hello-world.git', mode='incremental'))
factory.addStep(steps.ShellCommand(command=["trial", "hello"],
env={"PYTHONPATH": "."}))
เดชเตเดฐเดฟเดฏเตเดกเดฟเดเต เดฌเดฟเตฝเดกเต เดเตเดฎเตผ เดธเตเดเตเดเตปเดกเดฟเตฝ เด เดเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดจเตเดฑเต เดธเดฎเดฏเด เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเตเดจเตเดจเต.
เดฌเดฟเตฝเดกเตเดซเดพเดเตเดเดฑเดฟ เดเดฐเต เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเด เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเต เดชเดฃเดฟเดฏเตเด, เด
เดชเตเดชเตเตพ เดเดคเต เดฌเดฟเตฝเดกเตผ เดฒเตเดเตเดเต เด
เดฏเดฏเตเดเตเดเตเดจเตเดจเต เดคเตเดดเดฟเดฒเดพเดณเดฟ. เดฆเดฟ เดฌเดฟเตฝเดกเตเดซเดพเดเตเดเดฑเดฟ เดชเดฟเดจเตเดคเตเดเดฐเตเดฃเตเด เดเดเตเดเดเตเดเดณเต เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเต เดคเตเดดเดฟเดฒเดพเดณเดฟ-เดตเต. เดฐเตเดคเดฟ เดตเดฟเดณเดฟเดเตเดเต เดเดเตเดเดเตเดเตพ เดเตเตผเดเตเดเตเดจเตเดจเต addStep
เด เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ เดเตเตผเดคเตเดค เดเดฆเตเดฏ เดเดเตเดเด เดเดคเดพเดฃเต git clean -d -f -f โx, เดชเดฟเดจเตเดจเต git เดเตเดเตเดเต out เดเตเดเต. เด เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเตพ เดชเดฐเดพเดฎเตเดฑเตเดฑเดฑเดฟเตฝ เดเตพเดชเตเดชเตเดเตเดคเตเดคเดฟเดฏเดฟเดเตเดเตเดฃเตเดเต เดฐเตเดคเดฟ, เดเดคเต เดตเตเดฏเดเตเดคเดฎเดพเดฏเดฟ เดชเตเดฐเดธเตเดคเดพเดตเดฟเดเตเดเดฟเดเตเดเดฟเดฒเตเดฒเตเดเตเดเดฟเดฒเตเด เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟ เดฎเตเดฒเตเดฏเดคเตเดคเต เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเต เดชเตเดคเดฟเดฏเดคเต. เดชเดฐเดพเดฎเตเดฑเตเดฑเตผ เดฎเตเดกเต='เดเตปเดเตเดฐเดฟเดฎเตเดจเตเดฑเตฝ' เดซเดฏเดฒเตเดเตพ เดกเดฏเดฑเดเตเดเดฑเดฟเดฏเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณเดคเดพเดฃเตเดจเตเดจเต เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเต chechout, เดฑเดฟเดชเตเดชเตเดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเดทเตโเดเดชเตเดชเตเดเตเดฎเตเดชเตเตพ, เดคเตเดเตเดเตเดเตเดเดพเดคเต เดคเตเดเดฐเตเด.
เดฐเดฃเตเดเดพเดฎเดคเตเดคเต เดเตเตผเดคเตเดค เดเดเตเดเด เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดตเดฟเดณเดฟเดเตเดเตเด เดเดจเตเดจเดคเดพเดฃเต เดตเดฟเดเดพเดฐเดฃ เดชเดฐเดพเดฎเตเดฑเตเดฑเตผ เดเดชเดฏเตเดเดฟเดเตเดเต เดนเดฒเตเดพ เดตเดถเดคเตเดคเต เดคเตเดดเดฟเดฒเดพเดณเดฟ-เด เดกเดฏเดฑเดเตเดเดฑเดฟเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต /home/habr/worker/yourProject/build เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ เดตเตเดฐเดฟเดฏเดฌเดฟเดณเดพเดฏ PATHONPATH=... เด เดเตเดเดจเต, เดจเดฟเดเตเดเตพเดเตเดเต เดจเดฟเดเตเดเดณเตเดเต เดธเตเดตเดจเตเดคเด เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเตเดเตพ เดเดดเตเดคเดฟ เดธเตเดกเดฟเตฝ เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเต เดเตเดฏเตเดฏเดพเด เดคเตเดดเดฟเดฒเดพเดณเดฟ- เดเดฐเต เดเดเตเดเดตเตเด util.ShellCommand. เด เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเตเดเตพ เดจเตเดฐเดฟเดเตเดเต เดฑเดฟเดชเตเดชเตเดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเตฝ เดธเตเดฅเดพเดชเดฟเดเตเดเดพเดตเตเดจเตเดจเดคเดพเดฃเต. เด เดชเตเดชเตเตพ at chechout-เด เด เดตเตผ เด เดคเดฟเตฝ เดตเตเดดเตเด /home/habr/worker/yourProject/build. เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เดฐเดฃเตเดเต "เดชเดเตเดทเต" เดเดฃเตเดเต:
- เดคเตเดดเดฟเดฒเดพเดณเดฟ เดเดฐเต เดเต เดเดชเดฏเตเดเดฟเดเตเดเต เดธเตเดทเตเดเดฟเดเตเดเดฃเด
--เดเดฎเดพเดธเตเดเต เด เดคเตเดตเดดเดฟ เด เดคเต เดจเดฟเตผเดตเตเดตเดนเดฃ เด เดตเดเดพเดถเดเตเดเตพ เดคเดเดฏเดฟเดฒเตเดฒ เดเตเดเตเดเต เดเดเตเดเต-เด. - เดเตเดฏเตเดคเดคเต git pushเด เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเตเดเดณเดฟเตฝ -e เดจเดฟเดเตเดเตพ เดชเตเดฐเตเดชเตเดชเตผเดเตเดเดฟ เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเดฌเดฟเตพเด เดเตเดเดจเต เดชเดฟเดจเตเดจเตเดเต chechoutGit เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเต เดเตเดฏเตเดฏเดพเดจเตเดณเตเดณ เด เดตเดเดพเดถเด -e เดจเดทเตโเดเดชเตเดชเตเดเตเดเดฟเดฒเตเดฒ.
5.6 เดจเดฟเตผเดฎเตเดฎเดพเดคเดพเดเตเดเตพ
c['builders'] = []
c['builders'].append(util.BuilderConfig(name="runtests",
workernames=["example-worker"],
factory=factory))
เดเดจเตเดคเดพเดฃเตเดจเตเดจเดคเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเต เดจเดฟเดฐเตเดฎเตเดฎเดพเดคเดพเดตเต เดชเดฑเดเตเดเดฟเดฐเตเดจเตเดจเต
c['builders'] = []
c['builders'].append(util.BuilderConfig(name="yourProject",
workernames=["yourWorkerName"],
factory=factory))
เดเดชเตเดชเตเตพ เดเดพเตป เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเดณเตเดเตเดเตเดฑเดฟเดเตเดเต เดจเดฟเดเตเดเดณเตเดเต เดชเดฑเดฏเตเด เดฌเดฟเตฝเดกเตผ เดเตเตบเดซเดฟเดเดฑเตเดทเตป.
เดชเตเดฐเต เดชเตเดฐเต เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเตเดจเตเดจเต เดฌเดฟเตฝเดกเตผ-เด. เดเดตเดฟเดเต เดเดเตเดเตพ เด เดคเดฟเดจเต เดชเตเดฐเดฟเดเตเดเต เดจเดฟเดเตเดเดณเตเดเต เดชเดฆเตเดงเดคเดฟ... เดเดคเดฟเดจเตผเดคเตเดฅเด เดเตบ เดเดจเตเดจเดพเดฃเต เดคเตเดดเดฟเดฒเดพเดณเดฟ- เด เดชเดพเดค เดคเดจเตเดจเต เดธเตเดทเตเดเดฟเดเตเดเดชเตเดชเตเดเตเด /home/habr/worker/yourProject/build. เดทเตเดกเตเดฏเตเดณเตผ เดเดคเดฟเดจเดพเดฏเดฟ เดคเดฟเดฐเดฏเตเดจเตเดจเต เดฌเดฟเตฝเดกเตผ เด เดชเตเดฐเดฟเตฝ เดฎเดพเดคเตเดฐเด.
เดคเตเดดเดฟเดฒเดพเดณเดฟเดเดณเตเดเต เดชเตเดฐเตเดเตพ เดทเตเดฑเตเดฑเต เด เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต เดคเตเดดเดฟเดฒเดพเดณเดฟ-เดเดธเต. เด เดคเดฟเตฝ เดเดฐเตเดจเตเดจเตเด เดเตเดเตเดเดฟเดเตเดเตเตผเดเตเดเดฃเด c['เดคเตเดดเดฟเดฒเดพเดณเดฟเดเตพ'].
เดซเดพเดเตเดเดฑเดฟ - เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเด เดชเดฃเดฟเดฏเตเด, เด เดคเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเตเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต เดฌเดฟเตฝเดกเตผ. เด เดตเตป เดตเดธเตเดคเต เด เดฏเดฏเตเดเตเดเตเด เดชเดฃเดฟเดฏเตเด เดเตบ เดคเตเดดเดฟเดฒเดพเดณเดฟ เดเดคเดฟเตฝ เดเตพเดชเตเดชเตเดเตเดคเตเดคเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดเดฒเตเดฒเดพ เดเดเตเดเดเตเดเดณเตเด เดชเตเตผเดคเตเดคเดฟเดฏเดพเดเตเดเดพเตป เดชเดฃเดฟเดฏเตเด-เด.
6. เดจเดฟเดเตเดเดณเตเดเต เดธเตเดตเดจเตเดคเด เดเตเตบเดซเดฟเดเดฑเตเดทเดจเตเดฑเต เดเดฆเดพเดนเดฐเดฃเด
เดตเดดเดฟ เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเดพเตป เดเดพเตป เดจเดฟเตผเดฆเตเดฆเตเดถเดฟเดเตเดเตเดจเตเดจ เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดเตผเดเตเดเดฟเดเตเดเตเดเดฑเดฟเดจเตเดฑเต เดเดฆเดพเดนเดฐเดฃเด เดเดคเดพ เดฌเดฟเตฝเดกเตเดฌเตเดเตเดเต
.
เดเดเตเดเตพ เดเดฐเต เดชเดคเดฟเดชเตเดชเต เดจเดฟเดฏเดจเตเดคเตเดฐเดฃ เดธเดเดตเดฟเดงเดพเดจเดฎเดพเดฏเดฟ เดเดชเดฏเตเดเดฟเดเตเดเตเด svn. เดถเตเดเดฐเด เดคเดจเตเดจเต เดเดคเตเดเตเดเดฟเดฒเตเด เดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เดเตเดฒเตเดกเดฟเตฝ เดธเตเดฅเดฟเดคเดฟเดเตเดฏเตเดฏเตเด. เด เดฎเตเดเดคเตเดคเดฟเดจเตเดฑเต เดตเดฟเดฒเดพเดธเด เดเดคเดพ
เดฌเดฟเตฝเดกเตเดฎเดพเดธเตเดฑเตเดฑเตผ ะธ เดคเตเดดเดฟเดฒเดพเดณเดฟ เดเดฐเต เดนเตเดธเตเดฑเตเดฑเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเด project.host .เดฌเดฟเตฝเดกเตเดฎเดพเดธเตเดฑเตเดฑเตผ เด เดคเดฟเดจเตเดฑเต เดซเดฏเดฒเตเดเตพ เดเดฐเต เดซเตเตพเดกเดฑเดฟเตฝ เดธเดเดญเดฐเดฟเดเตเดเตเดจเตเดจเต /home/habr/master. เดคเตเดดเดฟเดฒเดพเดณเดฟ เด เดคเต เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดชเดพเดคเดฏเดฟเตฝ เดธเดเดญเดฐเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต /เดตเตเดเต/เดนเดพเดฌเตเตผ/เดคเตเดดเดฟเดฒเดพเดณเดฟ. เดเดถเดฏเดตเดฟเดจเดฟเดฎเดฏเด เดจเดเดคเตเดคเตเด เดฌเดฟเตฝเดกเตเดฎเดพเดธเตเดฑเตเดฑเตผ-เด เดเดชเตเดชเด เดคเตเดดเดฟเดฒเดพเดณเดฟ-a เดชเตเดฐเตเดเตเดเตเดเตเดเตเตพ เด เดจเตเดธเดฐเดฟเดเตเดเต เดชเตเตผเดเตเดเต 4000 เดตเดดเดฟ เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเตเดจเตเดจเต เดฌเดฟเตฝเดกเตเดฌเตเดเตเดเต-เด, เด เดคเดพเดฏเดคเต 'pb' เดชเตเดฐเตเดเตเดเตเดเตเดเตเตพ.
เดเดพเตผเดเตเดฑเตเดฑเต เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดชเตเตผเดฃเตเดฃเดฎเดพเดฏเตเด เดชเตเดคเตเดคเดฃเดฟเตฝ เดเดดเตเดคเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต. เด เดคเดฟเดจเตเดฑเต เดฎเดพเดฑเตเดฑเดเตเดเตพ เดเตเดฐเดพเดเตเดเต เดเตเดฏเตเดฏเตเด, เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเดฌเดฟเตพ เดซเดฏเตฝ เดธเตเดทเตเดเดฟเดเตเดเตเด, เดกเตเดเตเดฏเตเดฎเตเดจเตเดฑเตเดทเตป เดธเตเดทเตเดเดฟเดเตเดเตเด, เดชเดฐเดฟเดถเตเดงเดจ เดจเดเดคเตเดคเตเด เดเดจเตเดจเดฟเดตเดฏเดพเดฃเต เดเตเดฎเดคเดฒ. เดชเดฐเดพเดเดฏเด เดธเดเดญเดตเดฟเดเตเดเตเดเดฏเดพเดฃเตเดเตเดเดฟเตฝ, เดเดฒเตเดฒเดพ เดกเตเดตเดฒเดชเตเดชเตผเดฎเดพเดฐเตเด เดเดฐเต เดชเดฐเดพเดเดฏเดชเตเดชเตเดเตเด เดจเดเดชเดเดฟเดฏเตเดฃเตเดเตเดจเตเดจเต เดชเตเดฐเดธเตเดคเดพเดตเดฟเดเตเดเตเดจเตเดจ เดเดฎเตเดฏเดฟเตฝ เดตเดดเดฟ เดเดฐเต เดธเดจเตเดฆเตเดถเด เด เดฏเดฏเตโเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต.
เดตเตเดฌเต เดกเดฟเดธเตเดชเตเดฒเต เดฌเดฟเตฝเดกเตเดฌเตเดเตเดเต เดเดคเดฟเดจเดพเดฏเดฟ เดเดเตเดเตพ เดชเตเตผเดเตเดเต 80-เดฒเตเดเตเดเต เดฌเดจเตเดงเดฟเดชเตเดชเดฟเดเตเดเตเด project.host. Apatch เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเตเดฃเตเด เดเดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ. เดฒเตเดฌเตเดฐเดฑเดฟเดฏเตเดเต เดญเดพเดเดฎเดพเดฏเดฟ เดตเดณเดเตเดเตเดเดฟเดเตเดเต เดเดคเดฟเดจเดเด เดเดฐเต เดตเตเดฌเต เดธเตเตผเดตเตผ เดเดฃเตเดเต, เดฌเดฟเตฝเดกเตเดฌเตเดเตเดเต เด เดคเต เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต.
เดเดจเตเดคเดฐเดฟเด เดตเดฟเดตเดฐเดเตเดเตพ เดธเดเดญเดฐเดฟเดเตเดเดพเตป เดฌเดฟเตฝเดกเตเดฌเตเดเตเดเต เดเดเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเตเด เดธเตเดเตเดฒเตเดฑเตเดฑเต.
เดฎเตเดฏเดฟเดฒเดฟเดเดเดฟเดจเต เดเดฐเต เดนเตเดธเตเดฑเตเดฑเต เดเดตเดถเตเดฏเดฎเดพเดฃเต smtp.your.domain - เดเดคเต เดฎเตเดฏเดฟเดฒเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดคเตเดคเตเดเตพ เด เดฏเดฏเตเดเตเดเดพเตป เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต [เดเดฎเตเดฏเดฟเตฝ เดชเดฐเดฟเดฐเดเตเดทเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต] เดเดงเดฟเดเดพเดฐเดฟเดเดค เดเดฒเตเดฒเดพเดคเต. เดนเตเดธเตเดฑเตเดฑเดฟเดฒเตเด'SMTP 1025 เดเดจเตเดจ เดชเตเดธเตเดฑเตเดฑเดฟเตฝ เดฎเดฟเดจเดฟเดฑเตเดฑเตเดธเต เดเตเตพเดเตเดเตเดจเตเดจเต.
เด เดชเตเดฐเดเตเดฐเดฟเดฏเดฏเดฟเตฝ เดฐเดฃเตเดเต เดเดณเตเดเตพ เดเตพเดชเตเดชเตเดเตเดจเตเดจเต: เด เดกเตเดฎเดฟเตป ะธ เดเดชเดฏเตเดพเดเตเดคเดพเดตเต. เด เดกเตเดฎเดฟเตป เด เดกเตเดฎเดฟเดจเดฟเดธเตเดเตเดฐเตเดฑเตเดฑเตผเดฎเดพเตผ เดฌเดฟเตฝเดกเตเดฌเตเดเตเดเต. เดเตเดฏเตเดฏเตเดจเตเดจ เดตเตเดฏเดเตเดคเดฟเดฏเดพเดฃเต เดเดชเดฏเตเดเตเดคเดพเดตเต เดธเดฎเตผเดชเตเดชเดฟเดเตเดเตเด-เดเดธเต.
เดเดเตโเดธเดฟเดเตเดฏเตเดเตเดเดฌเดฟเตพ เดซเดฏเตฝ เดเดจเดฑเตเดฑเตเดฑเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเต เดตเดดเดฟเดฏเดพเดฃเต เดชเตเตปเดธเตเดฑเตเดฑเดพเดณเตผ. เดตเดดเดฟเดฏเดพเดฃเต เดกเตเดเตเดฏเตเดฎเตเดจเตเดฑเตเดทเตป เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเตเดจเตเดจเดคเต เดกเตเดเตเดธเดฟเดเตป.
เด เดตเดพเดธเตเดคเตเดตเดฟเดฆเตเดฏเดฏเตเดเตเดเดพเดฏเดฟ เดเดพเตป เดเดคเต เดเดดเตเดคเดฟ: master.cfg:
master.cfg
import os, re
from buildbot.plugins import steps, util, schedulers, worker, changes, reporters
c= BuildmasterConfig ={}
c['workers'] = [ worker.Worker('yourWorkerName', 'password') ]
c['protocols'] = {'pb': {'port': 4000}}
svn_poller = changes.SVNPoller(repourl="https://svn.host/svn/yourProject/trunk",
svnuser="user",
svnpasswd="password",
pollinterval=60,
split_file=util.svn.split_file_alwaystrunk
)
c['change_source'] = svn_poller
hourlyscheduler = schedulers.SingleBranchScheduler(
name="your-project-schedulers",
change_filter=util.ChangeFilter(branch=None),
builderNames=["yourProject"],
properties = {'owner': 'admin'}
)
c['schedulers'] = [hourlyscheduler]
checkout = steps.SVN(repourl='https://svn.host/svn/yourProject/trunk',
mode='full',
method='fresh',
username="user",
password="password",
haltOnFailure=True)
projectHost_build = util.BuildFactory()
cleanProject = steps.ShellCommand(name="Clean",
command=["buildbot/worker_linux/pyinstaller_project", "clean"]
)
buildProject = steps.ShellCommand(name="Build",
command=["buildbot/worker_linux/pyinstaller_project", "build"]
)
doxyProject = steps.ShellCommand(name="Update Docs",
command=["buildbot/worker_linux/gendoc", []]
)
testProject = steps.ShellCommand(name="Tests",
command=["python","tests/utest.py"],
env={'PYTHONPATH': '.'}
)
projectHost_build.addStep(checkout)
projectHost_build.addStep(cleanProject)
projectHost_build.addStep(buildProject)
projectHost_build.addStep(doxyProject)
projectHost_build.addStep(testProject)
c['builders'] = [
util.BuilderConfig(name="yourProject", workername='yourWorkerName', factory=projectHost_build)
]
template_html=u'''
<h4>ะกัะฐััั ะฟะพัััะพะตะฝะฝะพะณะพ ัะตะปะธะทะฐ: {{ summary }}</h4>
<p>ะัะฟะพะปัะทัะตะผัะน ัะตัะฒะธั ะดะปั ะฟะพัััะฐะตะฝะธั: {{ workername }}</p>
<p>ะัะพะตะบั: {{ projects }}</p>
<p>ะะปั ัะพะณะพ ััะพ ะฑั ะฟะพัะผะพััะตัั ะธะฝัะตััะตะนั ัะฟัะฐะฒะปะตะฝะธั ะฟัะพะนะดะธัะต ะฟะพ ัััะปะบะต: {{ buildbot_url }}</p>
<p>ะะปั ัะพะณะพ ััะพ ะฑั ะฟะพัะผะพััะตัั ัะตะทัะปััะฐั ัะฑะพัะบะธ ะฟัะพะนะดะธัะต ะฟะพ ัััะปะบะต: {{ build_url }}</p>
<p>ะัะฟะพะปัะทัั WinSCP ะผะพะถะฝะพ ะฟะพะดะบะปััะธัััั ะบ ัะตัะฒะตัั c ip:xxx.xx.xxx.xx. ะะพะนะดั ะฟะพะด habr/password, ะทะฐะฑัะฐัั ัะพะฑัะฐะฝะฝัะน executable ัะฐะนะป ั ะดะธัะตะบัะพัะธะธ ~/worker/yourProject/build/dist.</p>
<p><b>ะะพัััะพะตะฝะธะต ะฑัะปะพ ะฟัะพะธะทะฒะตะดะตะฝะพ ัะตัะตะท Buildbot</b></p>
'''
sendMessageToAll = reporters.MailNotifier(fromaddr="[email protected]",
sendToInterestedUsers=True,
lookup="your.domain",
relayhost="smtp.your.domain",
smtpPort=1025,
mode="warnings",
extraRecipients=['[email protected]'],
messageFormatter=reporters.MessageFormatter(
template=template_html,
template_type='html',
wantProperties=True,
wantSteps=True)
)
c['services'] = [sendMessageToAll]
c['title'] = "The process of bulding"
c['titleURL'] = "http://project.host:80/"
c['buildbotURL'] = "http://project.host"
c['www'] = dict(port=80,
plugins=dict(waterfall_view={}, console_view={}, grid_view={}))
c['db'] = {
'db_url' : "sqlite:///state.sqlite"
}
เดเดฆเตเดฏเด เดจเดฟเดเตเดเตพเดเตเดเต เดตเตเดฃเตเดเดคเต
เด เดเตเดคเตเดค เดเดเตเดเด เดธเตเดตเดจเด เดเดฐเดเดญเดฟเดเตเดเตเด เดเดจเตเดจเดคเดพเดฃเต เดฌเดฟเตฝเดกเตเดฎเดพเดธเตเดฑเตเดฑเตผa
sudo buildbot start /home/habr/master
เดคเตเดเตผเดจเตเดจเต เดธเตเดตเดจเด เดเดฐเดเดญเดฟเดเตเดเตเด เดคเตเดดเดฟเดฒเดพเดณเดฟ-a
buildbot-worker start /home/habr/worker
เดคเดฏเตเดฏเดพเดฑเดพเดฃเต! เดเดชเตเดชเตเตพ เดฌเดฟเตฝเดกเตเดฌเตเดเตเดเต เดฎเดพเดฑเตเดฑเดเตเดเตพ เดเตเดฐเดพเดเตเดเต เดเตเดฏเตเดฏเตเดเดฏเตเด เดเตเดฐเดฟเดเตผ เดเตเดฏเตเดฏเตเดเดฏเตเด เดเตเดฏเตเดฏเตเด เดธเดฎเตผเดชเตเดชเดฟเดเตเดเตเด-y เดเตป svn, เดฎเตเดเดณเดฟเตฝ เดชเดฑเดเตเด เดตเดพเดธเตเดคเตเดตเดฟเดฆเตเดฏ เดเดชเดฏเตเดเดฟเดเตเดเต เดเดฐเต เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเด เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดฎเตเดณเตเดณ เดเดเตเดเดเตเดเตพ เดจเดฟเตผเดตเดนเดฟเดเตเดเตเดจเตเดจเต.
เดฎเตเดเดณเดฟเตฝ เดชเดฑเดเตเดเดตเดฏเตเดเต เดเดฟเดฒ เดธเดตเดฟเดถเตเดทเดคเดเตพ เดเดพเตป เดคเดพเดดเต เดตเดฟเดตเดฐเดฟเดเตเดเตเด master.cfg.
6.1 เดจเดฟเดเตเดเดณเตเดเต เดฎเดพเดธเตเดฑเตเดฑเดฑเดฟเดฒเตเดเตเดเตเดณเตเดณ เดตเดดเดฟเดฏเดฟเตฝ.cfg
เดเดดเตเดคเตเดฎเตเดชเตเตพ เดเดจเตเดฑเต master.cfg เดจเดฟเดฐเดตเดงเดฟ เดชเดฟเดถเดเตเดเตพ เดธเดเดญเดตเดฟเดเตเดเตเด, เด
เดคเดฟเดจเดพเตฝ เดฒเตเดเต เดซเดฏเตฝ เดตเดพเดฏเดฟเดเตเดเตเดฃเตเดเดคเต เดเดตเดถเตเดฏเดฎเดพเดฃเต. เดเดฏเดฟ เดธเตเดเตเดทเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต เดฌเดฟเตฝเดกเตเดฎเดพเดธเตเดฑเตเดฑเตผ-เดเดธเดฟ เดเตเดตเดฒ เดชเดพเดค /home/habr/master/twistd.log, เดเดชเตเดชเด เดตเดถเดคเตเดคเตเด เดคเตเดดเดฟเดฒเดพเดณเดฟ- a เดธเดฎเตเดชเตเตผเดฃเตเดฃ เดชเดพเดค /home/habr/worker/twistd.log. เดจเดฟเดเตเดเตพ เดชเดฟเดถเดเต เดตเดพเดฏเดฟเดเตเดเต เด
เดคเต เดชเดฐเดฟเดนเดฐเดฟเดเตเดเตเดฎเตเดชเตเตพ, เดจเดฟเดเตเดเตพ เดธเตเดตเดจเด เดชเตเดจเดฐเดพเดฐเดเดญเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต เดฌเดฟเตฝเดกเตเดฎเดพเดธเตเดฑเตเดฑเตผ-เด. เดเดคเต เดเดเตเดเดจเต เดเตเดฏเตเดฏเตเดจเตเดจเตเดตเตเดจเตเดจเต เดเดคเดพ:
sudo buildbot stop /home/habr/master
sudo buildbot upgrade-master /home/habr/master
sudo buildbot start /home/habr/master
6.2 svn-เตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเต
svn_poller = changes.SVNPoller(repourl="https://svn.host/svn/yourProject/trunk",
svnuser="user",
svnpasswd="password",
pollinterval=60,
split_file=util.svn.split_file_alwaystrunk
)
c['change_source'] = svn_poller
hourlyscheduler = schedulers.SingleBranchScheduler(
name="your-project-schedulers",
change_filter=util.ChangeFilter(branch=None),
builderNames=["yourProject"],
properties = {'owner': 'admin'}
)
c['schedulers'] = [hourlyscheduler]
checkout = steps.SVN(repourl='https://svn.host/svn/yourProject/trunk',
mode='full',
method='fresh',
username="user",
password="password",
haltOnFailure=True)
เดเดฆเตเดฏเด, เดจเดฎเตเดเตเดเต เดจเตเดเตเดเดพเด svn_poller. เดเดคเต เดเดชเตเดชเตเดดเตเด เด เดคเต เดเดจเตเดฑเตผเดซเตเดธเต เดเดฃเต, เดชเดคเดฟเดตเดพเดฏเดฟ เดเดฐเต เดฎเดฟเดจเดฟเดฑเตเดฑเดฟเตฝ เดเดฐเดฟเดเตเดเตฝ เดฑเดฟเดชเตเดชเตเดธเดฟเดฑเตเดฑเดฑเดฟ เดชเตเดณเดฟเดเดเต เดเตเดฏเตเดฏเตเดจเตเดจเต. เด เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ svn_poller เดถเดพเดเดฏเดฟเดฒเตเดเตเดเต เดฎเดพเดคเตเดฐเด เดชเตเดฐเดตเตเดถเดฟเดเตเดเตเดจเตเดจเต เดคเตเดฎเตเดชเดฟเดเตเดเต. เดจเดฟเดเตเดขเดฎเดพเดฏ เดชเดฐเดพเดฎเตเดฑเตเดฑเตผ split_file=util.svn.split_file_alwaystrunk เดจเดฟเดฏเดฎเดเตเดเตพ เดธเดเตเดเดฎเดพเดเตเดเตเดจเตเดจเต: เดซเตเตพเดกเตผ เดเดเดจ เดเดเตเดเดจเต เดคเดเตผเดเตเดเดพเด svn เดถเดพเดเดเดณเดฟเตฝ. เด เดตเตป เด เดตเตผเดเตเดเต เดเดชเตเดเตเดทเดฟเด เดชเดพเดคเดเดณเตเด เดตเดพเดเตเดฆเดพเดจเด เดเตเดฏเตเดฏเตเดจเตเดจเต. เด เดคเดฟเดจเตเดฑเต เดเดดเดคเตเดคเดฟเตฝ เดธเตเดชเตเดฒเดฟเดฑเตเดฑเต_เดซเดฏเตฝ_เดเดฒเตเดฒเดพเดฏเตโเดชเตเดชเตเดดเตเด เดธเตโเดเตเดฐเดเตเดเต เดถเตเดเดฐเดคเตเดคเดฟเตฝ เดฎเดพเดคเตเดฐเดฎเต เด เดเดเตเดเดฟเดฏเดฟเดเตเดเตเดณเตเดณเต เดเดจเตเดจเต เดชเดฑเดเตเดเตเดเตเดฃเตเดเต เดชเตเดฐเดเตเดฐเดฟเดฏ เดฒเดณเดฟเดคเดฎเดพเดเตเดเตเดจเตเดจเต เดคเตเดฎเตเดชเดฟเดเตเดเต.
ะ เดทเตเดกเตเดฏเตเดณเตผเดฎเดพเตผ เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต เดฎเดพเดฑเตเดฑเตเด เดซเดฟเตฝเดฑเตเดฑเตผเดเตผ เดเดพเดฃเตเดจเตเดจเต เดเดจเตเดจเตเดฎเดฟเดฒเตเดฒ เดเดฐเต เดถเดพเดเดฏเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเตเดเตเดคเตเดคเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต เดคเตเดฎเตเดชเดฟเดเตเดเต เดจเตฝเดเดฟเดฏเดฟเดเตเดเตเดณเตเดณ เด เดธเตเดธเดฟเดฏเตเดทเตป เดชเตเดฐเดเดพเดฐเด เดธเตเดชเตเดฒเดฟเดฑเตเดฑเต_เดซเดฏเตฝ_เดเดฒเตเดฒเดพเดฏเตโเดชเตเดชเตเดดเตเด เดธเตโเดเตเดฐเดเตเดเต. เดฎเดพเดฑเตเดฑเดเตเดเดณเตเดเต เดชเตเดฐเดคเดฟเดเดฐเดฟเดเตเดเตเดจเตเดจเต เดคเตเดฎเตเดชเดฟเดเตเดเต, เดธเดฎเดพเดฐเดเดญเดฟเดเตเดเตเดจเตเดจเต เดฌเดฟเตฝเดกเตผ เดชเตเดฐเดฟเดจเตเดชเตเดชเด เดจเดฟเดเตเดเดณเตเดเต เดชเดฆเตเดงเดคเดฟ.
เดชเตเดฐเตเดชเตเดชเตผเดเตเดเดฟเดเตพ เดเดตเดฟเดเต เดเดคเต เดเดตเดถเตเดฏเดฎเดพเดฃเต, เด เดคเดฟเดจเดพเตฝ เดชเตเดฐเดเตเดฐเดฟเดฏเดฏเตเดเต เดเดเดฎ เดเดจเตเดจ เดจเดฟเดฒเดฏเดฟเตฝ เด เดกเตโเดฎเดฟเดจเต เดฌเดฟเตฝเดกเต, เดเตเดธเตเดฑเตเดฑเดฟเดเดเต เดซเดฒเดเตเดเดณเตเดเต เดฎเตเดฏเดฟเดฒเดฟเดเดเต เดฒเดฟเดธเตเดฑเตเดฑเตเดเตพ เดฒเดญเดฟเดเตเดเตเด.
เดเดเตเดเด เดชเดฃเดฟเดฏเตเด-a เดเตเดเตเดเต เดเดเตเดเต เดฑเดฟเดชเตเดชเตเดธเดฟเดฑเตเดฑเดฑเดฟเดฏเตเดเต เดชเตเดฐเดพเดฆเตเดถเดฟเด เดชเดคเดฟเดชเตเดชเดฟเตฝ เดธเตเดฅเดฟเดคเดฟเดเตเดฏเตเดฏเตเดจเตเดจ เดเดฒเตเดฒเดพ เดซเดฏเดฒเตเดเดณเตเด เดชเตเตผเดฃเตเดฃเดฎเดพเดฏเตเด เดเดฒเตเดฒเดพเดคเดพเดเตเดเดพเตป เดชเตเดฐเดพเดชเตเดคเดฎเดพเดฃเต เดคเตเดดเดฟเดฒเดพเดณเดฟ-เด. เดเดจเตเดจเดฟเดเตเดเต เดซเตเตพ เดเตเดฏเตเดฏเตเด svn เด เดชเตเดกเตเดฑเตเดฑเต. เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเตผ เดตเดดเดฟเดฏเดพเดฃเต เดฎเตเดกเต เดเตเดฐเดฎเตเดเดฐเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเดคเต เดฎเตเดกเต=เดชเตเตผเดฃเตเดฃเด, เดฐเตเดคเดฟ=เดชเตเดคเดฟเดฏ. เดชเดฐเดพเดฎเตเดฑเตเดฑเตผ haltOnTailure เดเดเตเดเดฟเตฝ เดเดจเตเดจเต เดชเดฑเดฏเตเดจเตเดจเต svn เด เดชเตเดกเตเดฑเตเดฑเต เดเดฐเต เดชเดฟเดถเดเต เดเดชเดฏเตเดเดฟเดเตเดเต เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเตเด, เดคเตเดเตผเดจเตเดจเต เดจเดฟเตผเดฎเตเดฎเดพเดฃเดคเตเดคเดฟเดจเตเดฑเตเดฏเตเด เดชเดฐเดฟเดถเตเดงเดจเดฏเตเดเตเดฏเตเด เดฎเตเดดเตเดตเตป เดชเตเดฐเดเตเดฐเดฟเดฏเดฏเตเด เดคเดพเตฝเดเตเดเดพเดฒเดฟเดเดฎเดพเดฏเดฟ เดจเดฟเตผเดคเตเดคเดฟเดตเดฏเตเดเตเดเดฃเด, เดเดพเดฐเดฃเด เดคเตเดเตผเดจเตเดจเตเดณเตเดณ เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเตพ เด เตผเดคเตเดฅเดฎเดพเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒ.
6.3 เดจเดฟเดเตเดเตพเดเตเดเตเดณเตเดณ เดเดคเตเดคเต: เดฑเดฟเดชเตเดชเตเตผเดเตเดเตผเดฎเดพเตผเดเตเดเต เดชเตเดฐเดเตเดฏเดพเดชเดฟเดเตเดเดพเตป เด เดงเดฟเดเดพเดฐเดฎเตเดฃเตเดเต
เดฎเดพเดงเตเดฏเดฎเดชเตเดฐเดตเตผเดคเตเดคเดเดฐเตเดพเดเต เดเดฎเตเดฏเดฟเตฝ เดตเดดเดฟ เด
เดฑเดฟเดฏเดฟเดชเตเดชเตเดเตพ เด
เดฏเดฏเตเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฐเต เดธเตเดตเดจเดฎเดพเดฃเต.
template_html=u'''
<h4>ะกัะฐััั ะฟะพัััะพะตะฝะฝะพะณะพ ัะตะปะธะทะฐ: {{ summary }}</h4>
<p>ะัะฟะพะปัะทัะตะผัะน ัะตัะฒะธั ะดะปั ะฟะพัััะฐะตะฝะธั: {{ workername }}</p>
<p>ะัะพะตะบั: {{ projects }}</p>
<p>ะะปั ัะพะณะพ ััะพ ะฑั ะฟะพัะผะพััะตัั ะธะฝัะตััะตะนั ัะฟัะฐะฒะปะตะฝะธั ะฟัะพะนะดะธัะต ะฟะพ ัััะปะบะต: {{ buildbot_url }}</p>
<p>ะะปั ัะพะณะพ ััะพ ะฑั ะฟะพัะผะพััะตัั ัะตะทัะปััะฐั ัะฑะพัะบะธ ะฟัะพะนะดะธัะต ะฟะพ ัััะปะบะต: {{ build_url }}</p>
<p>ะัะฟะพะปัะทัั WinSCP ะผะพะถะฝะพ ะฟะพะดะบะปััะธัััั ะบ ัะตัะฒะตัั c ip:xxx.xx.xxx.xx. ะะพะนะดั ะฟะพะด habr/password, ะทะฐะฑัะฐัั ัะพะฑัะฐะฝะฝัะน executable ัะฐะนะป ั ะดะธัะตะบัะพัะธะธ ~/worker/yourProject/build/dist.</p>
<p><b>ะะพัััะพะตะฝะธะต ะฑัะปะพ ะฟัะพะธะทะฒะตะดะตะฝะพ ัะตัะตะท Buildbot</b></p>
'''
sendMessageToAll = reporters.MailNotifier(fromaddr="[email protected]",
sendToInterestedUsers=True,
lookup="your.domain",
relayhost="smtp.your.domain",
smtpPort=1025,
mode="warnings",
extraRecipients=['[email protected]'],
messageFormatter=reporters.MessageFormatter(
template=template_html,
template_type='html',
wantProperties=True,
wantSteps=True)
)
c['services'] = [sendMessageToAll]
เด
เดฏเดพเตพเดเตเดเต เดธเดจเตเดฆเตเดถเดเตเดเตพ เด
เดฏเดฏเตเดเตเดเดพเตป เดเดดเดฟเดฏเตเด
เดฎเตเดฏเดฟเตฝ เดจเตเดเตเดเดฟเดซเดฏเตผ เด เดฑเดฟเดฏเดฟเดชเตเดชเตเดเตพ เด เดฏเดฏเตเดเตเดเดพเตป เดเดฎเตเดฏเดฟเตฝ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต.
เดเตเดเดชเตเดฒเตเดฑเตเดฑเต_html เดตเดพเตผเดคเตเดคเดพเดเตเดเตเดฑเดฟเดชเตเดชเดฟเดจเดพเดฏเดฟ เดเตเดเตเดธเตเดฑเตเดฑเต เดเตเดเดชเตเดฒเตเดฑเตเดฑเต เดธเดเตเดเดฎเดพเดเตเดเตเดจเตเดจเต. เดฎเดพเตผเดเตเดเตเด
เดชเตเดชเต เดธเตเดทเตเดเดฟเดเตเดเดพเตป HTML เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต. เดเดเตเดเดฟเตป เดเดชเดฏเตเดเดฟเดเตเดเดพเดฃเต เดเดคเต เดชเดฐเดฟเดทเตเดเดฐเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเดคเต
เดฎเตเดฏเดฟเตฝ เดจเตเดเตเดเดฟเดซเดฏเตผ เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดตเดพเดฆเดเตเดเตพ เด เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต.
fromaddr - เดเดฒเตเดฒเดพเดตเตผเดเตเดเตเด เดตเดพเตผเดคเตเดคเดพเดเตเดเตเดฑเดฟเดชเตเดชเต เดฒเดญเดฟเดเตเดเตเดจเตเดจ เดตเดฟเดฒเดพเดธเด.
เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดณเตเดณ เดเดชเดฏเตเดเตเดคเดพเดเตเดเตพเดเตเดเต เด เดฏเดฏเตเดเตเดเตเด=เดเตเดฐเต เดเดฃเตเดเดพเดเตเดเดฟเดฏ เดเดเดฎเดฏเตเดเตเดเตเด เดเดชเดฏเตเดเตเดคเดพเดตเดฟเดจเตเด เดเดฐเต เดธเดจเตเดฆเตเดถเด เด เดฏเดฏเตเดเตเดเตเดจเตเดจเต เดธเดฎเตผเดชเตเดชเดฟเดเตเดเตเด.
เดคเดฟเดฐเดฏเตฝ - เดตเดพเตผเดคเตเดคเดพเดเตเดเตเดฑเดฟเดชเตเดชเต เดธเตเดตเตเดเดฐเดฟเดเตเดเตเดจเตเดจ เดเดชเดฏเตเดเตเดคเดพเดเตเดเดณเตเดเต เดชเตเดฐเตเดเดณเดฟเตฝ เดเตเตผเดเตเดเตเดฃเตเด เดเดฐเต เดชเตเดฐเดคเตเดฏเดฏเด. เด เดเตเดเดจเต เด เดกเตเดฎเดฟเตป เดตเดฟเดฒเดพเดธเดคเตเดคเดฟเตฝ เดเดชเดฏเตเดเตเดคเดพเดตเดฟเดจเต เดตเดพเตผเดคเตเดคเดพเดเตเดเตเดฑเดฟเดชเตเดชเต เดเดเตเดเดจเต เดฒเดญเดฟเดเตเดเตเด [เดเดฎเตเดฏเดฟเตฝ เดชเดฐเดฟเดฐเดเตเดทเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต].
เดฑเดฟเดฒเตเดนเตเดธเตเดฑเตเดฑเต เดธเตเตผเดตเตผ เดคเตเดฑเดจเตเดจเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดนเตเดธเตเดฑเตเดฑเตเดจเดพเดฎเด เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเตเดจเตเดจเต SMTPเดเดฐเต smptPort เดเตเตพเดเตเดเตเดจเตเดจ เดชเตเตผเดเตเดเต เดจเดฎเตเดชเตผ เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเตเดจเตเดจเต SMTP เดธเตเตผเดตเตผ.
เดฎเตเดกเต="เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต" เดเดฐเต เดเดเตเดเดฎเตเดเตเดเดฟเดฒเตเด เดเดฃเตเดเตเดเตเดเดฟเตฝ เดฎเดพเดคเตเดฐเดฎเต เดฎเตเดฏเดฟเดฒเดฟเดเดเต เดจเดเดคเตเดคเดพเดตเต เดเดจเตเดจเต เดชเดฑเดฏเตเดจเตเดจเต เดชเดฃเดฟเดฏเตเด-a, เดเดคเต เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดธเต เดชเดฐเดพเดเดฏเด เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเตเดเต เด เดตเดธเดพเดจเดฟเดเตเดเต. เดตเดฟเดเดฏเดคเตเดคเดฟเดจเตเดฑเต เดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดเดฐเต เดตเดพเตผเดคเตเดคเดพเดเตเดเตเดฑเดฟเดชเตเดชเต เด เดฏเดฏเตเดเตเดเตเดฃเตเด เดเดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ.
เด เดงเดฟเด เดธเตเดตเตเดเตผเดคเตเดคเดพเดเตเดเตพ เดเดเดฎเดฏเตเดเตเดเตเด เดฎเตเดฏเดฟเดฒเดฟเดเดเต เดจเดเดคเตเดคเดฟเดฏ เดตเตเดฏเดเตเดคเดฟเดเตเดเตเด เดชเตเดฑเดฎเต เดฎเตเดฏเดฟเดฒเดฟเดเดเต เด เดฏเดฏเตโเดเตเดเตเดฃเตเด เดตเตเดฏเดเตเดคเดฟเดเดณเตเดเต เดเดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เด เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต เดธเดฎเตผเดชเตเดชเดฟเดเตเดเตเด.
เดธเดจเตเดฆเตเดถเด เดซเตเตผเดฎเดพเดฑเตเดฑเตผ เดธเดจเตเดฆเตเดถ เดซเตเตผเดฎเดพเดฑเตเดฑเต, เด เดคเดฟเดจเตเดฑเต เดเตเดเดชเตเดฒเตเดฑเตเดฑเต, เดฒเดญเตเดฏเดฎเดพเดฏ เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดเดณเตเดเต เดเดฐเต เดเตเดเตเดเด เดเดจเตเดจเดฟเดต เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเตเดจเตเดจ เดเดฐเต เดตเดธเตเดคเตเดตเดพเดฃเต เดเดฟเดเตเด2. เดชเตเดฒเตเดณเตเดณ เดเดชเตเดทเดจเตเดเตพ เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจ เดเตเดฃเดเตเดเตพ=เดธเดคเตเดฏเด ะธ เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจ เดเดเตเดเดเตเดเตพ=เดธเดคเตเดฏเด เดฒเดญเตเดฏเดฎเดพเดฏ เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดเดณเตเดเต เด เดธเตเดฑเตเดฑเต เดจเดฟเตผเดตเตเดตเดเดฟเดเตเดเตเด.
เดเตเดเต['เดธเตเดตเดจเดเตเดเตพ']=[sendMessageToAll] เดธเตเดตเดจเดเตเดเดณเตเดเต เดเดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดจเตฝเดเตเดจเตเดจเต, เด เดตเดฏเดฟเตฝ เดเดเตเดเดณเตเดเตเดคเตเด เดเดฏเดฟเดฐเดฟเดเตเดเตเด เดฒเตเดเดเดจเต.
เดเดเตเดเดณเดคเต เดเตเดฏเตเดคเต! เด เดญเดฟเดจเดจเตเดฆเดจเดเตเดเตพ
เดเดเตเดเตพ เดเดเตเดเดณเตเดเต เดธเตเดตเดจเตเดคเด เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดธเตเดทเตเดเดฟเดเตเดเตเดเดฏเตเด เด เดคเดฟเดจเต เดชเตเดฐเดพเดชเตเดคเดฎเดพเดฏ เดชเตเดฐเดตเตผเดคเตเดคเดจเด เดเดพเดฃเตเดเดฏเตเด เดเตเดฏเตเดคเต. เดฌเดฟเตฝเดกเตเดฌเตเดเตเดเต. เดจเดฟเดเตเดเดณเตเดเต เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดธเตเดทเตเดเดฟเดเตเดเดพเตป เด เดเดชเดเดฐเดฃเด เดเดตเดถเตเดฏเดฎเดพเดฃเต เดเดจเตเดจเต เดฎเดจเดธเดฟเดฒเดพเดเตเดเดพเตป เดเดคเต เดฎเดคเดฟเดฏเตเดจเตเดจเต เดเดพเตป เดเดฐเตเดคเตเดจเตเดจเต. เดจเดฟเดเตเดเตพเดเตเดเต เด เดตเดจเดฟเตฝ เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดฃเตเดเต? เด เดคเต เดจเดฟเดเตเดเตพเดเตเดเต เดเดชเดเดพเดฐเดชเตเดชเตเดเตเดฎเต? เด เดตเดจเตเดเตเดชเตเดชเด เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเดพเตป เดธเตเดเดฎเดพเดฃเต? เด เดชเตเดชเตเตพ เดเดพเตป เด เดฒเตเดเดจเด เดตเตเดฑเตเดคเต เดเดดเตเดคเตเดจเตเดจเดฟเดฒเตเดฒ.
เดเตเดเดพเดคเต เดเตเดเตเดคเตฝ. เดชเตเดฐเตเดซเดทเดฃเตฝ เดเดฎเตเดฎเตเดฏเตเดฃเดฟเดฑเตเดฑเดฟ เดเดชเดฏเตเดเดฟเดเตเดเดพเตป เดเดพเตป เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจเต เดฌเดฟเตฝเดกเตเดฌเตเดเตเดเต, เดตเดฟเดถเดพเดฒเดฎเดพเดฏเดฟ, เดฎเดพเดจเตเดตเดฒเตเดเตพ เดตเดฟเดตเตผเดคเตเดคเดจเด เดเตเดฏเตเดฏเดชเตเดชเตเดเตเดเต, เด เดคเดฟเดฒเตเด เดเตเดเตเดคเตฝ เดเดฆเดพเดนเดฐเดฃเดเตเดเตพ เดเดฃเตเดเดพเดฏเดฟเดฐเตเดจเตเดจเต.
เดจเดฟเดเตเดเดณเตเดเต เดถเตเดฐเดฆเตเดงเดฏเตเดเตเดเต เดเดฒเตเดฒเดพเดตเตผเดเตเดเตเด เดจเดจเตเดฆเดฟ. เดจเดฒเตเดฒเดคเตเดตเดฐเดเตเดเต.
เด
เดตเดฒเดเดฌเด: www.habr.com