เจธเจญ เจคเฉเจ เจเจผเจฐเฉเจฐเฉ เจตเจฟเจธเจผเฉเจธเจผเจคเจพเจตเจพเจ เจตเจฟเฉฑเจเฉเจ เจเฉฑเจ เจเฉ GitLab เจฆเฉ เจฎเฉเจซเจค เจธเฉฐเจธเจเจฐเจฃ เจตเจฟเฉฑเจ เจจเจนเฉเจ เจนเฉ, เจฒเจพเจเจผเจฎเฉ เจเฉเจก เจธเจฎเฉเจเจฟเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจฎเจฐเจ เจฌเฉเจจเจคเฉ (MR) เจจเฉเฉฐ เจจเจฟเจฏเฉฐเจคเจฐเจฟเจค เจเจฐเจจ เจฒเจ เจฐเจฟเจชเฉเจเจผเจเจฐเฉ เจจเฉเฉฐ เจเจผเฉเจฐเฉ เจเจฐเจจ เจฆเฉ เจตเจฟเจฐเฉเฉฑเจง เจตเฉเจ เจชเจพเจเจฃ เจฆเฉ เจฏเฉเจเจคเจพ เจนเฉเฅค
เจ
เจธเฉเจ เจเฉฑเจเฉ-เจเฉฑเจ เจเจพเจฐเจเจเฉเจธเจผเจฒเจคเจพ เจเฉเจฆ เจเจฐเจพเจเจเฉ - เจ
เจธเฉเจ เจฎเจฐเจ เจจเฉเฉฐ เจ
เจธเจฎเจฐเฉฑเจฅ เจฌเจฃเจพ เจฆเฉเจตเจพเจเจเฉ เจเจฆเฉเจ เจคเฉฑเจ เจเจ เจกเจฟเจตเฉเจฒเจชเจฐ MR เจจเฉเฉฐ "เจฅเฉฐเจฌเจธ เจ
เฉฑเจช" เจจเจนเฉเจ เจฆเจฟเฉฐเจฆเฉเฅค
เจเจน เจธเจญ เจเจฟเจเจ เจนเฉ?
เจธเจพเจกเฉ เจธเฉฐเจธเจฅเจพ GitLab เจฒเจพเจเจธเฉเจเจธ เจเจฐเฉเจฆเจฃ เจฆเฉ เจธเจฎเจฐเฉฑเจฅเจพ เจฐเฉฑเจ เจธเจเจฆเฉ เจนเฉเฅค เจชเจฐ, เจเจฟเจเจเจเจฟ เจตเจฟเจเจพเจธ เจเฉฐเจเจฐเจจเฉเจ เจฆเฉ เจชเจนเฉเฉฐเจ เจคเฉเจ เจฌเจฟเจจเจพเจ เจเฉฑเจ เจฌเฉฐเจฆ เจฒเฉเจช เจตเจฟเฉฑเจ เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉ, เจ เจคเฉ เจเฉฑเจ เจธเจเจค เจฌเจเจ เจฏเฉเจเจจเจพ เจนเฉ, เจฒเฉเฉเฉเจเจฆเฉ เจเจพเจฐเจเจธเจผเฉเจฒเจคเจพ เจฆเฉ เจจเจพเจฒ เจธเจตเฉ-เจชเฉเจฐเจฌเฉฐเจงเจฟเจค เจฒเจพเจเจธเฉเจเจธเจพเจ เจฆเฉ เจเจฐเฉเจฆ เจตเจฟเฉฑเจ เจเจ เจฎเจนเฉเจจเฉ เจฒเฉฑเจ เจธเจเจฆเฉ เจนเจจ, เจ เจคเฉ เจคเฉเจนเจพเจจเฉเฉฐ เจนเฉเจฃ เจเฉฐเจฎ เจเจฐเจจ เจฆเฉ เจเจผเจฐเฉเจฐเจค เจนเฉ.
เจจเจคเฉเจเฉ เจตเจเฉเจ, เจคเฉเจนเจพเจจเฉเฉฐ เจเจน เจเจฐเจจเจพ เจชเจตเฉเจเจพ:
- เจเจพเจ เจเฉเจ เจกเจฟเจตเฉเจฒเจชเจฐเจพเจ เจฒเจ เจธเฉเจฐเฉฑเจเจฟเจ เจค เจฌเฉเจฐเจพเจเจเจพเจ เจตเจฟเฉฑเจ เจฎเจฟเจฒเจพเจเจฃ 'เจคเฉ เจชเฉเจฐเฉ เจคเจฐเฉเจนเจพเจ เจชเจพเจฌเฉฐเจฆเฉ เจฒเจเจพเจ, เจชเจฐ เจซเจฟเจฐ เจกเจฟเจตเฉเจฒเจชเจฐ เจเจฟเจจเฉเจนเจพเจ เจจเฉเฉฐ เจฎเจฟเจฒเจพเจเจฃ เจฆเจพ เจ เจงเจฟเจเจพเจฐ เจนเฉ, เจฌเฉเจจเจธ เจฆเฉ เจฐเฉเจช เจตเจฟเฉฑเจ เจฆเฉเจเฉ เจฒเฉเจเจพเจ เจฆเฉ MRs เจจเฉเฉฐ เจฎเจฟเจฒเจพเจเจเจฆเฉ เจธเจฎเฉเจ เจตเจฟเจตเจพเจฆ เจชเฉเจฐเจพเจชเจค เจเจฐเจฆเฉ เจนเจจ;
- เจเจพเจ เจคเฉเจนเจพเจจเฉเฉฐ เจฌเจฟเจจเจพเจ เจเฉเจก เจธเจฎเฉเจเจฟเจ เจฆเฉ เจเจชเจฃเฉ เจฎเจพเจธเจเจฐ เจฌเฉเจฐเจพเจเจ เจจเจพเจฒ เจฌเฉเจเจพเจฌเฉ เจ เจญเฉเจฆ เจเจฐเจจ เจฆเฉ เจเจเจพเจเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉ, เจญเจพเจตเฉเจ เจเจน เจเฉฑเจ เจเฉเจจเฉเจ เจฐ เจนเฉ เจเฉ เจเฉฑเจฒเฉเจน เจนเฉ เจธเฉเจเจฒ เจนเฉเจเจ เจนเฉเฅค
เจธเจญ เจคเฉเจ เจชเจนเจฟเจฒเจพเจ เจเฉ เจฎเฉเจ เจเฉเจคเจพ เจเจน เจเฉเจเจฒ 'เจคเฉ เจเจพ เจฐเจฟเจนเจพ เจธเฉ, เจเจน เจตเจฟเจธเจผเจตเจพเจธ เจเจฐเจฆเฉ เจนเฉเจ เจเจฟ เจเจฟเจธเฉ เจจเฉ เจชเจนเจฟเจฒเจพเจ เจนเฉ เจเฉเจ เจ เจเจฟเจนเจพ เจเฉเจคเจพ เจนเฉ (เจเฉเจก เจจเฉเฉฐ เจธเฉเจงเฉ เจฌเจฟเจจเจพเจ), เจชเจฐ เจเจน เจชเจคเจพ เจเจฒเจฟเจ เจเจฟ เจ เจเฉ เจคเฉฑเจ เจเจฎเจฟเจเจจเจฟเจเฉ เจธเฉฐเจธเจเจฐเจฃ เจตเจฟเฉฑเจ เจ เจเจฟเจนเจพ เจเฉเจ เจฒเจพเจเฉ เจจเจนเฉเจ เจนเฉเจเจ เจนเฉเฅค
เจเฉฐเจฎ เจฆเฉ เจเจฎ เจธเจเฉเจฎ
เจเฉฑเจ เจเจฆเจพเจนเจฐเจจ เจฆเฉ เจคเฉเจฐ 'เจคเฉ, เจเจ เจเฉฑเจ เจเฉเจธเจ เจฐเจฟเจชเฉเจเจผเจเจฐเฉ 'เจคเฉ เจฎเจฐเจ เจฌเฉเจจเจคเฉ เจฎเจจเจเจผเฉเจฐเฉเจเจ เจจเฉเฉฐ เจธเฉเจ เจ
เจช เจเจฐเฉเจ
- เจเจ GitLab API เจจเฉเฉฐ เจเจเจธเฉเจธ เจเจฐเจจ เจฒเจ เจเฉฑเจ เจเฉเจเจจ เจฌเจฃเจพเจเจ (เจเจธ เจฆเฉ เจเจผเจฐเฉเจ เจ เจธเฉเจ เจนเฉฑเจ เจ เจคเฉ เจตเจฟเจฐเฉเจง เจตเจฟเฉฑเจ เจตเฉเจเจพเจ เจฆเฉ เจเจฟเจฃเจคเฉ เจฌเจพเจฐเฉ เจเจพเจฃเจเจพเจฐเฉ เจชเฉเจฐเจพเจชเจค เจเจฐเจพเจเจเฉ)
- GitLab เจตเฉเจฐเฉเจเจฌเจฒ เจตเจฟเฉฑเจ เจเฉฑเจ เจเฉเจเจจ เจธเจผเจพเจฎเจฒ เจเจฐเฉ
- เจเฉเจเจฐ เจชเจพเจเจชเจฒเจพเจเจจ เจตเจฟเฉฑเจ เจคเจฐเฉเฉฑเจเฉเจเจ เจนเจจ (เจเฉ "เจฒเจ" เจตเฉเจเจพเจ เจเจพเจซเจผเฉ เจจเจนเฉเจ เจนเจจ) เจคเจพเจ เจฎเจฟเจฒเจพเจเจฃ เจจเฉเฉฐ เจ เจธเจฎเจฐเฉฑเจฅ เจเจฐเฉ
- CI/CD เจชเจพเจเจชเจฒเจพเจเจจ เจฆเฉ เจนเจฟเฉฑเจธเฉ เจตเจเฉเจ เจตเฉเจ เจชเฉเจฐเจฎเจพเจฃเจฟเจเจคเจพ เจธเฉเจ เจ เจช เจเจฐเฉ
- เจ เจธเฉเจ เจธเฉเจฐเฉฑเจเจฟเจ เจค เจธเจผเจพเจเจพเจตเจพเจ เจฒเจ เจเจฎเจฟเจ เจเจฐเจจ 'เจคเฉ เจชเจพเจฌเฉฐเจฆเฉ เจฒเจเจพเจตเจพเจเจเฉ, เจ เจธเฉเจ เจธเจฟเจฐเจซ MR เจฆเฉเจเจฐเจพ เจธเจพเจฐเฉ เจฌเจฆเจฒเจพเจ เจเจฐเจฆเฉ เจนเจพเจ
- เจเจ เจฆเฉเจเฉเจ เจเจฟ เจ เฉฐเจค เจตเจฟเฉฑเจ เจเฉ เจนเฉเจเจ
1. API เจคเฉฑเจ เจชเจนเฉเฉฐเจ เจเจฐเจจ เจฒเจ เจเฉฑเจ เจเฉเจเจจ เจฌเจฃเจพเจ
เจฏเฉเจเจผเจฐ เจธเฉเจเจฟเฉฐเจเจเจผ โ เจเจเจธเฉเจธ เจเฉเจเจจ 'เจคเฉ เจเจพเจ เจ เจคเฉ เจเฉเจเจจ เจฒเจฟเจเฉ:
เจเฉเจเจจ เจชเฉเจฐเจพเจชเจค เจเจฐเจจ เจฒเจ เจเจพเจคเจพ
API เจชเจนเฉเฉฐเจ เจคเฉเจนเจพเจจเฉเฉฐ เจคเฉเจนเจพเจกเฉเจเจ เจฐเจฟเจชเฉเจเจผเจเจฐเฉเจเจ เจจเจพเจฒ เจฒเจเจญเจ เจเฉเจ เจตเฉ เจเจฐเจจ เจฆเฉ เจเจเจพเจเจผเจค เจฆเจฟเฉฐเจฆเฉ เจนเฉ, เจเจธ เจฒเจ เจฎเฉเจ เจคเฉเจนเจพเจจเฉเฉฐ เจเฉฑเจ เจตเฉฑเจเจฐเจพ เจเจฟเจเจฒเจฌ เจเจพเจคเจพ เจฌเจฃเจพเจเจฃ เจฆเจพ เจธเฉเจเจพเจ
เจฆเจฟเฉฐเจฆเจพ เจนเจพเจ, เจเจธเจจเฉเฉฐ เจเจชเจฃเฉ เจฐเจฟเจชเฉเจเจผเจเจฐเฉเจเจ (เจเจฟเจตเฉเจ เจเจฟ เจฐเจฟเจชเฉเจฐเจเจฐ) เจจเฉเฉฐ เจเฉฑเจเฉ-เจเฉฑเจ เจ
เจงเจฟเจเจพเจฐ เจฆเจฟเจ เจ
เจคเฉ เจเจธ เจเจพเจคเฉ เจฒเจ เจเฉฑเจ เจเฉเจเจจ เจชเฉเจฐเจพเจชเจค เจเจฐเฉเฅค
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 เจฐเจฟเจชเฉเจเจผเจเจฐเฉ - เจธเฉเจเจฟเฉฐเจเจพเจ - 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 โโเจเฉเจฒ เจเจฟเฉฐเจจเฉ "เจฅเฉฐเจฌเจธ เจ
เฉฑเจช" เจนเฉเจฃเฉ เจเจพเจนเฉเจฆเฉ เจนเจจเฅค เจเฉฑเจ เจฆเฉ เจฎเฉเฉฑเจฒ เจฆเจพ เจฎเจคเจฒเจฌ เจนเฉ เจเจฟ เจคเฉเจธเฉเจ เจเฉเจฆ เจเจชเจฃเฉ 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
check-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/.*$/'
เจเจธ เจฌเจพเจฐเฉ เจนเฉเจฐ เจเจพเจฃเฉ เจเจฟ เจเจพเจเจ เจเจฐเจจ เจตเฉเจฒเฉ เจเฉ เจนเฉเฉฐเจฆเจพ เจนเฉ:
- เจเจน เจชเจพเจฌเฉฐเจฆเฉ เจจเจฟเจฐเจงเจพเจฐเจค เจเฉเจคเฉ เจเจ เจนเฉ เจเจฟ เจเฉเฉฑเจ เจเฉเจตเจฒ เจฎเจพเจธเจเจฐ เจเจพเจ เจฐเฉเจฒเฉเจเจผ /* เจธเจผเจพเจเจพเจตเจพเจ เจตเจฟเฉฑเจ เจเฉฑเจ เจเจฎเจเจฐ เจฌเจฃเจพเจเจฃ เจตเฉเจฒเฉ เจนเฉ เจนเฉเจตเฉเจเจพ
- GitLab API เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเฉเจ, "เจชเจธเฉฐเจฆ" เจ เจคเฉ "เจจเจพเจชเจธเฉฐเจฆเจพเจ" เจฆเฉ เจธเฉฐเจเจฟเจ เจชเฉเจฐเจพเจชเจค เจเจฐเฉ
- เจธเจเจพเจฐเจพเจคเจฎเจ เจ เจคเฉ เจจเจเจพเจฐเจพเจคเจฎเจ เจเจตเจพเจฌเจพเจ เจตเจฟเฉฑเจ เจ เฉฐเจคเจฐ เจฆเฉ เจเจฃเจจเจพ เจเจฐเฉ
- เจเฉเจเจฐ เจ เฉฐเจคเจฐ เจธเจพเจกเฉ เจฆเฉเจเจฐเจพ NEED_VOTES เจตเจฟเฉฑเจ เจจเจฟเจฐเจงเจพเจฐเจค เจเฉเจคเฉ เจฎเฉเฉฑเจฒ เจคเฉเจ เจเฉฑเจ เจนเฉ, เจคเจพเจ เจ เจธเฉเจ เจ เจญเฉเจฆ เจนเฉเจฃ เจฆเฉ เจฏเฉเจเจคเจพ เจจเฉเฉฐ เจฐเฉเจ เจฆเจฟเฉฐเจฆเฉ เจนเจพเจ
5. เจธเฉเจฐเฉฑเจเจฟเจ เจค เจธเจผเจพเจเจพเจตเจพเจ เจฒเจ เจเจฎเจฟเจ เจจเฉเฉฐ เจ เจฏเฉเจ เจเจฐเฉ
เจ เจธเฉเจ เจเจนเจจเจพเจ เจธเจผเจพเจเจพเจตเจพเจ เจจเฉเฉฐ เจจเจฟเจฐเจงเจพเจฐเจค เจเจฐเจฆเฉ เจนเจพเจ เจเจฟเจจเฉเจนเจพเจ เจฒเจ เจธเจพเจจเฉเฉฐ เจเฉเจก เจธเจฎเฉเจเจฟเจ เจเจฐเจจเฉ เจเจพเจนเฉเจฆเฉ เจนเฉ เจ เจคเฉ เจเจน เจธเฉฐเจเฉเจค เจฆเจฟเฉฐเจฆเฉ เจนเจพเจ เจเจฟ เจเจนเจจเจพเจ เจจเจพเจฒ เจธเจฟเจฐเจซ MR เจฆเฉเจเจฐเจพ เจเฉฐเจฎ เจเฉเจคเจพ เจเจพ เจธเจเจฆเจพ เจนเฉเฅค
เจ เจเจฟเจนเจพ เจเจฐเจจ เจฒเจ, เจธเฉเจเจฟเฉฐเจเจเจผ โ เจฐเจฟเจชเฉเจเจผเจเจฐเฉ โ เจธเฉเจฐเฉฑเจเจฟเจ เจค เจธเจผเจพเจเจพเจตเจพเจ 'เจคเฉ เจเจพเจ:
6. เจเจพเจเจ เจเจฐ เจฐเจฟเจนเจพ เจนเฉ
NEED_VOTES เจธเฉเฉฑเจ เจเจฐเฉ: 0
เจ เจธเฉเจ MR เจเจฐเจฆเฉ เจนเจพเจ เจ เจคเฉ "เจจเจพเจชเจธเฉฐเจฆ" เจชเจพเจเจเจฆเฉ เจนเจพเจเฅค
เจฌเจฟเจฒเจก เจฒเฉเจเจธ เจตเจฟเฉฑเจ:
เจนเฉเจฃ "like" เจชเจพเจ เจ
เจคเฉ เจฆเฉเจฌเจพเจฐเจพ เจเจพเจเจ เจเจฒเจพเจ:
เจธเจฐเฉเจค: www.habr.com