Is e aon de na feartan as motha a tha a dhìth nach eil anns an dreach an-asgaidh de GitLab an comas bhòtadh an-aghaidh neoni an ath-reic gus smachd a chumail air iarrtas Merge (MR) a ’cleachdadh an ath-sgrùdadh còd èigneachail.
Nì sinn an gnìomh as ìsle sinn fhìn - cuiridh sinn à comas Merge gus an toir grunn luchd-leasachaidh “òrdagan suas” do MR.
Carson a tha seo idir?
Is urrainn don bhuidheann againn cead GitLab a cheannach. Ach, leis gu bheil an leasachadh air a dhèanamh ann an lùb dùinte gun ruigsinneachd air an eadar-lìn, agus gu bheil dealbhadh buidseit teann ann, faodaidh ceannach ceadan fèin-riaghlaidh leis a’ ghnìomhachd riatanach grunn mhìosan a thoirt, agus feumaidh tu a bhith ag obair a-nis.
Mar thoradh air an sin, feumaidh tu:
- no gu tur a’ toirmeasg Merge a-steach do mheuran dìon airson cuid de luchd-leasachaidh, ach an uairsin bidh luchd-leasachaidh aig a bheil còir air Merge a’ faighinn còmhstri nuair a thèid MRs dhaoine eile còmhla mar bhuannachd;
- no leigeil leat co-aonaidhean neo-riaghlaichte a dhèanamh leis a’ phrìomh mheur agad gun ath-sgrùdadh còd, eadhon ged is e Òigridh a th’ ann a thuinich ann an-dè.
B ’e a’ chiad rud a rinn mi a dhol gu google, a ’creidsinn gu robh cuideigin air rudeigin coltach ris a dhèanamh mu thràth (gun a bhith ag ùrachadh a’ chòd), ach thionndaidh e a-mach nach robh a leithid de bhuileachadh anns an dreach coimhearsnachd fhathast.
Sgeama obrach coitcheann
Mar eisimpleir, leig dhuinn cead iarraidh Merge a stèidheachadh air stòr deuchainn
- Cruthaichidh sinn comharra airson faighinn chun API GitLab (troimhe gheibh sinn fiosrachadh mun àireamh de bhòtaichean airson agus na aghaidh)
- Cuir tòcan ri caochladairean GitLab
- Cuir à comas Merge ma tha mearachdan san loidhne-phìoban (mura h-eil gu leòr bhòtaichean “airson”)
- Stèidhich dearbhadh bhòtaidh mar phàirt den loidhne-phìoban CI/CD
- Bidh sinn a’ toirmeasg geallaidhean a dhèanamh do mheuran dìonta, bidh sinn a’ dèanamh a h-uile atharrachadh tro MR a-mhàin
- Feuch an dèan sinn sgrùdadh air na thachair aig a’ cheann thall
1. Cruthaich tòcan gus cothrom fhaighinn air an API
Rach gu Roghainnean Cleachdaiche → Comharran Ruigsinneachd agus sgrìobh sìos an tòcan:
Cunntas airson an tòcan fhaighinn
Leigidh ruigsinneachd API leat cha mhòr rud sam bith a dhèanamh leis na stòran agad, agus mar sin tha mi a’ moladh dhut cunntas Gitlab air leth a chruthachadh, glè bheag de chòraichean a thoirt dha na stòran agad (mar Neach-aithris) agus comharra fhaighinn airson a’ chunntas sin.
2. Cuir an tòcan gu caochladairean Gitlab
Mar eisimpleir, anns a 'cheum roimhe, fhuair sinn tòcan QmN2Y0NOUFlfeXhvd21ZS01aQzgK
Fosgail roghainnean → CI/CD → Caochlaidhean → Cuir caochlaideach → ris GITLAB_TOKEN_FOR_CI
Mar thoradh air an sin, gheibh sinn:
Faodar seo a dhèanamh an dà chuid air aon ionad-tasgaidh agus air buidheann de thasgaidhean.
3. Chuir sinn casg air Merge mura faighear aonta co-obraichean às deidh an ath-sgrùdadh còd
Anns a’ chùis againn, is e an casg air Merge gun till loidhne-phìoban an t-seanaidh mearachd mura h-eil bhòtaichean gu leòr ann.
Rach gu Settings → Coitcheann → Cuir còmhla iarrtasan → Merge Checks agus cuir an comas an roghainn Feumaidh loidhnichean cruinneachaidh ruith gu soirbheachail.
4. Stèidhich an loidhne-phìoban
Mura h-eil thu air loidhne-phìoban CI/CD a dhèanamh airson an tagraidh agad fhathast
Cruthaich faidhle ann am freumh an stòrais .gitlab-ci.yml le susbaint shìmplidh:
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"
Stòr air leth airson rèiteachadh CI/CD
Bhithinn a’ moladh stòr air leth a dhèanamh far am feum thu faidhle myapp.gitlab-ci.yml a chruthachadh gus an loidhne-phìoban a stèidheachadh. San dòigh seo faodaidh tu smachd nas fheàrr fhaighinn air ruigsinneachd luchd-tabhartais as urrainn an loidhne-phìoban togail atharrachadh agus comharra ruigsinneachd fhaighinn.
Feumar suidheachadh an fhaidhle loidhne-phìoban ùr a shònrachadh le bhith a’ dol gu stòr myapp - Roghainnean - CI / CD - loidhnichean cruinneachaidh - slighe rèiteachaidh Custom CI - sònraich faidhle ùr, mar eisimpleir myapp.gitlab-ci.yml@gitlab-ce-mr-approvals/Ci
Gliocas: Cleachd loidhne-lìn gus atharraichean a dhèanamh air faidhlichean GitLab CI
Fiù ma tha thu ag obair leat fhèin, bidh obair tro MR na neach-cuideachaidh math, a’ ruith na h-atharrachaidhean agad air na faidhlichean loidhne-phìoban tron lòchran. Ma nì thu mearachd ann an co-chòrdadh faidhle YAML, cha leig seo leat an loidhne-phìoban obrach a bhriseadh, ach cuiridh e casg air Merge.
Eisimpleir de shoithichean le lòchrain as urrainn dhut a chuir a-steach don loidhne-phìoban agad:
Agus eisimpleir den ìre dearbhaidh:
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;
Tha e fhathast ri beagan pharaimearan a chur ris an loidhne-phìoban agad gus toirt air obrachadh:
stages:
- test
variables:
NEED_VOTES: 1
include:
- remote: "https://gitlab.com/gitlab-ce-mr-approvals/ci/-/raw/master/check-approve.gitlab-ci.yml"
Bidh an caochladair NEED_VOTES a’ dearbhadh cia mheud “òrdag suas” a dh’fheumas a bhith aig MR gus am bi Merge ri fhaighinn. Tha luach aon a’ ciallachadh gun urrainn dhut fhèin do MR aontachadh le bhith “a’ còrdadh ris”.
gabhail a-steach a’ toirt a-steach an ìre deuchainn, a nì sgrùdadh air an àireamh de “likes”.
An loidhne-phìoban as sìmplidh a 'cleachdadh myapp.gitlab-ci.yml mar eisimpleir
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
Susbaint seic-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/.*$/'
Ionnsaich tuilleadh mu na thachras nuair a nì thu sgrùdadh:
- tha an cuingealachadh air a shuidheachadh nach bi an t-seic ach nuair a chruthaicheas tu MR anns na meuran maighstir no leigeil ma sgaoil / *
- a’ cleachdadh an GitLab API, faigh an àireamh de “likes” agus “nach toil leat”
- obrachadh a-mach an diofar eadar freagairtean dearbhach agus àicheil
- ma tha an eadar-dhealachadh nas lugha na an luach a shuidhich sinn ann an NEED_VOTES, cuiridh sinn casg air a’ chomas a dhol còmhla
5. Disable a 'gealltainn geugan dìon
Bidh sinn a’ dearbhadh na meuran air am bu chòir dhuinn ath-sgrùdadh còd a dhèanamh agus a’ nochdadh nach urrainnear obrachadh leotha ach tro MR.
Gus seo a dhèanamh, rachaibh gu Settings → Repository → Meuran Dìon:
6. Sgrùdadh
Suidhich NEED_VOTES: 0
Bidh sinn a’ dèanamh MR agus a’ cur “dislike”.
Anns na clàran togail:
A-nis cuir "like" agus ruith ath-sgrùdadh:
Source: www.habr.com