GitLab-เดจเตเดฑเต เดธเตเดเดจเตเดฏ เดชเดคเดฟเดชเตเดชเดฟเตฝ เดเดฒเตเดฒเดพเดคเตเดค เดเดฑเตเดฑเดตเตเด เดเดตเดถเตเดฏเดฎเดพเดฏ เดซเดเดเตโเดทเดจเตเดเดณเดฟเตฝ เดเดจเตเดจเต, เดจเดฟเตผเดฌเดจเตเดงเดฟเดค เดเตเดกเต เด
เดตเดฒเตเดเดจเด เดเดชเดฏเตเดเดฟเดเตเดเต เดฑเดฟเดชเตเดชเตเดธเดฟเดฑเตเดฑเดฑเดฟ เด
เดธเดพเดงเตเดตเดพเดเตเดเดฒเดฟเดจเตเดคเดฟเดฐเต เดตเตเดเตเดเตเดเตเดฏเตเดฏเดพเดจเตเด เดฒเดฏเดฟเดชเตเดชเดฟเดเตเดเดพเดจเตเดณเตเดณ เด
เดญเตเดฏเตผเดคเตเดฅเดจ (MR) เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเดเตเดเดพเดจเตเดฎเตเดณเตเดณ เดเดดเดฟเดตเดพเดฃเต.
เดเดฑเตเดฑเดตเตเด เดเตเดฑเดเตเด เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดทเดฎเดค เดจเดฎเตเดเตเดเต เดธเตเดตเดฏเด เดเตเดฏเตเดฏเดพเด - เดจเดฟเดฐเดตเดงเดฟ เดกเตเดตเดฒเดชเตเดชเตผเดฎเดพเตผ MR-เดจเต เดคเดเดฌเตเดธเต เด
เดชเตเดชเต เดจเตฝเดเตเดจเตเดจเดคเต เดตเดฐเต เดเดเตเดเตพ เดฒเดฏเดฟเดเตเดเตเดจเตเดจเดคเต เดจเดฟเดฐเตเดงเดฟเดเตเดเตเด.
เดเดจเตเดคเตเดเตเดฃเตเดเดพเดฃเต เดเดคเต เดชเตเดฒเตเด เดเดตเดถเตเดฏเดฎเดพเดฏเดฟ เดตเดฐเตเดจเตเดจเดคเต?
เดเดฐเต GitLab เดฒเตเดธเตปเดธเต เดตเดพเดเตเดเดพเตป เดเดเตเดเดณเตเดเต เดธเตเดฅเดพเดชเดจเดคเตเดคเดฟเดจเต เดเดณเตเดชเตเดชเดคเตเดคเดฟเตฝ เดเดดเดฟเดฏเตเด. เดชเดเตเดทเต, เดเตปเดฑเตผเดจเตเดฑเตเดฑเต เดเดเตโเดธเดธเต เดเดฒเตเดฒเดพเดคเต เดเดฐเต เด เดเดเตเด เดฒเตเดชเตเดชเดฟเดฒเดพเดฃเต เดตเดฟเดเดธเดจเด เดจเดเดเตเดเตเดจเตเดจเดคเต, เดเตเดเดพเดคเต เดเตผเดถเดจเดฎเดพเดฏ เดฌเดเดฑเตเดฑเต เดเดธเตเดคเตเดฐเดฃเด เดเดณเตเดณเดคเดฟเดจเดพเตฝ, เดเดตเดถเตเดฏเดฎเดพเดฏ เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดทเดฎเดคเดฏเตเดณเตเดณ เดธเตเดตเดฏเด เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเดค เดฒเตเดธเตปเดธเตเดเตพ เดตเดพเดเตเดเตเดจเตเดจเดคเต เดฎเดพเดธเดเตเดเดณเตเดณเด เดตเดฒเดฟเดเตเดเดฟเดเดพเด, เดชเดเตเดทเต เดเดชเตเดชเตเตพ เดเตเดฒเดฟ เดเตเดฏเตเดฏเตเดฃเตเดเดคเตเดฃเตเดเต.
เดซเดฒเดฎเดพเดฏเดฟ เดจเดฟเดเตเดเตพ เดเตเดฏเตเดฏเตเดฃเตเดเดคเต:
- เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดเดฟเดฒ เดกเตเดตเดฒเดชเตเดชเตผเดฎเดพเตผเดเตเดเดพเดฏเดฟ เดธเดเดฐเดเตเดทเดฟเดค เดถเดพเดเดเดณเดฟเตฝ เดฒเดฏเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเต เดชเตเตผเดฃเตเดฃเดฎเดพเดฏเตเด เดจเดฟเดฐเตเดงเดฟเดเตเดเตเด, เดเดจเตเดจเดพเตฝ เดชเดฟเดจเตเดจเตเดเต เดฒเดฏเดฟเดชเตเดชเดฟเดเตเดเดพเดจเตเดณเตเดณ เด เดตเดเดพเดถเดฎเตเดณเตเดณ เดกเตเดตเดฒเดชเตเดชเตผเดฎเดพเตผเดเตเดเต เดฎเดฑเตเดฑเต เดเดณเตเดเดณเตเดเต MR-เดเตพ เดฌเตเดฃเดธเดพเดฏเดฟ เดฒเดฏเดฟเดชเตเดชเดฟเดเตเดเตเดฎเตเดชเตเตพ เดตเตเดฐเตเดฆเตเดงเตเดฏเดเตเดเตพ เดฒเดญเดฟเดเตเดเตเด;
- เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดเตเดกเต เด เดตเดฒเตเดเดจเด เดเตเดเดพเดคเต เดจเดฟเดเตเดเดณเตเดเต เดฎเดพเดธเตเดฑเตเดฑเตผ เดฌเตเดฐเดพเดเตเดเตเดฎเดพเดฏเดฟ เด เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเดคเดฎเดพเดฏ เดฒเดฏเดจเดเตเดเตพ เดจเดเดคเตเดคเดพเดจเตเดณเตเดณ เด เดตเดธเดฐเด เดจเตฝเดเตเด, เด เดคเต เดเดจเตเดจเดฒเต เดเตเดฒเดฟเดเตเดเตเดเตเดคเตเดค เดเตเดจเดฟเดฏเตผ เดเดฃเตเดเตเดเดฟเดฒเตเด.
เดเดพเตป เดเดฆเตเดฏเด เดเตเดฏเตเดคเดคเต Google เดเดฃเต, เดเดฐเตเดเตเดเดฟเดฒเตเด เดคเตเตผเดเตเดเดฏเดพเดฏเตเด เดธเดฎเดพเดจเดฎเดพเดฏ เดเดจเตเดคเตเดเตเดเดฟเดฒเตเด (เดเตเดกเต เดชเดฐเดฟเดทเตโเดเตเดเดฐเดฟเดเตเดเดพเดคเต) เดเดคเดฟเดจเดเด เดเตเดฏเตเดคเดฟเดเตเดเตเดฃเตเดเตเดจเตเดจเต เดตเดฟเดถเตเดตเดธเดฟเดเตเดเต, เดเดจเตเดจเดพเตฝ เดเดฎเตเดฎเตเดฏเตเดฃเดฟเดฑเตเดฑเดฟ เดชเดคเดฟเดชเตเดชเดฟเตฝ เดเดคเตเดตเดฐเต เด เดคเตเดคเดฐเด เดจเดเดชเตเดชเดพเดเตเดเตฝ เดเดฒเตเดฒเตเดจเตเดจเต เดฎเดจเดธเตเดธเดฟเดฒเดพเดฏเดฟ.
เดเตเดฒเดฟเดฏเตเดเต เดชเตเดคเต เดชเดฆเตเดงเดคเดฟ
เดเดฐเต เดเดฆเดพเดนเดฐเดฃเดฎเดพเดฏเดฟ, เดเดฐเต เดเตเดธเตเดฑเตเดฑเต เดฑเดฟเดชเตเดชเตเดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเตฝ เดฒเดฏเดจ เด
เดญเตเดฏเตผเดคเตเดฅเดจ เด
เดเดเตเดเดพเดฐเดเตเดเตพ เดเตเตบเดซเดฟเดเตผ เดเตเดฏเตเดฏเดพเด
- GitLab API-เดฏเดฟเดฒเตเดเตเดเตเดณเตเดณ เดเดเตโเดธเดธเดฟเดจเดพเดฏเดฟ เดจเดฎเตเดเตเดเต เดเดฐเต เดเตเดเตเดเตบ เดธเตเดทเตโเดเดฟเดเตเดเดพเด (เด เดคเดฟเดฒเตเดเต "เดจเตเดเตเดเต", "เดเดคเดฟเดฐเดพเดฏ" เดตเตเดเตเดเตเดเดณเตเดเต เดเดฃเตเดฃเดคเตเดคเตเดเตเดเตเดฑเดฟเดเตเดเตเดณเตเดณ เดตเดฟเดตเดฐเดเตเดเตพ เดจเดฎเตเดเตเดเต เดฒเดญเดฟเดเตเดเตเด)
- เดจเดฎเตเดเตเดเต GitLab เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดเดณเดฟเดฒเตเดเตเดเต เดเตเดเตเดเตบ เดเตเตผเดเตเดเดพเด
- เดชเตเดชเตเดชเตโเดฒเตเดจเดฟเตฝ เดชเดฟเดถเดเตเดเตพ เดเดฃเตเดเดพเดฏเดพเตฝ เดฒเดฏเดจเด เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเดเตเดเดพเด (เดฎเดคเดฟเดฏเดพเดฏ เด เดจเตเดเตเดฒ เดตเตเดเตเดเตเดเตพ เดเดฒเตเดฒเตเดเตเดเดฟเตฝ)
- CI/CD เดชเตเดชเตเดชเตโเดฒเตเดจเดฟเดจเตเดฑเต เดญเดพเดเดฎเดพเดฏเดฟ เดตเตเดเตเดเต เดชเดฐเดฟเดถเตเดงเดจ เดธเดเตเดเตเดเดฐเดฟเดเตเดเดพเด
- เดธเดเดฐเดเตเดทเดฟเดค เดถเดพเดเดเดณเดฟเตฝ เดเดฎเตเดฎเดฟเดฑเตเดฑเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเต เดเดเตเดเตพ เดจเดฟเดฐเตเดงเดฟเดเตเดเตเดจเตเดจเต; เดเดฒเตเดฒเดพ เดฎเดพเดฑเตเดฑเดเตเดเดณเตเด MR เดฎเตเดเตเดจ เดฎเดพเดคเตเดฐเดฎเดพเดฃเต เดตเดฐเตเดคเตเดคเตเดจเตเดจเดคเต
- เด เดตเดธเดพเดจเด เดเดจเตเดคเดพเดฃเต เดธเดเดญเดตเดฟเดเตเดเดคเตเดจเตเดจเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเดพเด
1. API เดเดเตโเดธเดธเต เดเตเดฏเตเดฏเดพเตป เดเดฐเต เดเตเดเตเดเตบ เดธเตเดทเตโเดเดฟเดเตเดเตเด
เดเดชเดฏเตเดเตเดคเต เดเตเดฐเดฎเตเดเดฐเดฃเดเตเดเตพ โ เดเดเตเดธเดธเต เดเตเดเตเดเดฃเตเดเดณเดฟเดฒเตเดเตเดเต เดชเตเดฏเดฟ เดเตเดเตเดเตบ เดเดดเตเดคเตเด:
เดเดฐเต เดเตเดเตเดเตบ เดฒเดญเดฟเดเตเดเดพเตป เด
เดเตเดเตเดฃเตเดเต
เดจเดฟเดเตเดเดณเตเดเต เดฑเดฟเดชเตเดชเตเดธเดฟเดฑเตเดฑเดฑเดฟเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเต เดฎเดฟเดเตเดเดตเดพเดฑเตเด เดเดจเตเดคเตเด เดเตเดฏเตเดฏเดพเตป API เดเดเตโเดธเดธเต เดจเดฟเดเตเดเดณเต เด
เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต, เด
เดคเดฟเดจเดพเตฝ เดเดฐเต เดชเตเดฐเดคเตเดฏเตเด Gitlab เด
เดเตเดเตเดฃเตเดเต เดธเตเดทเตโเดเดฟเดเตเดเดพเดจเตเด เดจเดฟเดเตเดเดณเตเดเต เดฑเดฟเดชเตเดชเตเดธเดฟเดฑเตเดฑเดฑเดฟเดเตพเดเตเดเต (เดเดฆเดพ. เดฑเดฟเดชเตเดชเตเตผเดเตเดเตผ) เดเตเดฑเดเตเด เด
เดตเดเดพเดถเดเตเดเตพ เดจเตฝเดเดพเดจเตเด เด เด
เดเตเดเตเดฃเตเดเดฟเดจเดพเดฏเดฟ เดเดฐเต เดเตเดเตเดเตบ เดจเตเดเดพเดจเตเด เดเดพเตป เดถเตเดชเดพเตผเดถ เดเตเดฏเตเดฏเตเดจเตเดจเต.
2. Gitlab เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดเดณเดฟเดฒเตเดเตเดเต เดเตเดเตเดเตบ เดเตเตผเดเตเดเตเด
เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดฎเตเดฎเตเดชเดคเตเดคเต เดเดเตเดเดคเตเดคเดฟเตฝ เดเดเตเดเตพเดเตเดเต เดเดฐเต เดเตเดเตเดเตบ เดฒเดญเดฟเดเตเดเต QmN2Y0NOUFlfeXhvd21ZS01aQzgK
เดเตเดฐเดฎเตเดเดฐเดฃเดเตเดเตพ เดคเตเดฑเดเตเดเตเด โ CI/CD โ เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดเตพ โ เดตเตเดฐเดฟเดฏเดฌเดฟเตพ เดเตเตผเดเตเดเตเด โ GITLAB_TOKEN_FOR_CI
เดซเดฒเดฎเดพเดฏเดฟ เดจเดฎเตเดเตเดเต เดฒเดญเดฟเดเตเดเตเดจเตเดจเดคเต:
เดเดคเต เดเดฐเต เดฑเดฟเดชเตเดชเตเดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเดฒเต เดเดฐเต เดเตเดเตเดเด เดฑเดฟเดชเตเดชเตเดธเดฟเดฑเตเดฑเดฑเดฟเดเดณเดฟเดฒเต เดเตเดฏเตเดฏเดพเด.
3. เดเตเดกเต เด เดตเดฒเตเดเดจเดคเตเดคเดฟเดจเต เดถเตเดทเด เดธเดนเดชเตเดฐเดตเตผเดคเตเดคเดเดฐเตเดเต เด เดเดเตเดเดพเดฐเด เดฒเดญเดฟเดเตเดเดฟเดฒเตเดฒเตเดเตเดเดฟเตฝ เดเดเตเดเตพ เดฒเดฏเดจเดคเตเดคเดฟเดจเต เดจเดฟเดฐเตเดงเดจเด เดเตผเดชเตเดชเตเดเตเดคเตเดคเตเด.
เดเดเตเดเดณเตเดเต เดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดฎเดคเดฟเดฏเดพเดฏ เดตเตเดเตเดเตเดเตพ เดเดฒเตเดฒเตเดเตเดเดฟเตฝ เด เดธเดเดฌเตเดฒเดฟ เดชเตเดชเตเดชเตเดฒเตเตป เดเดฐเต เดชเดฟเดถเดเต เดจเตฝเดเตเด เดเดจเตเดจเดคเดพเดฃเต เดฒเดฏเดจ เดจเดฟเดฐเตเดงเดจเด.
เดเตเดฐเดฎเตเดเดฐเดฃเดเตเดเตพ โ เดชเตเดคเตเดตเดพเดฏ โ เด เดญเตเดฏเตผเดคเตเดฅเดจเดเตพ เดฒเดฏเดฟเดชเตเดชเดฟเดเตเดเตเด โ เดชเดฐเดฟเดถเตเดงเดจเดเตพ เดฒเดฏเดฟเดชเตเดชเดฟเดเตเดเตเด เดเดจเตเดจเดคเดฟเดฒเตเดเตเดเต เดชเตเดฏเดฟ เด เดธเดเดฌเตเดฒเดฟ เดฒเตเดจเตเดเตพ เดตเดฟเดเดฏเดเดฐเดฎเดพเดฏเดฟ เดชเตเตผเดคเตเดคเดฟเดฏเดพเดเตเดเตเดฃเตเด เดเดชเตเดทเตป เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดทเดฎเดฎเดพเดเตเดเตเด.
4. เดชเตเดชเตเดชเตเดฒเตเตป เดธเตเดฅเดพเดชเดฟเดเตเดเตฝ
เดจเดฟเดเตเดเดณเตเดเต เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเดพเดฏเดฟ เดจเดฟเดเตเดเตพ เดเดคเตเดตเดฐเต เดเดฐเต CI/CD เดชเตเดชเตเดชเตเดฒเตเตป เดธเตเดทเตเดเดฟเดเตเดเดฟเดเตเดเดฟเดฒเตเดฒเตเดเตเดเดฟเตฝ
เดฑเดฟเดชเตเดชเตเดธเดฟเดฑเตเดฑเดฑเดฟเดฏเตเดเต เดฑเตเดเตเดเดฟเตฝ เดเดฐเต เดซเดฏเตฝ เดธเตเดทเตเดเดฟเดเตเดเตเด .gitlab-ci.yml เดเดฑเตเดฑเดตเตเด เดฒเดณเดฟเดคเดฎเดพเดฏ เดเดณเตเดณเดเดเตเดเดคเตเดคเตเดเต:
stages:
- build
- test
variables:
NEED_VOTES: 1
include:
- remote: "https://gitlab.com/gitlab-ce-mr-approvals/ci/-/raw/master/check-approve.gitlab-ci.yml"
run-myapp:
stage: build
script: echo "Hello world"
CI/CD เดเตเตบเดซเดฟเดเดฑเตเดทเดจเดพเดฏเดฟ เดชเตเดฐเดคเตเดฏเตเด เดถเตเดเดฐเด
เดชเตเดชเตเดชเตโเดฒเตเตป เดเตเตบเดซเดฟเดเตผ เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต เดจเดฟเดเตเดเตพ เดเดฐเต myapp.gitlab-ci.yml เดซเดฏเตฝ เดธเตเดทเตเดเดฟเดเตเดเตเดฃเตเด เดเดฐเต เดชเตเดฐเดคเตเดฏเตเด เดถเตเดเดฐเด เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเดพเตป เดเดพเตป เดถเตเดชเดพเตผเดถ เดเตเดฏเตเดฏเตเดจเตเดจเต. เดเดคเตเดตเดดเดฟ เดฌเดฟเตฝเดกเต เดชเตเดชเตเดชเตโเดฒเตเตป เดฎเดพเดฑเตเดฑเดพเดจเตเด เดเดเตโเดธเดธเต เดเตเดเตเดเตบ เดธเตเดตเตเดเดฐเดฟเดเตเดเดพเดจเตเด เดเดดเดฟเดฏเตเดจเตเดจ เดชเดเตเดเดพเดณเดฟเดเดณเตเดเต เดเดเตโเดธเดธเต เดจเดฟเดเตเดเตพเดเตเดเต เดจเดจเตเดจเดพเดฏเดฟ เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเดเตเดเดพเดจเดพเดเตเด.
myapp repository - เดเตเดฐเดฎเตเดเดฐเดฃเดเตเดเตพ - CI/CD - เด เดธเดเดฌเตเดฒเดฟ เดฒเตเดจเตเดเตพ - เดเดทเตโเดเดพเดจเตเดธเตเดค CI เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดชเดพเดคเตเดคเต - เดเดจเตเดจเดคเดฟเดฒเตเดเตเดเต เดชเตเดฏเดฟ เดชเตเดคเดฟเดฏ เดชเตเดชเตเดชเตโเดฒเตเตป เดซเดฏเดฒเดฟเดจเตเดฑเต เดธเตเดฅเดพเดจเด เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต, เดเดฆเดพ. myapp.gitlab-ci.yml@gitlab-ce-mr-approvals/Ci
เดจเตเดฑเตเดเตเดเต: GitLab CI เดซเดฏเดฒเตเดเดณเดฟเตฝ เดฎเดพเดฑเตเดฑเดเตเดเตพ เดตเดฐเตเดคเตเดคเดพเตป เดเดฐเต เดฒเดฟเดจเตเดฑเตผ เดเดชเดฏเตเดเดฟเดเตเดเตเด
เดจเดฟเดเตเดเตพ เดเดฑเตเดฑเดฏเตโเดเตเดเต เดเตเดฒเดฟ เดเตเดฏเตโเดคเดพเดฒเตเด, เดชเตเดชเตเดชเตโเดฒเตเตป เดซเดฏเดฒเตเดเดณเดฟเดฒเตเดเตเดเตเดณเตเดณ เดจเดฟเดเตเดเดณเตเดเต เดเดฒเตเดฒเดพ เดฎเดพเดฑเตเดฑเดเตเดเดณเตเด เดเดฐเต เดฒเดฟเดจเตเดฑเดฑเดฟเดฒเตเดเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเดพเตป MR-เดฒเตเดเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเดคเต เดเดฐเต เดจเดฒเตเดฒ เดธเดนเดพเดฏเดฎเดพเดฏเดฟเดฐเดฟเดเตเดเตเด. YAML เดซเดฏเดฒเดฟเดจเตเดฑเต เดตเดพเดเตเดฏเดเดเดจเดฏเดฟเตฝ เดจเดฟเดเตเดเตพ เดเดฐเต เดคเตเดฑเตเดฑเต เดตเดฐเตเดคเตเดคเดฟเดฏเดพเตฝ, เด
เดคเต เดจเดฟเดเตเดเดณเตเดเต เดชเตเดฐเตเดกเดเตเดทเตป เดชเตเดชเตเดชเตเดฒเตเตป เดคเดเตผเดเตเดเดฟเดฒเตเดฒ, เดฎเดฑเดฟเดเตเดเต เดฒเดฏเดจเด เดคเดเดฏเตเด.
เดจเดฟเดเตเดเดณเตเดเต เดชเตเดชเตเดชเตเดฒเตเดจเดฟเตฝ เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเดจเตเดจ เดฒเดฟเดจเตเดฑเดฑเตเดเดณเตเดณเตเดณ เดเดฃเตเดเตเดฏเตเดจเดฑเตเดเดณเตเดเต เดเดฐเต เดเดฆเดพเดนเดฐเดฃเด:
เดเตเดเดพเดคเต เดธเตเดฅเดฟเดฐเตเดเดฐเดฃ เดเดเตเดเดคเตเดคเดฟเดจเตเดฑเต เดเดฐเต เดเดฆเดพเดนเดฐเดฃเด:
stages:
- lint
lint:
stage: lint
image: sebiwi/gitlab-ci-validate:1.3.0
variables:
GITLAB_HOST: https://gitlab.com
script:
- CI_FILES=(./*.yml)
- for f in "${CI_FILES[@]}"; do
gitlab-ci-validate $f;
done;
เดเดคเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดจเดฟเดเตเดเดณเตเดเต เดชเตเดชเตเดชเตเดฒเตเดจเดฟเดฒเตเดเตเดเต เดเตเดฑเดเตเดเต เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเตพ เดเตเตผเดเตเดเดพเตป เด เดตเดถเตเดทเดฟเดเตเดเตเดจเตเดจเต:
stages:
- test
variables:
NEED_VOTES: 1
include:
- remote: "https://gitlab.com/gitlab-ce-mr-approvals/ci/-/raw/master/check-approve.gitlab-ci.yml"
NEED_VOTES เดตเตเดฐเดฟเดฏเดฌเดฟเตพ เดฒเดฏเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดเดคเตเดฐ "เดคเดเดฌเตเดธเต เด
เดชเตเดชเต" MR เดเดฃเตเดเดพเดฏเดฟเดฐเดฟเดเตเดเดฃเดฎเตเดจเตเดจเต เดจเดฟเตผเดฃเตเดฃเดฏเดฟเดเตเดเตเดจเตเดจเต. เดเดจเตเดจเดฟเดจเต เดคเตเดฒเตเดฏเดฎเดพเดฏ เดฎเตเดฒเตเดฏเด เด
เตผเดคเตเดฅเดฎเดพเดเตเดเตเดจเตเดจเดคเต "เดเดทเตโเดเดชเตเดชเตเดเตเด" เดตเดดเดฟ เดจเดฟเดเตเดเตพเดเตเดเต เดคเดจเตเดจเต เดจเดฟเดเตเดเดณเตเดเต เดเดเดเตผ เด
เดเดเตเดเดฐเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเด เดเดจเตเดจเดพเดฃเต.
เดเตเดธเตเดฑเตเดฑเต เดเดเตเดเด เดเตพเดชเตเดชเตเดเตเดจเตเดจเต, เด เดคเต "เดฒเตเดเตเดเตเดเดณเตเดเต" เดเดฃเตเดฃเด เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเต.
myapp.gitlab-ci.yml เดเดฆเดพเดนเดฐเดฃเด เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจ เดเดฑเตเดฑเดตเตเด เดฒเดณเดฟเดคเดฎเดพเดฏ เดชเตเดชเตเดชเตเดฒเตเตป
stages:
- build
- test
variables:
NEED_VOTES: 0
include:
- remote: "https://gitlab.com/gitlab-ce-mr-approvals/ci/-/raw/master/check-approve.gitlab-ci.yml"
run-myapp:
stage: build
image: openjdk
script:
- echo CI_MERGE_REQUEST_TARGET_BRANCH_NAME $CI_MERGE_REQUEST_TARGET_BRANCH_NAME
- java HelloWorld.java
เดเดณเตเดณเดเดเตเดเด เดเตเดเตเดเต-approve.gitlab-ci.yml
ci-mr:
stage: test
script:
- echo ${CI_API_V4_URL}
- echo "CI_PROJECT_ID ${CI_PROJECT_ID}"
- echo "CI_COMMIT_SHA ${CI_COMMIT_SHA}"
- "export MR_ID=$(curl --silent --request GET --header "PRIVATE-TOKEN: $GITLAB_TOKEN_FOR_CI" ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/merge_requests | jq ".[] | if .sha == \"${CI_COMMIT_SHA}\" then .id else {} end" | grep --invert-match {})"
- "export MR_TITLE=$(curl --silent --request GET --header "PRIVATE-TOKEN: $GITLAB_TOKEN_FOR_CI" ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/merge_requests | jq ".[] | if .sha == \"${CI_COMMIT_SHA}\" then .title else {} end" | grep --invert-match {})"
- "export MR_WIP=$(curl --silent --request GET --header "PRIVATE-TOKEN: $GITLAB_TOKEN_FOR_CI" ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/merge_requests | jq ".[] | if .sha == \"${CI_COMMIT_SHA}\" then .work_in_progress else {} end" | grep --invert-match {})"
- "export MR_UPVOTES=$(curl --silent --request GET --header "PRIVATE-TOKEN: $GITLAB_TOKEN_FOR_CI" ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/merge_requests | jq ".[] | if .sha == \"${CI_COMMIT_SHA}\" then .upvotes else {} end" | grep --invert-match {})"
- "export MR_DOWNVOTES=$(curl --silent --request GET --header "PRIVATE-TOKEN: $GITLAB_TOKEN_FOR_CI" ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/merge_requests | jq ".[] | if .sha == \"${CI_COMMIT_SHA}\" then .downvotes else {} end" | grep --invert-match {})"
- MR_VOTES=$(expr ${MR_UPVOTES} - ${MR_DOWNVOTES})
- NEED_VOTES_REAL=${NEED_VOTES:-1}
- echo "MR_ID ${MR_ID} MR_TITLE ${MR_TITLE} MR_WIP ${MR_WIP} MR_UPVOTES ${MR_UPVOTES} MR_DOWNVOTES ${MR_DOWNVOTES}"
- echo "MR_VOTES ${MR_VOTES} Up vote = 1, down vote = -1, MR OK if votes >=${NEED_VOTES_REAL}"
- if [ "${MR_VOTES}" -ge "$(expr ${NEED_VOTES_REAL})" ];
then
echo "MR OK";
else
echo "MR ERROR Need more votes";
exit 1;
fi
image: laptevss/gitlab-api-util
rules:
- if: '$CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "master" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME =~ /^release/.*$/'
เดธเตเดฅเดฟเดฐเตเดเดฐเดฃ เดธเดฎเดฏเดคเตเดคเต เดเดจเตเดคเดพเดฃเต เดธเดเดญเดตเดฟเดเตเดเตเดจเตเดจเดคเต เดเดจเตเดจเดคเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเตเดณเตเดณ เดเตเดเตเดคเตฝ เดตเดฟเดตเดฐเดเตเดเตพ:
- เดฎเดพเดธเตเดฑเตเดฑเดฑเดฟเดฒเต เดฑเดฟเดฒเตเดธเต/* เดฌเตเดฐเดพเดเตเดเตเดเดณเดฟเดฒเต MR เดธเตเดทเตโเดเดฟเดเตเดเตเดฎเตเดชเตเตพ เดฎเดพเดคเตเดฐเดฎเต เดชเดฐเดฟเดถเตเดงเดจ เดจเดเดคเตเดคเต เดเดจเตเดจเตเดฐเต เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเดฎเตเดฃเตเดเต
- GitLab API เดเดชเดฏเตเดเดฟเดเตเดเต, "เดเดทเตโเดเดเตเดเตพ", "เดกเดฟเดธเตโเดฒเตเดเตเดเตเดเตพ" เดเดจเตเดจเดฟเดตเดฏเตเดเต เดเดฃเตเดฃเด เดจเดฎเตเดเตเดเต เดฒเดญเดฟเดเตเดเตเด
- เดชเตเดธเดฟเดฑเตเดฑเตเดตเต, เดจเตเดเดฑเตเดฑเตเดตเต เดชเตเดฐเดคเดฟเดเดฐเดฃเดเตเดเตพ เดคเดฎเตเดฎเดฟเดฒเตเดณเตเดณ เดตเตเดฏเดคเตเดฏเดพเดธเด เดเดฃเดเตเดเดพเดเตเดเตเด
- เดตเตเดฏเดคเตเดฏเดพเดธเด เดเดเตเดเตพ NEED_VOTES เตฝ เดธเดเตเดเตเดเดฐเดฟเดเตเด เดฎเตเดฒเตเดฏเดคเตเดคเตเดเตเดเดพเตพ เดเตเดฑเดตเดพเดฃเตเดเตเดเดฟเตฝ, เดฒเดฏเดฟเดชเตเดชเดฟเดเตเดเดพเดจเตเดณเตเดณ เดเดดเดฟเดตเต เดเดเตเดเตพ เดคเดเดฏเตเด
5. เดธเดเดฐเดเตเดทเดฟเดค เดถเดพเดเดเดณเตเดเตเดณเตเดณ เดชเตเดฐเดคเดฟเดฌเดฆเตเดงเดค เดจเดฟเดฐเตเดงเดฟเดเตเดเตเด
เดเดเตเดเตพ เดเตเดกเต เด เดตเดฒเตเดเดจเดเตเดเตพ เดจเดเดคเตเดคเตเดฃเตเด เดถเดพเดเดเตพ เดเดเตเดเตพ เดจเดฟเตผเดตเตเดตเดเดฟเดเตเดเตเดเดฏเตเด เด เดต MR เดฎเตเดเตเดจ เดฎเดพเดคเตเดฐเดฎเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเดพเดจเดพเดเต เดเดจเตเดจเต เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต.
เดเดคเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดเตเดฐเดฎเตเดเดฐเดฃเดเตเดเตพ โ เดฑเดฟเดชเตเดชเตเดธเดฟเดฑเตเดฑเดฑเดฟ โ เดธเดเดฐเดเตเดทเดฟเดค เดถเดพเดเดเตพ เดเดจเตเดจเดคเดฟเดฒเตเดเตเดเต เดชเตเดเตเด:
6. เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเด
NEED_VOTES เดธเดเตเดเดฎเดพเดเตเดเตเด: 0
เดเดเตเดเตพ เดเดฐเต MR เดเดฃเตเดเดพเดเตเดเดฟ "เดกเดฟเดธเตโเดฒเตเดเตเดเต" เดเดเตเดจเตเดจเต.
เดฌเดฟเตฝเดกเต เดฒเตเดเตเดเดณเดฟเตฝ:
เดเดชเตเดชเตเตพ "เดฒเตเดเตเดเต" เดเดเตเดเต เดตเตเดฃเตเดเตเด เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเดพเตป เดเดฐเดเดญเดฟเดเตเดเตเด:
เด
เดตเดฒเดเดฌเด: www.habr.com