เบกเบฑเบเบเบฑเบเบซเบกเบปเบเปเบเปเปเบฅเบตเปเบกเบเบปเปเบเปเบเปเบงเบฅเบฒเบเบตเปเบซเบปเบงเบซเบเปเบฒเบเบตเบกเบเบญเบเบซเบเบถเปเบเปเบเบเบตเบกเบเบฑเบเบเบฐเบเบฒเบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบเปเบเปเปเบซเปเบเบงเบเปเบฎเบปเบฒเบเบปเบเบชเบญเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเปเบซเบกเปเบเบญเบเบเบงเบเปเบเบปเบฒ, เปเบเบดเปเบเปเบเปเบเบทเบเบเบฑเบเบเบธเปเบเบกเบทเปเบเปเบญเบ. เบเปเบญเบเบเบฐเบเบฒเบเบกเบฑเบ. เบซเบผเบฑเบเบเบฒเบเบเบฐเบกเบฒเบ 20 เบเบฒเบเบต, เปเบเปเบฎเบฑเบเบเบฒเบเบฎเปเบญเบเบเปเปเบซเปเบเบฑเบเบเบธเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบ, เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเบชเบดเปเบเบเบตเปเบเปเบฒเปเบเบฑเบเบซเบผเบฒเบเปเบเปเบเบทเบเปเบเบตเปเบกเบขเบนเปเบเบตเปเบเบฑเปเบ. เบเปเบญเบเบเปเปเบญเบฒเบเบธ. เบซเบผเบฑเบโเบเบฒเบโเบชเบญเบโเบชเบฒเบกโเบเบปเปเบงโเปเบกเบ ... เบเบต, เบเปเบฒเบโเบชเบฒโเบกเบฒเบโเปเบเบปเบฒโเปเบเปโเบชเบดเปเบโเบเบตเปโเปเบฅเบตเปเบกโเบเบปเปเบโเบเบตเปโเบเบฐโเปเบเบตเบโเบเบถเปเบโเบเปเปโเปเบ ...
เบเปเบญเบเบเปเบญเบเบเบญเบกเบฎเบฑเบเบงเปเบฒเบเปเบญเบเบเบตเปเบเปเบฒเบเบซเบผเบฒเบ (เบเปเบญเบเบเบญเบกเบฎเบฑเบเบกเบฑเบเบเปเบญเบเบซเบเปเบฒเบเบฑเปเบเบเป? เบเปเปเปเบกเปเบเบเป?), เปเบฅเบฐเบเบงเบฒเบกเบเบดเบเบเบตเปเบงเปเบฒเบเบนเปเบเปเบฒเบเบตเบกเบชเบฒเบกเบฒเบเปเบเบปเปเบฒเปเบเบดเบ Jenkins, เปเบเบดเปเบเบเบงเบเปเบฎเบปเบฒเบกเบต CI / CD เบเบฑเบเบซเบกเบปเบ, เบเปเบญเบเบเบดเบเบงเปเบฒ: เปเบซเปเบฅเบฒเบงเปเบเปเปเบเบฑเบ. เบซเบผเบฒเบโเปเบเบปเปเบฒโเบเบตเปโเปเบเบปเบฒโเบเปเบญเบโเบเบฒเบโ! เบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเบเบทเปโเบเปเบฒโเปเบเบฑเบ joke: เปเบซเปโเบเบนเปโเบเบฒเบโเบเบฒโเปเบฅเบฐโเปเบเบปเบฒโเบเบฐโเบเบดเบโเบชเปเบฒโเบฅเบฑเบโเบกเบทเปโเบซเบเบถเปเบ; เปเบเบซเบฒเบเบปเบ Fed เปเบฅเบฐเบฅเบฒเบงเบเบฐเบเบทเบ Fed เบเบฐเบซเบผเบญเบเบเบตเบงเบดเบเบเบญเบเบฅเบฒเบง. เปเบฅเบฐเปเบ เบซเบผเบดเปเบ tricks เปเบเบงเบฝเบเปเบฎเบฑเบเบเบฒเบเบเปเบฒ, เปเบเบดเปเบเบเบฐเบชเบฒเบกเบฒเบเบเบฑเบเปเบเป container เบเบตเปเบกเบตเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเบญเบเบเบธเบเบฅเบธเปเบเบเบตเปเบชเปเบฒเบเบชเบปเบเบเบปเบเบชเปเบฒเปเบฅเบฑเบเปเบเบปเปเบฒเปเบเปเบ Kuber เปเบฅเบฐเปเบญเบเบเปเบฒเปเบเปเบเบฑเบเบกเบฑเบ. ENV (เบเปเปเบเบนเปเบเบญเบเบเปเบญเบ, เบเบฑเบเบเบฑเบเบเบฐเบเบฒ, เบเบนเบชเบญเบเบเบฒเบชเบฒเบญเบฑเบเบเบดเบเปเบเปเบกเบทเปเบญเบเปเบญเบ, เบเบฝเบงเบเบตเปเปเบเปเบเบดเบเบเบดเปเบงเบกเบทเบเบญเบเบฅเบฒเบงเปเบชเปเบงเบฑเบเบเบญเบเบฅเบฒเบงเปเบฅเบฐเปเบเบดเปเบเบเปเบญเบเบขเปเบฒเบเบชเบฐเปเบเบเบญเบญเบเบซเบผเบฑเบเบเบฒเบเบญเปเบฒเบเบเบฐเปเบซเบเบเบเบตเป).
เบเบฑเปเบเบเบฑเปเบ, เปเบเบเบฑเบเบเบถเบเบเบตเปเบเปเบญเบเบเบฐเบเบญเบเปเบเบปเปเบฒเบงเปเบฒเบเปเบญเบเบฎเบฝเบเปเบเบงเปเบ:
- เบเบฑเบเบเบธเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเปเบเบเปเบเบทเปเบญเบเปเบซเบงเปเบ Jenkins เบเบฒเบเบงเบฝเบเบเบปเบงเบกเบฑเบเปเบญเบเบซเบผเบทเบเบฒเบเบงเบฝเบเบญเบทเปเบเป;
- เปเบเบทเปเบญเบกเบเปเปเบเบฑเบ cloud console (Cloud shell) เบเบฒเบ node เบเบตเปเบกเบตเบเบปเบงเปเบเบ Jenkins เบเบดเบเบเบฑเปเบ;
- เบเบณเปเบเปเบงเบฝเบเบเบฑเบ Google Kubernetes Engine.
เปเบเปเบเบดเบเปเบฅเปเบง, เบเปเบฒเบเบฐเปเบเบปเปเบฒ, เปเบเปเบเบญเบ, เปเบเบฑเบเบเบปเบเบเบตเปเบเปเปเบกเบฑเบ. เบกเบฑเบเบชเบปเบกเบกเบธเบเบงเปเบฒเบเปเบฒเบเบกเบตเบขเปเบฒเบเบซเบเปเบญเบเบชเปเบงเบเบซเบเบถเปเบเบเบญเบเปเบเบเบชเปเบฒเบเบเบทเปเบเบเบฒเบเปเบ Google cloud, เปเบฅเบฐเบเบฑเปเบเบเบฑเปเบ, เบเปเบฒเบเปเบเบฑเบเบเบนเปเปเบเปเบเบญเบเบกเบฑเบเปเบฅเบฐ, เปเบเปเบเบญเบ, เบเปเบฒเบเบกเบตเบเบฑเบเบเบต GCP. เปเบเปเบเบฑเปเบเบเปเปเปเบกเปเบเบชเบดเปเบเบเบตเปเบเบฑเบเบเบถเบเบเบตเปเปเบกเปเบเบเปเบฝเบงเบเบฑเบ.
เบเบตเปเปเบกเปเบเปเบญเบเบฐเบชเบฒเบ cheat เบเปเปเปเบเบเบญเบเบเปเบญเบ. เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฝเบเปเบเปเบเปเบญเบเบเบฒเบเบเบฝเบเบเบฑเบเบเบถเบเบเบฑเปเบเบเปเบฒเบงเปเบเบเปเบฅเบฐเบเบตเบซเบเบถเปเบ: เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบเบฐเปเบเบตเบเบเบฑเบเบเบฑเบเบซเบฒ, เปเบเปเบเบทเปเบญเบเบเบปเปเบเบเปเบฒเบเบฐเปเบเบปเปเบฒเบเปเปเบฎเบนเปเบงเบดเบเบตเบเบตเปเบเบฐเปเบเปเปเบ, เบเบฒเบเปเบเปเปเบเบเปเปเปเบกเปเบ googled เบเปเบญเบกเบเบตเปเบเบฐเปเบฎเบฑเบ, เบชเบฐเบเบฑเปเบเบเปเบฒเบเบฐเปเบเบปเปเบฒ googled เบกเบฑเบเปเบเบฑเบเบเบฒเบเบชเปเบงเบเปเบฅเบฐเปเบเบเบตเปเบชเบธเบเปเบเปเปเบเบเบฑเบเบซเบฒเปเบเป. เปเบฅเบฐเบเบฑเปเบเบเบฑเปเบเปเบเบญเบฐเบเบฒเบเบปเบ, เปเบกเบทเปเบญเบเปเบญเบเบฅเบทเบกเบงเบดเบเบตเบเบตเปเบเปเบญเบเปเบฎเบฑเบเบกเบฑเบ, เบเปเบญเบเบเปเปเบเปเบฒเปเบเบฑเบเบเปเบญเบ google เบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเบญเบตเบเปเบเบทเปเบญเบซเบเบถเปเบเปเบฅเบฐเบฅเบงเบเบฅเบงเบกเบกเบฑเบเปเบเบปเปเบฒเบเบฑเบ, เบเปเบญเบเบเบฝเบเปเบเปเบ cheat เบเปเบงเบเบเบปเบเปเบญเบ.
เบเบฐเบเบดเปเบชเบ: 1. เบเบฑเบเบเบถเบเปเบเปเบเบทเบเบเบฝเบ "เบชเปเบฒเบฅเบฑเบเบเบปเบเปเบญเบ", เบชเปเบฒเบฅเบฑเบเบเบฒเบฅเบฐเบเบปเบเบเบฒเบ best practice เบเปเปเปเบเปเบเบณเปเบเป. เบเปเบญเบเบเบตเปเบเบเบตเปเบเบฐเบญเปเบฒเบเบเบฒเบเปเบฅเบทเบญเบ "เบกเบฑเบเบเบฐเบเบตเบเบงเปเบฒเบเบตเปเบเบฐเปเบฎเบฑเบเปเบเบเบเบตเป" เปเบเบเปเบฒเปเบซเบฑเบ.
2. เบเปเบฒเบชเปเบงเบเบเบตเปเปเบเปเบเบญเบเบเบฑเบเบเบถเบเบเบทเบเบเบทเบงเปเบฒเปเบเบฑเบเปเบเบทเบญ, เบเบทเบเบฑเบเบเบฑเบเบเบถเบเบเบตเปเบเปเบฒเบเบกเบฒเบเบญเบเบเปเบญเบ, เบญเบฑเบเบเบตเปเปเบกเปเบเบเบฒเบเปเบเปเปเบเปเบเบทเบญเบเบตเปเบญเปเบญเบเปเบญ.
เบเบฒเบเบญเบฑเบเปเบเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบงเบฝเบเปเบ Jenkins เปเบเบเปเบเบเบฒเบกเบดเบ
เบเปเบญเบเปเบซเบฑเบเบเปเบฒเบเบฒเบกเบเบญเบเปเบเบปเปเบฒ: เบเบฒเบเบเบฑเบเบเบธเบเบงเบฝเบเปเบเบเปเบเบทเปเบญเบเปเบซเบงเบเปเบฝเบงเบเปเบญเบเบเบฑเบเบกเบฑเบเปเบเบงเปเบ? เปเบชเปเบเปเบฒเบเบญเบเบเบปเบงเบเปเบฒเบเบปเบเบเบฒเบเบชเบฐเบเบฃเบดเบเบเปเบงเบเบเบปเบเปเบญเบเปเบฅเบฐเบเบดเบเบเปเบฒเบเปเบ!
เบเปเบญเบเบเบญเบเบงเปเบฒ: เบเปเบญเบเบเบตเปเบเปเบฒเบเปเบเปเป, เบเปเบญเบเบเปเปเบกเบฑเบเบกเบฑเบเปเบกเบทเปเบญเบเบงเบเปเบเบปเบฒเบเบปเปเบกเบงเปเบฒ: Misha, เบเบฒเบเบเบฑเบเบงเบฒเบเบเปเบฒเบฅเบฑเบเบเบฑเบเบเปเบญเบ, เบเบธเบเบขเปเบฒเบเบซเบฒเบเปเบ! เบเปเบฒเบเปเบฅเบตเปเบกเบเบญเบเบซเบฒ, เปเบฅเบฐเบกเบตเบเบฒเบเบเบดเบกเบเบดเบเปเบเบกเบนเบเบเปเบฒเบเบญเบเบเบฒเบฅเบฒเบกเบดเปเบเบตเบเบฒเบเปเบเบตเบเบเบปเบงเบเบฒเบเบงเบฝเบ. เปเบเบฒเบฐเบชเบฐเบเบฑเปเบ, เบเปเบญเบเบกเบฑเบเปเบฎเบฑเบเบเบธเบเบขเปเบฒเบเปเบซเปเบกเบตเบเบฐเบชเบดเบเบเบดเบเบฒเบเปเบเบปเปเบฒเบเบตเปเบเบฐเปเบเบฑเบเปเบเปเบเป. เบเปเบฒเบกเบฑเบเปเบเบฑเบเปเบเปเบเปเบเบตเปเบเบฐเบเปเบญเบเบเบฑเบเบเปเปเปเบซเปเบเบนเปเปเบเปเปเบเบปเปเบฒเปเบเปเบเบเปเปเบกเบนเบเปเบเบเบเบปเบเปเบเบเบเบฒเบเปเบซเปเปเบเบเบเบตเปเบเบฐเบกเบตเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเบเปเบฒเบเบตเปเบเบฐเปเบฅเบทเบญเบเปเบญเบปเบฒเบเบฒเบเบเบฑเปเบ, เบเปเบญเบเบเบฑเบเบเบฒเบเบเบฑเบเปเบฅเบทเบญเบ.
เปเบเบเบเบฒเบเปเบกเปเบเบเบตเป: เบเบงเบเปเบฎเบปเบฒเบชเปเบฒเบเบงเบฝเบเปเบ Jenkins, เปเบเบเบฑเปเบ, เบเปเบญเบเบเบตเปเบเบฐเปเบเบตเบเบเบปเบง, เบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเปเบฅเบทเบญเบเบชเบฐเบเบฑเบเบเบฒเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเป, เบฅเบฐเบเบธเบเปเบฒเบชเปเบฒเบฅเบฑเบเบเบฒเบฅเบฒเบกเบดเปเบเบตเบเบตเปเบชเบปเปเบเบเปเบฒเบ. ENV, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบกเบฑเบเปเบเบฑเบเบเปเบฒเบเบฒเบเบฐเบเบฐเปเบฅเบฐ pushes เบกเบฑเบเปเบเบปเปเบฒเปเบเปเบ Container Registry. เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบเบฒเบเบเปเบญเบเบเบฑเปเบ, เบเบฑเบเบเบธเปเบเปเบเบทเบเปเบเบตเบเบเบปเบงเปเบ cuber เปเบเบฑเบ เบเบฒเบฅเบฐเบงเบฝเบ เบเบฑเบเบเบฒเบฅเบฒเบกเบดเปเบเบตเบเบตเปเบฅเบฐเบเบธเปเบงเปเปเบเบงเบฝเบ.
เบเบงเบเปเบฎเบปเบฒเบเบฐเบเปเปเบเบดเบเบฒเบฅเบฐเบเบฒเบเบฐเบเบงเบเบเบฒเบเบชเปเบฒเบเปเบฅเบฐเบชเปเบฒเบเบเบฑเปเบเบงเบฝเบเปเบฎเบฑเบเบเบฒเบเบเปเบฒเปเบ Jenkins, เบเบตเปเปเบกเปเบเบเบญเบเบซเบปเบงเบเปเป. เบเบงเบเปเบฎเบปเบฒเบเบฐเบชเบปเบกเบกเบธเบเบงเปเบฒเบงเบฝเบเบเบฒเบเปเบกเปเบเบเบฝเบกเบเปเบญเบก. เปเบเบทเปเบญเบเบฐเบเบดเบเบฑเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบตเปเบเบทเบเบเบฑเบเบเบธเบเบเปเบงเบเบชเบฐเบเบฑเบ, เบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบเบชเบญเบเบขเปเบฒเบ: เบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบปเปเบเบชเบฐเบเบฑเบเบเบตเปเบกเบตเบขเบนเปเบเบฑเบเบเบปเบงเปเบฅเบเปเบงเบตเบเบฑเบเบเบตเปเบเบทเบเบเปเบญเบเปเบฅเบฐเบเบปเบงเปเบเปเบเบฑเปเบ: เบเบปเบงเบเปเบฒเบเบปเบเบเบฒเบเบเบฒเบเปเบฅเบทเบญเบ เปเบโเบงเบฝเบโเบเบฒเบโ. เปเบเบเบปเบงเบขเปเบฒเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ, เปเบซเปเบเบปเบงเปเบเบเบตเปเบกเบตเบเบทเป BUILD_VERSION, เบเบงเบเปเบฎเบปเบฒเบเบฐเบเปเปเบญเบฒเปเบชเบขเบนเปเบเบฑเบเบกเบฑเบเปเบเบฅเบฒเบเบฅเบฐเบญเบฝเบ. เปเบเปเปเบซเปเปเบฎเบปเบฒเบเบดเบเบฒเบฅเบฐเบเบฒเปเบเบดเปเบเบฅเบฒเบเบฅเบฐเบญเบฝเบเบเบญเบเปเบซเบผเปเบเบเบตเปเบกเบฒ.
เบเปเปเบกเบตเบเบฒเบเปเบฅเบทเบญเบเบซเบผเบฒเบเบเบฑเปเบเบเบฑเปเบ. เบชเบญเบโเบขเปเบฒเบโเปเบเปโเบกเบฒโเปเบเบดเบโเบเบฑเบโเบเบตโ:
- เปเบเป API เบเบฒเบเปเบเบปเปเบฒเปเบเบดเบเปเบฅเบเบฐเปเบเบเบตเป Jenkins เบชเบฐเปเบซเบเบตเปเบซเปเบเบนเปเปเบเปเบเบญเบเบกเบฑเบ;
- เบฎเปเบญเบเบเปเปเบเบทเปเบญเปเบเบเบญเบเปเบเบเปเบเบต repository เบซเปเบฒเบเปเบเบชเบญเบเบซเบผเบตเบ (เปเบเบเปเบฅเบฐเบเบตเบเบญเบเบเบงเบเปเบฎเบปเบฒเบเบตเปเปเบกเปเบ JFrog Artifactory, เปเบกเปเบเบเปเปเบชเปเบฒเบเบฑเบ).
Jenkins API เบเบฒเบเปเบเบปเปเบฒเปเบเบดเบเปเบฅเบเบฐเปเบ
เบญเบตเบเบเบฒเบกเบเบฐเปเบเบเบตเบเบตเปเบเบตเปเบฅเบตเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเบขเบฒเบเบซเบผเบตเบเปเบงเบฑเปเบเบเบฒเบเบญเบฐเบเบดเบเบฒเบเบเบฒเบง.
เบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเบเบฐโเบญเบฐโเบเบธโเบเบฒเบโเปเบซเปโเบเบปเบโเปเบญเบโเบเบฝเบโเปเบเปโเบเบฒเบโเปเบโเบเบฒโเบชเบฒโเบเบฃเบตโเบเบญเบโเบชเปเบงเบโเบซเบเบถเปเบโเบเบญเบโเบงเบฑเบโเบเปเบฒโเบญเบดเบโ
Jenkins เบชเบฐเปเบญเบ API เบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเบปเปเบฒเปเบเบดเบเปเบเบทเปเบญเบเบเบตเปเบญเปเบฒเบเปเบเปเบเบฒเบเปเบฅเบเบฐเปเบเปเบเบทเปเบญเปเบฎเบฑเบเบงเบฝเบเบเบญเบเบกเบฑเบ. <โฆ> เบเบฒเบเปเบเบปเปเบฒเปเบเบดเบเบเบฒเบเปเบเปเบกเปเบเปเบซเปเบขเบนเปเปเบเบฎเบนเบเปเบเบ REST-like. เบเบตเปเบซเบกเบฒเบเบเบงเบฒเบกเบงเปเบฒเบเปเปเบกเบตเบเบธเบเบเบฝเบงเบชเปเบฒเบฅเบฑเบเบฅเบฑเบเบชเบฐเบเบฐเบเบฑเบเบซเบกเบปเบ, เปเบเปเปเบเบเบเบตเปเบเบฐเปเบเบฑเบ URL เปเบเบฑเปเบ ".../api/", เบเปเบญเบเบเบตเป"..." เปเบฒเบเปเบเบดเบเบงเบฑเบเบเบธเบเบตเปเบเบงเบฒเบกเบชเบฒเบกเบฒเบ API เบเบทเบเบเบณเปเบเป.
เปเบงเบปเปเบฒเบญเบตเบเบขเปเบฒเบ เปเบถเปเบ, เบเปเบฒเบงเบฝเบเบเบฒเบเบเบฒเบ เบเบณ เปเบเปเบเบตเปเบเบงเบเปเบฎเบปเบฒ เบเบณ เบฅเบฑเบเปเบงเบปเปเบฒเบขเบนเปเปเบเบเบฐเบเบธเบเบฑเบเปเบกเปเบเบกเบตเบขเบนเป http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build
, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, whistles API เบชเปเบฒเบฅเบฑเบเบงเบฝเบเบเบฒเบเบเบตเปเปเบกเปเบเบกเบตเบขเบนเป http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build/api/
เบเปเปเปเบ, เบเบงเบเปเบฎเบปเบฒเบกเบตเบเบฒเบเปเบฅเบทเบญเบเปเบเบฎเบนเบเปเบเบเปเบเบเบตเปเบเบฐเปเบเปเบฎเบฑเบเบเบปเบเบเบฐเบฅเบดเบ. เปเบซเปเบชเบธเบกเปเบชเป XML, เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒ API เบเบฝเบเปเบเปเบญเบฐเบเบธเบเบฒเบเปเบซเปเบเบฒเบเบเบฑเปเบเบเบญเบเปเบเบเปเบฅเบฐเบเบตเบเบตเป.
เปเบซเปเบเบญเบเบเบฝเบเปเบเปเบเบฐเบเบฒเบเบฒเบกเปเบญเบปเบฒเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบซเบกเบปเบ. เบเบงเบโเปเบฎเบปเบฒโเบกเบตโเบเบงเบฒเบกโเบชเบปเบโเปเบโเบเบฝเบโเปเบเปโเปเบโเบเบทเปโเบชเบฐโเบเบฒโเปเบซเปเบ (เบเบทเปเบชเบฐเปเบเบ) เปเบฅเบฐโเบเบปเบโเปเบเปโเบฎเบฑเบโเบเบญเบโเบเบปเบ (เบเบปเบ):
http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build/api/xml?tree=allBuilds[displayName,result]
เปเบเบตเบเบเบทเปเบเบเปเป?
เบเบญเบเบเบตเปเปเบซเปเปเบฎเบปเบฒเบเบฑเปเบเบเบญเบเบชเบฐเปเบเบฒเบฐเบเบฒเบเปเบฅเปเบเบเบตเปเบเบปเบเบฅเบปเบเบเปเบงเบเบเบปเบเปเบเปเบฎเบฑเบ เบเบงเบฒเบกโเบชเปเบฒโเปเบฅเบฑเบ. เปเบซเปเปเบเปเบเบฒเบเปเบเปเบเบฝเบ &เบเบปเบเปเบงเบฑเปเบ เปเบฅเบฐเปเบเบฑเบเบเบฒเบฅเบฒเบกเบดเปเบเบตเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบฐเบเปเบฒเบเบกเบฑเบเปเบเบชเบนเปเบเปเบฒเบเบตเปเบเปเปเปเบเบปเปเบฒเบเบฑเบ เบเบงเบฒเบกโเบชเปเบฒโเปเบฅเบฑเบ. เปเบกเปเบเปเบฅเปเบง. เบฅเบปเบเบชเบญเบเปเบเบปเปเบฒเปเบกเปเบเบเปเบฒเบเบฐเปเบซเบผเบ. เบเบงเบเปเบฎเบปเบฒเบเบปเบเปเบงเบฑเปเบเบเบธเบเบขเปเบฒเบเบเบตเปเบเปเปเบชเบปเบเปเบเบเบงเบเปเบฎเบปเบฒ:
http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build/api/xml?tree=allBuilds[displayName,result]&exclude=freeStyleProject/allBuild[result!='SUCCESS']
เบเบฒเบเบซเบเปเบฒเบเปเบเบญเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบชเบปเบเบเบปเบเบชเปเบฒเปเบฅเบฑเบ
เบเบต, เบเบฝเบเปเบเปเปเบเบทเปเบญเบเบงเบฒเบกเบกเปเบงเบ, เปเบซเปเปเบเปเปเบเบงเปเบฒเบเบฒเบเบเบฑเปเบเบเบญเบเบเปเปเปเบเปเบซเบฅเบญเบเบฅเบงเบเบเบงเบเปเบฎเบปเบฒ (เบเบฒเบเบเบฑเปเบเบเบญเบเบเปเปเปเบเบตเบเบเบปเบงเบฐ!) เปเบฅเบฐเบชเบฐเปเบเบเบฅเบฒเบเบเบทเปเบเบญเบ "เบเปเปเบชเปเบฒเปเบฅเบฑเบ":
http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build/api/xml?tree=allBuilds[displayName,result]&exclude=freeStyleProject/allBuild[result='SUCCESS']
เบเบฒเบเบซเบเปเบฒเบเปเบเบญเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเบเบนเปเบเบตเปเบเปเปเบเบฐเบชเบปเบเบเบปเบเบชเปเบฒเปเบฅเบฑเบ
เบฅเบฒเบเบเบทเปเปเบงเบตเบเบฑเบเบเบฒเบเปเบเบเปเบเบตเปเบเปเบเบตเบเปเบงเบตเบเบฒเบเปเบ
เบกเบตเบงเบดเบเบตเบเบตเบชเบญเบเบเบตเปเบเบฐเปเบเปเบฎเบฑเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเบชเบฐเบเบฑเบ. เบเปเบญเบเบกเบฑเบเบกเบฑเบเบซเบผเบฒเบเบเบงเปเบฒเบเบฒเบเปเบเบปเปเบฒเปเบเบดเบ Jenkins API. เบเบต, เปเบเบฒเบฐเบงเปเบฒเบเปเบฒเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเปเบเปเบเบทเบเบชเปเบฒเบเบเบทเปเบเบขเปเบฒเบเบชเปเบฒเปเบฅเบฑเบเบเบปเบ, เบกเบฑเบเบซเบกเบฒเบเบเบงเบฒเบกเบงเปเบฒเบกเบฑเบเบเบทเบเบซเบธเปเบกเบซเปเปเปเบฅเบฐเบงเบฒเบเปเบงเปเปเบเบเปเบญเบเปเบเบฑเบเบกเปเบฝเบเปเบเปเบเบเปเบเบตเบเบตเปเปเบซเบกเบฒเบฐเบชเบปเบก. เปเบเบฑเปเบเบเบฝเบงเบเบฑเบเบเบฑเบ, repository เปเบเบฑเบเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเปเบงเปเปเบเบเบญเบเบเบปเปเบเบเบญเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบชเบฐเบเบฑเบเบเบตเปเปเบฎเบฑเบเบงเบฝเบ. เบกเบฑเบ. เปเบฅเปเบง, เปเบซเปเบเบฒเบกเบฅเบฒเบงเบงเปเบฒเบกเบตเบฅเบธเปเบเปเบเบขเบนเปเปเบเบเปเบญเบเปเบเบฑเบเบกเปเบฝเบ. เบเบงเบเปเบฎเบปเบฒเบเบฐ curl, grep เปเบฅเบฐ awk เปเบเบเปเบเบตเบซเปเบฒเบเปเบเบชเบญเบเบซเบผเบตเบ. เบเปเบฒเปเบเบกเบตเบเบงเบฒเบกเบชเบปเบเปเบเปเบ oneliner, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบกเบฑเบเบขเบนเปเบเบฒเบเปเบเป spoiler.
เบเปเบฒเบชเบฑเปเบเบซเบเบถเปเบเปเบเบง
เบเบฐเบฅเบธเบเบฒเบชเบฑเบเปเบเบเบชเบญเบเบขเปเบฒเบ: เบเปเบญเบเบเปเบฒเบเบฅเบฒเบเบฅเบฐเบญเบฝเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบขเบนเปเปเบเบชเปเบงเบเบซเบปเบงเปเบฅเบฐเบเปเบญเบเบเปเปเบเปเบญเบเบเบฒเบเบชเบฐเบเบฑเบเบเบฑเบเบซเบกเบปเบเบเบฒเบเปเบเปเบเบต, เปเบฅเบฐเบเปเบญเบเปเบฅเบทเบญเบเบชเบฐเปเบเบฒเบฐเบเบตเปเบเบทเบเบชเปเบฒเบเบเบถเปเบเบเบฒเบเปเบเบซเบเบถเปเบเปเบเบทเบญเบ. เปเบเปเปเบเบเปเบฒเบชเบฑเปเบเปเบซเปเปเบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบเบเบงเบฒเบกเปเบเบฑเบเบเบดเบเปเบฅเบฐเบเบงเบฒเบกเบเปเบญเบเบเบฒเบเบเบญเบเบเปเบฒเบ:
curl -H "X-JFrog-Art-Api:VeryLongAPIKey" -s http://arts.myre.po/artifactory/awesomeapp/ | sed 's/a href=//' | grep "$(date +%b)-$(date +%Y)|$(date +%b --date='-1 month')-$(date +%Y)" | awk '{print $1}' | grep -oP '>K[^/]+' )
เบเบฒเบเบเบฑเปเบเบเปเบฒเบงเบฝเบเปเบฅเบฐเปเบเบฅเปเบเบฒเบเบเบฑเปเบเบเปเบฒเบงเบฝเบเปเบ Jenkins
เบเบงเบโเปเบฎเบปเบฒโเบเบญเบโเบซเบฒโเบเบตเปโเบกเบฒโเบเบญเบโเบเบฑเบโเบเบตโเบฅเบฒเบโเบเบทเปโเบเบญเบโเบชเบฐโเบเบฑเบโ. เบเบญเบเบเบตเปเปเบซเปเปเบฎเบปเบฒเบฅเบงเบกเปเบญเบปเบฒเบฅเบฒเบเบเบทเปเบเบปเบเปเบเปเบฎเบฑเบเปเบเบปเปเบฒเปเบเปเปเบฒเบงเบฝเบ. เบชเปเบฒเบฅเบฑเบเบเปเบญเบ, เบเบฒเบเปเบเปเปเบเบเบตเปเบเบฑเบเปเบเบเปเบกเปเบเบเบฒเบเปเบเบตเปเบกเบเบฑเปเบเบเบญเบเปเบเบงเบฝเบเบเบฒเบเบชเปเบฒเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบ. เบเบฑเปเบเบเบญเบเบเบตเปเบเบฐเบเบทเบเบเบฐเบเบดเบเบฑเบเบเปเบฒเบเบปเบเปเบเปเบฎเบฑเบเปเบกเปเบ "เบเบงเบฒเบกเบชเปเบฒเปเบฅเบฑเบ".
เปเบเบตเบโเบเบฒเบโเบเบฑเปเบโเบเปเบฒโเบงเบฝเบโเบเบฒเบโเบเบฒเบโเบเบฐโเบเบญเบโเปเบฅเบฐโเปเบฅเบทเปเบญเบโเบฅเบปเบโเปเบโเบฅเบธเปเบกโเบชเบธเบโ. เปเบซเปเบเบฅเบดเบเปเบชเปเบเบธเปเบก: เปเบเบตเปเบกเบเบฑเปเบเบเบญเบเบเบฒเบเบชเปเบฒเบ -> เบเบฑเปเบเบเบญเบเบเบตเปเบกเบตเปเบเบทเปเบญเบเปเบ (เบเบฝเบง). เปเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบฑเปเบเบเบญเบ, เปเบฅเบทเบญเบเปเบเบทเปเบญเบเปเบ เบชเบฐเบเบฒเบเบฐเบเบฒเบเบเบฒเบเบเปเปเบชเปเบฒเบเปเบเบเบฐเบเบธเบเบฑเบ, เบเปเบฒเบเบปเบเบกเบนเบเบเปเบฒ เบเบงเบฒเบกโเบชเปเบฒโเปเบฅเบฑเบ, เบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบตเปเบเบฐเบเบฐเบเบดเบเบฑเบเบเปเบฒเบเบฐเบชเบปเบเบเบปเบเบชเปเบฒเปเบฅเบฑเบ เบเปเบฒเปเบเบตเบเบเบฒเบเบเปเบฒเบชเบฑเปเบ shell.
เปเบฅเบฐเปเบเบเบฑเบเบเบธเบเบฑเบเบชเปเบงเบเบกเปเบงเบ. Jenkins เปเบเบฑเบเบฎเบฑเบเบชเบฒเบเบฒเบเบเบฑเปเบเบเปเบฒเบงเบฝเบเบขเบนเปเปเบเปเบเบฅเป. เปเบเบฎเบนเบเปเบเบ XML. เบเบฒเบกเบเบฒเบ http://ะฟััั-ะดะพ-ะทะฐะดะฐะฝะธั/config.xml
เบเบฑเปเบเบเบฑเปเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฒเบงเปเบซเบฅเบเปเบเบฅเปเบเบฒเบเบเบฑเปเบเบเปเบฒ, เปเบเปเปเบเบกเบฑเบเบเบฒเบกเบเบงเบฒเบกเบเปเบฒเปเบเบฑเบเปเบฅเบฐเปเบญเบปเบฒเบกเบฑเบเบเบฑเบเบเบทเบเปเบเบเปเบญเบเบเบตเปเบเปเบฒเบเปเบเปเบฎเบฑเบเบกเบฑเบ.
เบเบทเบเปเปเบกเบนเบเบเบฒเบ, เบเบงเบเปเบฎเบปเบฒเปเบเปเบเบปเบเบฅเบปเบเบเปเบฒเบเปเบเบดเบเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเบเบฐเบชเปเบฒเบเบเบฒเบฅเบฒเบกเบดเปเบเบตเบชเปเบฒเบฅเบฑเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเบชเบฐเบเบฑเบ BUILD_VERSION?
เปเบซเปเบเบฒเบงเปเบซเบฅเบเปเบเบฅเปเบเบฒเบเบเบฑเปเบเบเปเบฒเปเบฅเบฐเปเบเบดเปเบเบเบฒเบเปเบเบกเบฑเบ. เบเบฝเบเปเบเปเปเบเบทเปเบญเปเบซเปเปเบเปเปเบเบงเปเบฒเบเบฒเบฅเบฒเบกเบดเปเบเบตเบขเบนเปเปเบเบชเบฐเบเบฒเบเบเบตเปเปเบฅเบฐเบเบฐเปเบเบเบเบตเปเบเปเบญเบเบเบฒเบ.
เบเบฒเบเบซเบเปเบฒเบเปเบเบฒเบเปเบเป spoiler.
เบเบดเปเบเบชเปเบงเบ config.xml เบเบญเบเบเปเบฒเบเบเบงเบเบเบฐเบกเบตเบฅเบฑเบเบชเบฐเบเบฐเบเบฝเบงเบเบฑเบ. เบเบปเบเปเบงเบฑเปเบเปเบเบทเปเบญเปเบเบเบญเบเบญเบปเบเบเบฐเบเบญเบเบเบฒเบเปเบฅเบทเบญเบเบเบฑเบเบเบฒเบเบซเบฒเบเปเบ
เปเบเบปเปเบฒโเปเบเปโเปเบโเบเปเป? เบเบฑเปเบเปเบกเปเบ, เปเบซเปเบเบฝเบ script เบเบตเปเบเบฐเบเบทเบเบเบฐเบเบดเบเบฑเบเบเปเบฒเบเบฒเบเบเปเปเบชเปเบฒเบเบเบฐเบชเบปเบเบเบปเบเบชเปเบฒเปเบฅเบฑเบ.
script เบเบฐเปเบเปเบฎเบฑเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเบชเบฐเบเบฑเบ, เบเบฒเบงเปเบซเบฅเบเปเบเบฅเปเบเบฒเบเบเบฑเปเบเบเปเบฒ, เบเบฝเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเบชเบฐเบเบฑเบเปเบเบปเปเบฒเปเบเปเบเบกเบฑเบเปเบเบชเบฐเบเบฒเบเบเบตเปเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบ, เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเปเบฎเบฑเบเปเบซเปเบกเบฑเบเบเบฑเบเบเบทเบเปเบเบเปเบญเบ. เปเบกเปเบเปเบฅเปเบง. เบเบทเบโเบเปเบญเบ. เบเบฝเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเบชเบฐเบเบฑเบเปเบ XML เปเบเบชเบฐเบเบฒเบเบเบตเปเบเบตเปเบกเบตเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเบชเบฐเบเบฑเบเปเบฅเปเบง (เบเบฐเปเบเบฑเบเปเบเบญเบฐเบเบฒเบเบปเบ, เบซเบผเบฑเบเบเบฒเบเบเบฒเบเปเบเบตเบเบเบปเบงเบเบฑเปเบเบเปเบฒเบญเบดเบเบเบญเบเบชเบฐเบเบดเบ). เบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเบฎเบนเปโเบงเปเบฒโเบเบฑเบโเบกเบต fans เบขเปเบฒเบโเบฎเบธเบโเปเบฎเบโเบเบญเบโเบเบฒเบโเบชเบฐโเปเบเบโเบญเบญเบโเปเบเบฑเบโเบเบปเบโเบเบฐโเบเบดโเปเบโเปเบฅเบ. เบเปเบญเบเบเปเปเบเบถเปเบเบเบฑเบเปเบเบปเบฒเปเบเบปเปเบฒ. เบเบฐเบฅเบธเบเบฒเบเบดเบเบเบฑเปเบ
เบเบฒเบเปเบเป spoiler, เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเปเบฒเบชเบฐเปเบซเบเบตเบฅเบฐเบซเบฑเบเบเบตเปเบเบฐเบเบดเบเบฑเบเบฅเปเบฒเบเบฑเบเบเปเบฒเบเปเบเบดเบเบเบตเปเบเบฑเบเบซเบกเบปเบ.
เบเบฝเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเบฎเบธเปเบเบเบฒเบเปเบเบเปเบเบตเปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบซเปเบฒเบเปเบเบชเบญเบเบซเบผเบตเบเปเบเบซเบฒ config
#!/bin/bash
############## ะกะบะฐัะธะฒะฐะตะผ ะบะพะฝัะธะณ
curl -X GET -u username:apiKey http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_k8s/config.xml -o appConfig.xml
############## ะฃะดะฐะปัะตะผ ะธ ะทะฐะฝะพะฒะพ ัะพะทะดะฐะตะผ xml-ัะปะตะผะตะฝั ะดะปั ัะฟะธัะบะฐ ะฒะตััะธะน
xmlstarlet ed --inplace -d '/project/properties/hudson.model.ParametersDefinitionProperty/parameterDefinitions/hudson.model.ChoiceParameterDefinition[name="BUILD_VERSION"]/choices[@class="java.util.Arrays$ArrayList"]/a[@class="string-array"]' appConfig.xml
xmlstarlet ed --inplace --subnode '/project/properties/hudson.model.ParametersDefinitionProperty/parameterDefinitions/hudson.model.ChoiceParameterDefinition[name="BUILD_VERSION"]/choices[@class="java.util.Arrays$ArrayList"]' --type elem -n a appConfig.xml
xmlstarlet ed --inplace --insert '/project/properties/hudson.model.ParametersDefinitionProperty/parameterDefinitions/hudson.model.ChoiceParameterDefinition[name="BUILD_VERSION"]/choices[@class="java.util.Arrays$ArrayList"]/a' --type attr -n class -v string-array appConfig.xml
############## ะงะธัะฐะตะผ ะฒ ะผะฐััะธะฒ ัะฟะธัะพะบ ะฒะตััะธะน ะธะท ัะตะฟะพะทะธัะพัะธั
readarray -t vers < <( curl -H "X-JFrog-Art-Api:Api:VeryLongAPIKey" -s http://arts.myre.po/artifactory/awesomeapp/ | sed 's/a href=//' | grep "$(date +%b)-$(date +%Y)|$(date +%b --date='-1 month')-$(date +%Y)" | awk '{print $1}' | grep -oP '>K[^/]+' )
############## ะะธัะตะผ ะผะฐััะธะฒ ัะปะตะผะตะฝั ะทะฐ ัะปะตะผะตะฝัะพะผ ะฒ ะบะพะฝัะธะณ
printf '%sn' "${vers[@]}" | sort -r |
while IFS= read -r line
do
xmlstarlet ed --inplace --subnode '/project/properties/hudson.model.ParametersDefinitionProperty/parameterDefinitions/hudson.model.ChoiceParameterDefinition[name="BUILD_VERSION"]/choices[@class="java.util.Arrays$ArrayList"]/a[@class="string-array"]' --type elem -n string -v "$line" appConfig.xml
done
############## ะะปะฐะดะตะผ ะบะพะฝัะธะณ ะฒะทะฐะด
curl -X POST -u username:apiKey http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_k8s/config.xml --data-binary @appConfig.xml
############## ะัะธะฒะพะดะธะผ ัะฐะฑะพัะตะต ะผะตััะพ ะฒ ะฟะพััะดะพะบ
rm -f appConfig.xml
เบเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฒเบเบเบฒเบเปเบฅเบทเบญเบเบเบตเปเบเบฐเปเบเปเบฎเบฑเบเบชเบฐเบเบฑเบเบเบฒเบ Jenkins เปเบฅเบฐเปเบเบปเปเบฒเบเบตเปเบเปเบฒเบเบเบทเบเบฑเบเบเปเบญเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบฒเบเปเบเป spoiler เปเบกเปเบเบฅเบฐเบซเบฑเบเบเบฝเบงเบเบฑเบ, เปเบเปเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบฒเบ Jenkins:
เบเบฝเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเบชเบฐเบเบฑเบเบเบฒเบ Jenkins เบเบฑเบ config
เบเบฝเบเปเบเปเบเบทเปเปเบงเปเบงเปเบฒ: เบเบทเปเบเบฒเบเบเบฐเบเบญเบเบเบญเบเบเปเบญเบเบเบฐเบเบญเบเบเปเบงเบเปเบฅเบเบฅเปเบฒเบเบฑเบเปเบฅเบฐเปเบฅเบเบฎเบธเปเบ, เปเบเบเบเปเบงเบเบเปเปเบฒเบชเบญเบเปเบกเบฑเบ. เบเบฑเปเบเบเบฑเปเบ, awk เบเบฑเบเบชเปเบงเบเบเบตเปเบเปเปเบเปเบฒเปเบเบฑเบ. เบชเปเบฒเบฅเบฑเบเบเบปเบงเบเปเบฒเบเปเบญเบ, เบเปเบฝเบเปเบชเบฑเปเบเบเบตเปเปเบซเปเปเบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบเบเบงเบฒเบกเบเปเบญเบเบเบฒเบเบเบญเบเบเปเบฒเบ.
#!/bin/bash
############## ะกะบะฐัะธะฒะฐะตะผ ะบะพะฝัะธะณ
curl -X GET -u username:apiKey http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_k8s/config.xml -o appConfig.xml
############## ะฃะดะฐะปัะตะผ ะธ ะทะฐะฝะพะฒะพ ัะพะทะดะฐะตะผ xml-ัะปะตะผะตะฝั ะดะปั ัะฟะธัะบะฐ ะฒะตััะธะน
xmlstarlet ed --inplace -d '/project/properties/hudson.model.ParametersDefinitionProperty/parameterDefinitions/hudson.model.ChoiceParameterDefinition[name="BUILD_VERSION"]/choices[@class="java.util.Arrays$ArrayList"]/a[@class="string-array"]' appConfig.xml
xmlstarlet ed --inplace --subnode '/project/properties/hudson.model.ParametersDefinitionProperty/parameterDefinitions/hudson.model.ChoiceParameterDefinition[name="BUILD_VERSION"]/choices[@class="java.util.Arrays$ArrayList"]' --type elem -n a appConfig.xml
xmlstarlet ed --inplace --insert '/project/properties/hudson.model.ParametersDefinitionProperty/parameterDefinitions/hudson.model.ChoiceParameterDefinition[name="BUILD_VERSION"]/choices[@class="java.util.Arrays$ArrayList"]/a' --type attr -n class -v string-array appConfig.xml
############## ะะธัะตะผ ะฒ ัะฐะนะป ัะฟะธัะพะบ ะฒะตััะธะน ะธะท Jenkins
curl -g -X GET -u username:apiKey 'http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build/api/xml?tree=allBuilds[displayName,result]&exclude=freeStyleProject/allBuild[result!=%22SUCCESS%22]&pretty=true' -o builds.xml
############## ะงะธัะฐะตะผ ะฒ ะผะฐััะธะฒ ัะฟะธัะพะบ ะฒะตััะธะน ะธะท XML
readarray vers < <(xmlstarlet sel -t -v "freeStyleProject/allBuild/displayName" builds.xml | awk -F":" '{print $2}')
############## ะะธัะตะผ ะผะฐััะธะฒ ัะปะตะผะตะฝั ะทะฐ ัะปะตะผะตะฝัะพะผ ะฒ ะบะพะฝัะธะณ
printf '%sn' "${vers[@]}" | sort -r |
while IFS= read -r line
do
xmlstarlet ed --inplace --subnode '/project/properties/hudson.model.ParametersDefinitionProperty/parameterDefinitions/hudson.model.ChoiceParameterDefinition[name="BUILD_VERSION"]/choices[@class="java.util.Arrays$ArrayList"]/a[@class="string-array"]' --type elem -n string -v "$line" appConfig.xml
done
############## ะะปะฐะดะตะผ ะบะพะฝัะธะณ ะฒะทะฐะด
curl -X POST -u username:apiKey http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_k8s/config.xml --data-binary @appConfig.xml
############## ะัะธะฒะพะดะธะผ ัะฐะฑะพัะตะต ะผะตััะพ ะฒ ะฟะพััะดะพะบ
rm -f appConfig.xml
เปเบเบเบฒเบเบเบดเบเบชเบฐเบเบต, เบเปเบฒเบเปเบฒเบเปเบเปเบเบปเบเบชเบญเบเบฅเบฐเบซเบฑเบเบเบตเปเบเบฝเบเปเบเบเบญเบตเบเปเบชเปเบเบปเบงเบขเปเบฒเบเบเปเบฒเบเปเบเบดเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เปเบเบงเบฝเบเบเบฒเบเบเบฒเบเบเปเบฒเปเบเปเบเป, เบเปเบฒเบเบเบงเบเบกเบตเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเปเบเบเปเบฅเบทเปเบญเบเบฅเบปเบเบเบฑเบเบชเบฐเบเบฑเบ. เบกเบฑเบเบเปเบฒเบเบเบทเบขเบนเปเปเบ screenshot เบเบฒเบเปเบเป spoiler เปเบเป.
เบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบชเบฐเบเบฑเบเบชเปเบฒเปเบฅเบฑเบเบขเปเบฒเบเบเบทเบเบเปเบญเบ
เบเปเบฒเบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเปเบฎเบฑเบเบงเบฝเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบฑเบเบฅเบญเบ - เบงเบฒเบเบชเบฐเบเบดเบเปเบชเป เบเปเบฒเปเบเบตเบเบเบฒเบเบเปเบฒเบชเบฑเปเบ shell เปเบฅเบฐเบเบฑเบเบเบถเบเบเบฒเบเบเปเบฝเบเปเบเบ.
เบเบณเบฅเบฑเบเปเบเบทเปเบญเบกเบเปเปเบเบฑเบ Cloud shell
เบเบงเบเปเบฎเบปเบฒเบกเบตเบเบนเปเปเบเบฑเบเปเบเบเบนเปเบเบญเบเปเบเบเปเบเบต. เบเบงเบเปเบฎเบปเบฒเปเบเป Ansible เปเบเบฑเบเปเบเบทเปเบญเบเบกเบทเบเบฑเบเบชเบปเปเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบ เปเบฅเบฐเบเบนเปเบเบฑเบเบเบฒเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบญเบเบเบงเบเปเบฎเบปเบฒ. เบเบฒเบกเบเบฑเปเบเปเบฅเปเบง, เปเบกเบทเปเบญเปเบงเบปเปเบฒเปเบเบดเบเบเบฒเบเบเปเปเบชเปเบฒเบเบเบนเปเบเบญเบเปเบเบเปเบเบต, เบชเบฒเบกเบเบฒเบเปเบฅเบทเบญเบเบกเบฒเบชเบนเปเปเบ: เบเบดเบเบเบฑเปเบ Docker เปเบ Docker, เบเบดเบเบเบฑเปเบ Docker เปเบเปเบเบทเปเบญเบเบเบฑเบเบเบตเปเปเบเป Ansible, เบซเบผเบทเบชเปเบฒเบ containers เปเบ cloud console. เบเบงเบเปเบฎเบปเบฒเปเบเปเบเบปเบเบฅเบปเบเบเบตเปเบเบฐเบกเบดเบเบเบฝเบเบเปเบฝเบงเบเบฑเบ plugins เบชเปเบฒเบฅเบฑเบ Jenkins เปเบเบเบปเบเบเบงเบฒเบกเบเบตเป. เบเบทเป?
เบเปเบญเบเปเบเปเบเบฑเบเบชเบดเบเปเบ: เบเบต, เบเบฑเบเบเบฑเปเบเปเบเปเบเบนเปเบเบญเบเปเบเบเปเบเบต "เบญเบญเบเบเบฒเบเบเปเบญเบ" เบชเบฒเบกเบฒเบเบเบทเบเบฅเบงเบเบฅเบงเบกเบขเบนเปเปเบ cloud console, เปเบฅเปเบงเปเบเบฑเบเบซเบเบฑเบเบเบถเปเบเบฅเบปเบเบเบงเบ? เบฎเบฑเบเบชเบฒเบเบงเบฒเบกเบชเบฐเบญเบฒเบ, เบเปเปเปเบกเปเบเบเป? เบเปเบญเบเบเปเบญเบเบเบฒเบเปเบเบฑเบเบเบฑเบเบเบธ Jenkins เปเบ cloud console, เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเปเบซเปเบเบงเบเปเบเบปเบฒเปเบเบปเปเบฒเปเบเปเบ cuber เบเบฒเบเบเปเบญเบเบเบฑเปเบ. เบเบดเปเบเปเบเบเบงเปเบฒเบเบฑเปเบ, Google เบกเบตเบเปเบญเบเบเบฒเบเบเบตเปเบญเบธเบเบปเบกเบชเบปเบกเบเบนเบเบซเบผเบฒเบเบเบฒเบเปเบเปเบเบเบชเปเบฒเบเบเบทเปเบเบเบฒเบเบเบญเบเบกเบฑเบ, เปเบเบดเปเบเบเบฐเบกเบตเบเบปเบเบเบฐเบเบปเบเบเบตเปเปเบเบฑเบเบเบฐเปเบซเบเบเบเปเปเบเบงเบฒเบกเปเบงเบเบญเบเบเบฒเบเบเปเบฒเปเบเป.
เปเบเบทเปเบญเปเบเบทเปเบญเบกเบเปเปเบเบฑเบ cloud console, เบเปเบฒเบเบเปเบญเบเบเบฒเบเบชเบญเบเบขเปเบฒเบ: gcloud เปเบฅเบฐเบชเบดเบเบเบฒเบเปเบเบปเปเบฒเปเบเบดเบ Google Cloud API เบชเปเบฒเบฅเบฑเบเบเบปเบงเบขเปเบฒเบ VM เบเบตเปเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบฝเบงเบเบฑเบเบเบตเปเบเบฐเบเบทเบเปเบฎเบฑเบ.
เบชเปเบฒเบฅเบฑเบเบเบนเปเบเบตเปเบงเบฒเบเปเบเบเบเบตเปเบเบฐเปเบเบทเปเบญเบกเบเปเปเบเปเปเปเบเปเบกเบฒเบเบฒเบ Google cloud เปเบฅเบตเบ
Google เบญเบฐเบเบธเบเบฒเบเปเบซเปเบกเบตเบเบงเบฒเบกเปเบเบฑเบเปเบเปเบเปเปเบเบเบฒเบเบเบดเบเบเบฒเบเบญเบฐเบเบธเบเบฒเบเปเบเบเปเบเปเบเบญเบเปเบเบเบฒเบเบเปเบฅเบดเบเบฒเบเบเบญเบเบกเบฑเบ. เบเบตเปเบเบฐเบเปเบงเบเปเบซเปเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบฑเบ console เปเบเปเปเบเบดเบเปเบกเปเบเบงเปเบฒเบเบฒเบเปเบเบทเปเบญเบเบเบฒเปเบ, เบเปเบฒเบกเบฑเบเปเบฅเปเบ *nix เปเบฅเบฐเบกเบต console เบเบปเบงเบกเบฑเบเปเบญเบ.
เบเปเบฒเบเปเบญเบเบเบฒเบเปเบซเปเบเปเบญเบเบเบงเบกเปเบญเบปเบฒเบเบฑเบเบซเบฒเบเบตเปเปเบเบฅเบฒเบเบฅเบฐเบญเบฝเบเปเบเบตเปเบกเปเบเบตเบกเปเบเบเบญเบเบเบญเบเบเบฑเบเบเบถเบเบเบตเป, เบเบฝเบเปเบเบเปเบฒเปเบซเบฑเบ. เบเปเบฒเบเปเบญเบเปเบเปเบฎเบฑเบเบเบฐเปเบเบเบชเบฝเบเบเบฝเบเบเป, เบเปเบญเบเบเบฐเบเบฝเบเบญเบฑเบเปเบเบเบเปเบฝเบงเบเบฑเบเบซเบปเบงเบเปเปเบเบตเป.
เบงเบดเบเบตเบเบตเปเบเปเบฒเบเบเบตเปเบชเบธเบเบเบตเปเบเบฐเปเบซเปเบชเบดเบเบเบดเปเบกเปเบเบเปเบฒเบเบเบฒเบเปเบเปเบเบญเบเบเบญเบเปเบงเบฑเบเปเบเบเป.
- เบขเบธเบเบเบปเบงเบขเปเบฒเบ VM เบเบฒเบเบเบตเปเบเปเปเบกเบฒเบเปเบฒเบเบเบฐเปเบเบทเปเบญเบกเบเปเปเบเบฑเบ cloud console.
- เปเบเบตเบเบฅเบฒเบเบฅเบฐเบญเบฝเบเบเบญเบเบเบปเบงเบขเปเบฒเบ เปเบฅเบฐเบเบฅเบดเบ เบเปเบฝเบเปเบเบ.
- เบขเบนเปเบฅเบธเปเบกเบชเบธเบเบเบญเบเปเปเบฒ, เปเบฅเบทเบญเบเบเบญเบเปเบเบเบเบฒเบเปเบเบปเปเบฒเปเบเบดเบเบเบปเบงเบขเปเบฒเบ เบเบฒเบเปเบเบปเปเบฒเปเบเบดเบ Cloud APIs เบเบฑเบเปเบปเบ.
เบเบฒเบ เปเปเบฒ เบเป
- เบเบฑเบเบเบถเบเบเบฒเบเบเปเบฝเบเปเบเบเบเบญเบเบเปเบฒเบเปเบฅเบฐเปเบเบตเบเบเบปเบงเบขเปเบฒเบ.
เปเบกเบทเปเบญ VM เบชเปเบฒเปเบฅเบฑเบเบเบฒเบเปเบซเบผเบ, เปเบเบทเปเบญเบกเบเปเปเบเบฑเบเบกเบฑเบเบเปเบฒเบ SSH เปเบฅเบฐเปเบซเปเปเบเปเปเบเบงเปเบฒเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเปเบเบตเบเบเบถเปเบเปเบเบเบเปเปเบกเบตเบเบงเบฒเบกเบเบดเบเบเบฒเบ. เปเบเปเบเปเบฒเบชเบฑเปเบ:
gcloud alpha cloud-shell ssh
เบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบตเปเบเบฐเบชเบปเบเบเบปเบเบชเปเบฒเปเบฅเบฑเบเปเบเบดเปเบเบเบทเบงเปเบฒเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเปเบเบฑเปเบเบเบตเป
เบเบณเปเบเปเบเบฑเบ GKE
เปเบเบทเปเบญเบเบเบฒเบเบเบงเบเปเบฎเบปเบฒเบเปเบฒเบฅเบฑเบเบเบฐเบเบฒเบเบฒเบกเปเบเบเบธเบเบงเบดเบเบตเบเบฒเบเบเบตเปเปเบเบฑเบเปเบเปเบเปเปเบเบทเปเบญเบเปเบฝเบเปเบเบฑเบ IaC (เปเบเบเบชเปเบฒเบเบเบทเปเบเบเบฒเบเปเบเบฑเบเบฅเบฐเบซเบฑเบ), เปเบเบฅเป docker เบเบญเบเบเบงเบเปเบฎเบปเบฒเบเบทเบเปเบเบฑเบเปเบงเปเปเบ Git. เบเบตเปเปเบกเปเบเบขเบนเปเปเบเบกเบทเบซเบเบถเปเบ. เปเบฅเบฐเบเบฒเบเบเปเบฒเปเบเปเปเบ kubernetes เบเบทเบเบญเบฐเบเบดเบเบฒเบเปเบเบเปเบเบฅเป yaml, เปเบเบดเปเบเบเบทเบเบเปเบฒเปเบเปเบเบฝเบเปเบเปเปเบเบเบงเบฝเบเบเบฒเบเบเบตเป, เปเบเบดเปเบเบเบปเบงเบกเบฑเบเปเบญเบเบเบฑเบเบเปเบฒเบเบเบทเบฅเบฐเบซเบฑเบ. เบเบตเปเปเบกเปเบเบกเบฒเบเบฒเบเบญเบตเบเบเปเบฒเบเบซเบเบถเปเบ. เปเบเบเบเบปเปเบงเปเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเบซเบกเบฒเบเบเบงเบฒเบกเบงเปเบฒ, เปเบเบเบเบฒเบเปเบกเปเบเบเบตเป:
- เบเบงเบเปเบฎเบปเบฒเปเบญเบปเบฒเบเปเบฒเบเบญเบเบเบปเบงเปเบ BUILD_VERSION เปเบฅเบฐ, เบเบฒเบเปเบฅเบทเบญเบ, เบเปเบฒเบเบญเบเบเบปเบงเปเบเบเบตเปเบเบฐเบเปเบฒเบ ENV.
- เบเบฒเบงเปเบซเบฅเบ dockerfile เบเบฒเบ Git.
- เบชเปเบฒเบ yaml เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเปเบฒเปเบเป.
- เบเบงเบเปเบฎเบปเบฒเบญเบฑเบเปเบซเบฅเบเบเบฑเบเบชเบญเบเปเบเบฅเปเบเบตเปเบเปเบฒเบ scp เปเบเบเบตเป cloud console.
- เบเบงเบเปเบฎเบปเบฒเบชเปเบฒเบเบเบนเปเบเบญเบเปเบเบเปเบเบตเบขเบนเปเบเบตเปเบเบฑเปเบเปเบฅเบฐเบเบนเปเบกเบฑเบเปเบเบปเปเบฒเปเบเปเบเบเบฐเบเบฝเบ Container
- เบเบงเบเปเบฎเบปเบฒเบเปเบฒเปเบเปเปเบเบฅเปเบเบฒเบเบเบดเบเบเบฑเปเบเบเบฒเบเปเบซเบผเบเบเบฑเบ cuber.
เปเบซเปเบกเบตเบเบงเบฒเบกเบชเบฐเปเบเบฒเบฐเบซเบผเบฒเบ. เปเบกเบทเปเบญเบเบงเบเปเบฎเบปเบฒเปเบฅเบตเปเบกเบเบปเปเบเปเบงเบปเปเบฒเบเปเบฝเบงเบเบฑเบ ENV, เปเบฅเปเบงเบชเบปเบกเบกเบธเบเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเปเบเปเบฒเบเบเปเบฒเบเบญเบเบชเบญเบเบเบปเบงเบเปเบฒเบเบปเบเบเบฒเบ: PARAM1 ะธ PARAM2. เบเบงเบเปเบฎเบปเบฒเปเบเบตเปเบกเบงเบฝเบเบเบฒเบเบเบญเบเปเบเบปเบฒเปเบเบปเปเบฒเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเปเบฒเปเบเป, เบเบฐเปเบเบ - เบเบปเบงเบเปเบฒเบเบปเบเบเบฒเบเบชเบฒเบ.
เบเบฒเบ เปเปเบฒ เบเป
เบเบงเบเปเบฎเบปเบฒเบเบฐเบชเปเบฒเบ yaml เบเปเบงเบเบเบฒเบเบเปเบฝเบเปเบชเบฑเปเบเบเบฒเบเบเปเบฒเบเป echo เบเบทเปเบ. เปเบเปเบเบญเบ, เบกเบฑเบเปเบกเปเบเบชเบปเบกเบกเบธเบเบงเปเบฒเบเปเบฒเบเบกเบตเบขเบนเปเปเบ dockerfile เบเบญเบเบเปเบฒเบ PARAM1 ะธ PARAM2เบงเปเบฒเบเบทเปเบเบฒเบเปเบซเบผเบเบเบฐเปเบเบฑเบ เปเบญเบฑเบเบเบตเปเบเบญเบเบขเปเบฝเบก, เปเบฅเบฐเบเบฑเบเบเบธเบเบฐเบเบญเบเบเบฑเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเบญเบเบชเบฐเบเบฑเบเบเบตเปเบฅเบฐเบเบธเปเบงเปเบขเบนเปเปเบ เบเบฐเบเบฝเบเบเบนเปเบเบญเบเปเบเบเปเบเบต เบเปเบฒโเบฅเบฑเบโเปเบ gcr.io/awesomeapp/awesomeapp-$BUILD_VERSIONเบเปเบญเบเบเบตเป $BUILD_VERSION เปเบเปเบเบทเบเปเบฅเบทเบญเบเบเบฝเบเปเบเปเบเบฒเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเปเบฅเบทเปเบญเบเบฅเบปเบ.
เบฅเบฒเบเบเบทเปเบเบตเบก
touch deploy.yaml
echo "apiVersion: apps/v1" >> deploy.yaml
echo "kind: Deployment" >> deploy.yaml
echo "metadata:" >> deploy.yaml
echo " name: awesomeapp" >> deploy.yaml
echo "spec:" >> deploy.yaml
echo " replicas: 1" >> deploy.yaml
echo " selector:" >> deploy.yaml
echo " matchLabels:" >> deploy.yaml
echo " run: awesomeapp" >> deploy.yaml
echo " template:" >> deploy.yaml
echo " metadata:" >> deploy.yaml
echo " labels:" >> deploy.yaml
echo " run: awesomeapp" >> deploy.yaml
echo " spec:" >> deploy.yaml
echo " containers:" >> deploy.yaml
echo " - name: awesomeapp" >> deploy.yaml
echo " image: gcr.io/awesomeapp/awesomeapp-$BUILD_VERSION:latest" >> deploy.yaml
echo " env:" >> deploy.yaml
echo " - name: PARAM1" >> deploy.yaml
echo " value: $PARAM1" >> deploy.yaml
echo " - name: PARAM2" >> deploy.yaml
echo " value: $PARAM2" >> deploy.yaml
เบเบปเบงเปเบเบ Jenkins เบซเบผเบฑเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบฒเบเบเปเบฒเปเบเป gcloud alpha cloud-shell ssh เปเปเบเปเบเปเบเบญเบเบเปเปเบชเบฒเบกเบฒเบเปเบเปเปเบเป, เบเบฑเปเบเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒเบเบถเปเบเบชเบปเปเบเบเบณเบชเบฑเปเบเปเบเบซเบฒ cloud console เปเบเบเปเบเปเบเบฒเบฅเบฒเบกเบดเปเบเบต -- เบเปเบฒเบชเบฑเปเบ.
เบเบงเบเปเบฎเบปเบฒเปเบฎเบฑเบเบเบงเบฒเบกเบชเบฐเบญเบฒเบเปเบเบเปเบเบตเบซเบผเบฑเบเปเบ cloud console เบเบฒเบ dockerfile เปเบเบปเปเบฒ:
gcloud alpha cloud-shell ssh --command="rm -f Dockerfile"
เบงเบฒเบ dockerfile เบเบตเปเบเบฒเบงเปเบซเบผเบเบกเบฒเปเปเปเปเบขเบนเปเปเบเปเบเบเปเบเบตเบซเบผเบฑเบเบเบญเบ cloud console เปเบเบเปเบเป scp:
gcloud alpha cloud-shell scp localhost:./Dockerfile cloudshell:~
เบเบงเบเปเบฎเบปเบฒเปเบเบฑเบเบเปเบฒ, เปเบเบฑเบเปเบฅเบฐเบเบธเบเบเบฑเบเปเบซเปเบเบนเปเบเบญเบเปเบเบเปเบเบตเปเบเบเบตเปเบเบฐเบเบฝเบ Container:
gcloud alpha cloud-shell ssh --command="docker build -t awesomeapp-$BUILD_VERSION ./ --build-arg BUILD_VERSION=$BUILD_VERSION --no-cache"
gcloud alpha cloud-shell ssh --command="docker tag awesomeapp-$BUILD_VERSION gcr.io/awesomeapp/awesomeapp-$BUILD_VERSION"
gcloud alpha cloud-shell ssh --command="docker push gcr.io/awesomeapp/awesomeapp-$BUILD_VERSION"
เบเบงเบเปเบฎเบปเบฒเปเบฎเบฑเบเปเบเบฑเปเบเบเบฝเบงเบเบฑเบเบเบฑเบเปเบเบฅเป deployment. เบเบฐโเบฅเบธโเบเบฒโเบชเบฑเบโเปเบเบโเบงเปเบฒโเบเปเบฒโเบชเบฑเปเบโเบเปเบฒเบโเบฅเบธเปเบกโเบเบตเปโเบเปเบฒโเปเบเปโเบเบทเปโเบเบญเบกโเบเบญเบโเบเบธเปเบกโเบเบตเปโเบเบฒเบโเบเปเบฒโเปเบเปโเปเบเบตเบโเบเบถเปเบ (awsm-cluster) เปเบฅเบฐโเบเบทเปโเปเบเบโเบเบฒเบ (เปเบเบโเบเบฒเบโเบเบตเปโเบซเบเปเบฒโเบซเบงเบฒเบโเบชเบฝเบงโ), เบเปเบญเบเบเบตเปเบเบธเปเบกเบเบฑเปเบเบขเบนเป.
gcloud alpha cloud-shell ssh --command="rm -f deploy.yaml"
gcloud alpha cloud-shell scp localhost:./deploy.yaml cloudshell:~
gcloud alpha cloud-shell ssh --command="gcloud container clusters get-credentials awsm-cluster --zone us-central1-c --project awesome-project &&
kubectl apply -f deploy.yaml"
เบเบงเบเปเบฎเบปเบฒเบเปเบฒเปเบเบตเบเบงเบฝเบเบเบฒเบ, เปเบเบตเบเบเบปเบเบเบฐเบฅเบดเบเบเบญเบ console เปเบฅเบฐเบซเบงเบฑเบเบงเปเบฒเบเบฐเปเบซเบฑเบเบเบฒเบเบเบฐเบเบญเบเบเบฒเบเบฐเบเบฐเบเบตเปเบเบฐเบชเบปเบเบเบปเบเบชเปเบฒเปเบฅเบฑเบ.
เบเบฒเบ เปเปเบฒ เบเป
เปเบฅเบฐโเบซเบผเบฑเบโเบเบฒเบโเบเบฑเปเบโเบเบฒเบโเบเบฐโเบเบดโเบเบฑเบโเบชเบปเบโเบเบปเบโเบชเปเบฒโเปเบฅเบฑเบโเบเบญเบโเบเบฒโเบเบฐโเบเบฐโเบเบฐโเบเบญเบโ
เบเบฒเบ เปเปเบฒ เบเป
เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเบเบเบฐเบเบฒเบเปเปเบชเบปเบเปเบเบเบฒเบเบเบฑเปเบเบเปเบฒ Ingress. เบชเปเบฒเบฅเบฑเบเปเบซเบเบเบปเบเบเปเบฒเบเบเบฒเบเบซเบเบถเปเบ: เปเบกเบทเปเบญเบเปเบฒเบเบเบฑเปเบเบกเบฑเบเบเบถเปเบ เบเบฒเบฅเบฐเบงเบฝเบ เบเปเบงเบเบเบทเปเบเบตเปเบฅเบฐเบเบธเปเบงเป, เบกเบฑเบเบเบฐเบเบฑเบเบเบปเบเบเบฐเบเบดเบเบฑเบเปเบเป, เบเปเปเบงเปเบฒเบเปเบฒเบเบเบฐเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเบฑเปเบเบเบทเปเบเบตเปเบซเบผเบฒเบเบเบฒเบเปเบ. เบเบต, เปเบเบเบเบปเปเบงเปเบ, เบเบตเปเปเบกเปเบเปเบฅเบฑเบเบเปเบญเบเปเบเบตเบเบเบญเบเปเบเบเบเบญเบเบเบฐเบซเบงเบฑเบเบชเบฒเบ.
เปเบเบเบเบตเปเบเบฐเบชเบฐเบซเบฅเบธเบ
เบเบฑเปเบเบเบญเบเบเปเบฒเบเปเบเบดเบเบเบตเปเบญเบฒเบเบเบฐเบเปเปเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเป, เปเบเปเบเบฝเบเปเบเปเบเบดเบเบเบฑเปเบ plugin เบเบฒเบเบชเปเบฒเบฅเบฑเบ Jenkins, muuulion เบเบญเบเปเบเบปเบฒเปเบเบปเปเบฒ. เปเบเปเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบซเบเบเบปเบเบเปเบญเบเบเปเปเบกเบฑเบ plugins. เบเบต, เบซเบผเบฒเบเบเบตเปเบเบฑเบเปเบเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒ resort เบเบฑเบเบเบงเบเปเบเบปเบฒเบเบฝเบเปเบเปเบญเบญเบเบเบฒเบ desperation.
เปเบฅเบฐเบเปเบญเบเบเบฝเบเปเบเปเบขเบฒเบเปเบญเบปเบฒเบซเบปเบงเบเปเปเปเบซเบกเปเบชเปเบฒเบฅเบฑเบเบเปเบญเบ. เบเปเปเบเบงเบฒเบกเบเปเบฒเบเปเบเบดเบเบเบฑเบเปเบเบฑเบเบงเบดเบเบตเบเบตเปเบเบฐเปเบเปเบเบเบฑเบเบเบฒเบเบเบปเปเบเบเบปเบเบเบตเปเบเปเบญเบเปเบเปเปเบฎเบฑเบเปเบเบเบฐเบเบฐเบเบตเปเปเบเปเปเบเบเบฑเบเบซเบฒเบเบตเปเปเบเปเบญเบฐเบเบดเบเบฒเบเปเบเบเบญเบเปเบฅเบตเปเบกเบเบปเปเบ. เปเบเปเบเบเบฑเบเบเบฑเบเบเบนเปเบเบตเป, เปเบเบฑเปเบเปเบเบปเบฒ, เบเปเปเปเบกเปเบ wolf เบฎเปเบฒเบเปเบฎเบเบขเบนเปเปเบ devops. เบเปเบฒเบเบฒเบเบเบปเปเบเบเบปเบเบเบญเบเบเปเบญเบเบเปเบงเบเบขเปเบฒเบเบซเบเปเบญเบเบเบฒเบเบเบปเบ, เบเปเบญเบเบเบฐเบกเบตเบเบงเบฒเบกเบชเบธเบ.
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com