Kuwunika kwa zomwe amachita ndikukoka zopempha mu Travis CI, Buddy ndi AppVeyor pogwiritsa ntchito PVS-Studio

Kuwunika kwa zomwe amachita ndikukoka zopempha mu Travis CI, Buddy ndi AppVeyor pogwiritsa ntchito PVS-Studio
Mu PVS-Studio analyzer ya C ndi C ++ zilankhulo pa Linux ndi macOS, kuyambira mtundu 7.04, mwayi woyeserera wawonekera kuti muwone mndandanda wamafayilo omwe atchulidwa. Pogwiritsa ntchito mawonekedwe atsopano, mutha kusintha analyzer kuti muwone zomwe zikuchitika ndikukoka zopempha. Nkhaniyi ikuwonetsani momwe mungakhazikitsire cheke mndandanda wamafayilo a polojekiti ya GitHub mumakina otchuka a CI (Continuous Integration) monga Travis CI, Buddy ndi AppVeyor.

Mawonekedwe a mndandanda wamafayilo

Zithunzi za PVS Studio ndi chida chodziwira zolakwika ndi zofooka zomwe zingachitike mu code source ya mapulogalamu olembedwa mu C, C++, C# ndi Java. Imagwira pamakina a 64-bit pa Windows, Linux ndi macOS.

Mtundu wa PVS-Studio 7.04 wa Linux ndi macOS uli ndi njira yowonera mndandanda wamafayilo oyambira. Izi zimagwira ntchito pama projekiti omwe dongosolo lawo lomanga limakupatsani mwayi wopanga fayilo compile_commands.json. Ndikofunikira kuti analyzer atulutse zambiri pakuphatikiza mafayilo omwe atchulidwa. Ngati dongosolo lanu lomanga silikuthandizira kupanga fayilo ya compile_commands.json, mutha kuyesa kupanga fayilo yotere pogwiritsa ntchito zofunikira. chimbalangondo.

Komanso, njira yowonera mndandanda wamafayilo itha kugwiritsidwa ntchito limodzi ndi strace trace of compiler runs (pvs-studio-analyzer trace). Kuti muchite izi, choyamba muyenera kupanga projekiti yonse ndikuyitsata kuti wosanthula atole zidziwitso zonse zokhudzana ndi magawo ophatikiza mafayilo onse omwe akuwunikiridwa.

Komabe, njirayi ili ndi vuto lalikulu - mungafunike kupanga chithunzi chonse cha polojekiti yonse pakukhazikitsa kulikonse, komwe kumatsutsana ndi lingaliro la cheke mwachangu. Kapena, ngati musunga zotsatira zokha, kutsegulira kotsatira kwa analyzer kumatha kukhala kosakwanira ngati gwero lodalira mafayilo lisintha mutatsata (mwachitsanzo, #include yatsopano imawonjezedwa ku imodzi mwamafayilo oyambira).

Chifukwa chake, sitikulimbikitsa kugwiritsa ntchito mndandanda wamafayilo omwe ali ndi chipika kuti muwone zomwe akuchita kapena kukoka zopempha. Ngati mutha kupanga zowonjezera pofufuza zomwe mungachite, ganizirani kugwiritsa ntchito njirayo kusanthula kowonjezera.

Mndandanda wa mafayilo oyambira kuti awunikenso amasungidwa ku fayilo yolemba ndikuperekedwa kwa analyzer pogwiritsa ntchito parameter -S:

pvs-studio-analyzer analyze ... -f build/compile_commands.json -S check-list.txt

Fayiloyi imatchula njira zachibale kapena zenizeni za mafayilo, ndipo fayilo yatsopano iliyonse iyenera kukhala pamzere watsopano. Ndizololedwa kufotokoza osati mayina a mafayilo kuti afufuzidwe, komanso malemba osiyanasiyana. Wopangayo awona kuti iyi si fayilo ndipo inyalanyaza mzerewo. Izi zitha kukhala zothandiza popereka ndemanga ngati mafayilo afotokozedwa pamanja. Komabe, nthawi zambiri mndandanda wamafayilo umapangidwa pakupanga kwa CI, mwachitsanzo mafayilo kuchokera pakupanga kapena kukoka.

Tsopano, pogwiritsa ntchito njirayi, mutha kuyesa msanga nambala yatsopano isanalowe munthambi yayikulu yachitukuko. Kuti makina otsimikizira agwirizane ndi machenjezo a analyzer, ntchitoyo pulagi-otembenuza mbendera anawonjezera --kusonyeza-machenjezo:

plog-converter ... --indicate-warnings ... -o /path/to/report.tasks ...

Ndi mbendera iyi, chosinthira chidzabwezera nambala yosakhala ziro ngati pali machenjezo mu lipoti la analyzer. Pogwiritsa ntchito nambala yobwereza, mutha kuletsa mbedza, kudzipereka kapena kukoka pempho, ndikuwonetsa lipoti la analyzer lomwe lapangidwa pazenera, kugawana kapena kutumiza ndi imelo.

Zindikirani. Nthawi yoyamba mukayamba kusanthula mndandanda wa mafayilo, polojekiti yonse idzawunikidwa, chifukwa analyzer ayenera kupanga fayilo yodalira mafayilo amtundu wa polojekiti pamafayilo amutu. Ichi ndi gawo la kugawa mafayilo a C ndi C ++. M'tsogolomu, fayilo yodalira ikhoza kusungidwa ndipo idzasinthidwa ndi analyzer. Ubwino wowunika umagwira mukamagwiritsa ntchito mafayilo amtundu wa fayilo pogwiritsira ntchito njira yowonjezeretsa ndiyoti fayilo yokhayo iyenera kusungidwa, osati mafayilo azinthu.

Mfundo zazikuluzikulu za kusanthula kopempha

Kusanthula kwa polojekiti yonse kumatenga nthawi yambiri, choncho ndizomveka kuyang'ana mbali yake yokha. Vuto ndiloti muyenera kulekanitsa mafayilo atsopano ndi mafayilo onse a polojekiti.

Taganizirani chitsanzo cha mtengo wodzipereka wokhala ndi nthambi ziwiri:

Kuwunika kwa zomwe amachita ndikukoka zopempha mu Travis CI, Buddy ndi AppVeyor pogwiritsa ntchito PVS-Studio

Tiyerekeze kuti kudzipereka A1 ili ndi ma code ambiri omwe afufuzidwa kale. M'mbuyomu tidapanga nthambi kuchokera pakudzipereka A1 ndikusintha mafayilo ena.

Inde, inu munazindikira kuti pambuyo A1 panalinso mabizinesi ena awiri, koma awa analinso kuphatikiza nthambi zina, chifukwa sitichita mbuye. Ndipo tsopano nthawi yafika pamene hotfix okonzeka. Chifukwa chake, pempho lachikoka lidawonekera pakuphatikiza B3 ΠΈ A3.

Inde, zingatheke kuyang'ana zotsatira zonse za kuphatikiza kwawo, koma izi zikanakhala zotalika kwambiri komanso zopanda chilungamo, chifukwa mafayilo ochepa okha adasinthidwa. Choncho, ndi bwino kusanthula okhawo osinthidwa.

Kuti tichite izi, timapeza kusiyana pakati pa nthambi, kukhala MUTU wa nthambi yomwe tikufuna kuphatikiza kukhala master:

git diff --name-only HEAD origin/$MERGE_BASE > .pvs-pr.list

$MERGE_BASE tikambirana mwatsatanetsatane pambuyo pake. Chowonadi ndi chakuti si ntchito zonse za CI zomwe zimapereka chidziwitso chofunikira chokhudza maziko ophatikizira, kotero nthawi zonse muyenera kubwera ndi njira zatsopano zopezera deta iyi. Izi zifotokozedwa mwatsatanetsatane m'munsimu muzinthu zonse zapaintaneti zomwe zafotokozedwa.

Kotero, ife tiri ndi kusiyana pakati pa nthambi, kapena kani, mndandanda wa mayina a mafayilo omwe asinthidwa. Tsopano tiyenera kupereka wapamwamba .pvs-pr.list (tinalozera zomwe zili pamwambapa) kwa analyzer:

pvs-studio-analyzer analyze -j8 
                            -o PVS-Studio.log 
                            -S .pvs-pr.list

Pambuyo posanthula, tifunika kusintha fayilo ya chipika (PVS-Studio.log) kukhala mawonekedwe owerengeka:

plog-converter -t errorfile PVS-Studio.log --cerr -w

Lamuloli lilemba zolakwika mu wochita (mtsinje wotuluka wa zolakwika).

Apa pokha sitifunika kusonyeza zolakwika, komanso kudziwitsa utumiki wathu pa msonkhano ndi kuyezetsa za kukhalapo kwa mavuto. Kwa ichi, mbendera idawonjezedwa ku chosinthira -W (--kusonyeza-machenjezo). Ngati pali chenjezo limodzi la analyzer, code yobwereza ya zofunikira pulagi-otembenuza idzasintha kukhala 2, yomwe idzadziwitse utumiki wa CI kuti pali zolakwika zomwe zingatheke pamafayilo opempha kukoka.

Travis CI

Kukonzekera kumapangidwa ngati fayilo .travis.yml. Kuti zikhale zosavuta, ndikukulangizani kuti muyike chilichonse mu bash script yokhala ndi ntchito zomwe zidzayitanidwe kuchokera pafayilo .travis.yml (bash scriptname.sh function_name).

Tidzawonjezera code yofunikira pa script bash, kotero timapeza magwiridwe antchito ambiri. Mu gawo kukhazikitsa tiyeni tilembe izi:

install:
  - bash .travis.sh travis_install

Ngati muli ndi malangizo aliwonse, mutha kuwasunthira ku script pochotsa ma hyphens.

Tiyeni titsegule fayilo .travis.sh ndikuwonjezera kukhazikitsidwa kwa analyzer ku ntchitoyi travis_install ():

travis_install() {
  wget -q -O - https://files.viva64.com/etc/pubkey.txt 
    | sudo apt-key add -
  sudo wget -O /etc/apt/sources.list.d/viva64.list 
    https://files.viva64.com/etc/viva64.list
  
  sudo apt-get update -qq
  sudo apt-get install -qq pvs-studio 
}

Tsopano tiyeni tiwonjezere ku gawoli script run analysis:

script:
  - bash .travis.sh travis_script

Ndipo mu bash script:

travis_script() {
  pvs-studio-analyzer credentials $PVS_USERNAME $PVS_KEY
  
  if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then
    git diff --name-only origin/HEAD > .pvs-pr.list
    pvs-studio-analyzer analyze -j8 
                                -o PVS-Studio.log 
                                -S .pvs-pr.list 
                                --disableLicenseExpirationCheck
  else
    pvs-studio-analyzer analyze -j8 
                                -o PVS-Studio.log 
                                --disableLicenseExpirationCheck
  fi
  
  plog-converter -t errorfile PVS-Studio.log --cerr -w
}

Khodi iyi iyenera kuyendetsedwa polojekiti ikamangidwa, mwachitsanzo, ngati mutakhala ndi CMake build:

travis_script() {
  CMAKE_ARGS="-DCMAKE_EXPORT_COMPILE_COMMANDS=On ${CMAKE_ARGS}"
  cmake $CMAKE_ARGS CMakeLists.txt
  make -j8
}

Zidzakhala motere:

travis_script() {
  CMAKE_ARGS="-DCMAKE_EXPORT_COMPILE_COMMANDS=On ${CMAKE_ARGS}"
  cmake $CMAKE_ARGS CMakeLists.txt
  make -j8
  
  pvs-studio-analyzer credentials $PVS_USERNAME $PVS_KEY
  
  if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then
    git diff --name-only origin/HEAD > .pvs-pr.list
    pvs-studio-analyzer analyze -j8 
                                -o PVS-Studio.log 
                                -S .pvs-pr.list 
                                --disableLicenseExpirationCheck
  else
    pvs-studio-analyzer analyze -j8 
                                -o PVS-Studio.log 
                                --disableLicenseExpirationCheck
  fi
  
  plog-converter -t errorfile PVS-Studio.log --cerr -w
}

Mwinamwake mwazindikira kale zosintha zomwe zafotokozedwa. $TRAVIS_PULL_REQUEST ΠΈ $TRAVIS_BRANCH. Travis CI imadzilengeza yokha:

  • $TRAVIS_PULL_REQUEST amasunga nambala yopempha kukoka, kapena zabodzangati ndi nthambi yokhazikika;
  • $TRAVIS_REPO_SLUG amasunga dzina la nkhokwe ya polojekiti.

Algorithm ya ntchito iyi:

Kuwunika kwa zomwe amachita ndikukoka zopempha mu Travis CI, Buddy ndi AppVeyor pogwiritsa ntchito PVS-Studio
Travis CI imayankha kubweza ma code, kotero kukhalapo kwa machenjezo kudzauza anthu ogwira ntchito kuti awonetse zomwe akuchitazo ngati ngolo.

Tiyeni tiwone bwinobwino mzere wa code uwu:

git diff --name-only origin/HEAD > .pvs-pr.list

Chowonadi ndi chakuti Travis CI imaphatikiza nthambi zokha pakuwunika kopempha:

Kuwunika kwa zomwe amachita ndikukoka zopempha mu Travis CI, Buddy ndi AppVeyor pogwiritsa ntchito PVS-Studio
Choncho, ife kusanthula A4, osati B3->A3. Chifukwa cha mbali iyi, tiyenera kuwerengera kusiyana A3, yomwe ili pamwamba pa nthambi kuchokera chiyambi.

Mfundo imodzi yofunika yatsala - kusungitsa kudalira kwa mafayilo apamutu pamagawo omasulira ophatikizidwa (*.c, *.cc, *.cpp, etc.). Wosanthula amawerengera zodalira izi poyambira koyamba munjira yowonera mndandanda wa mafayilo ndikusunga mu bukhu la .PVS-Studio. Travis CI imakupatsani mwayi wosunga zikwatu, chifukwa chake tidzasunga zikwatu .PVS-Studio/:

cache:
  directories:
    - .PVS-Studio/

Khodi iyi iyenera kuwonjezeredwa ku fayilo .travis.yml. Bukuli limasunga zambiri zomwe zasonkhanitsidwa pambuyo posanthula, zomwe zidzafulumizitsa kusanthula kwa mndandanda wamafayilo kapena kuwunika kowonjezereka. Ngati izi sizichitika, ndiye kuti wosanthula amasanthula mafayilo onse nthawi iliyonse.

Buddy

Monga Travis C.I., Buddy imapereka mwayi wodzipangira zokha ndikuyesa mapulojekiti omwe amasungidwa pa GitHub. Mosiyana ndi Travis CI, imapangidwira pa intaneti (thandizo la bash likupezeka), kotero palibe chifukwa chosungira mafayilo osinthika mu polojekitiyi.

Choyamba, tiyenera kuwonjezera chinthu chatsopano pamzere womanga:

Kuwunika kwa zomwe amachita ndikukoka zopempha mu Travis CI, Buddy ndi AppVeyor pogwiritsa ntchito PVS-Studio
Tchulani cholembera chomwe chinagwiritsidwa ntchito pomanga polojekitiyi. Zindikirani chotengera cha docker chomwe chayikidwa mu ntchitoyi. Mwachitsanzo, pali chidebe chapadera cha GCC:

Kuwunika kwa zomwe amachita ndikukoka zopempha mu Travis CI, Buddy ndi AppVeyor pogwiritsa ntchito PVS-Studio
Tsopano tiyeni tiyike PVS-Studio ndi zofunikira:

Kuwunika kwa zomwe amachita ndikukoka zopempha mu Travis CI, Buddy ndi AppVeyor pogwiritsa ntchito PVS-Studio
Onjezani mizere yotsatirayi ku mkonzi:

apt-get update && apt-get -y install wget gnupg jq

wget -q -O - https://files.viva64.com/etc/pubkey.txt | apt-key add -
wget -O /etc/apt/sources.list.d/viva64.list 
  https://files.viva64.com/etc/viva64.list

apt-get update && apt-get -y install pvs-studio

Tsopano tiyeni tipite ku Thamanga tabu (chithunzi choyamba) ndikuwonjezera nambala iyi kugawo lofananira la mkonzi:

pvs-studio-analyzer credentials $PVS_USERNAME $PVS_KEY

if [ "$BUDDY_EXECUTION_PULL_REQUEST_NO" != '' ]; then
  PULL_REQUEST_ID="pulls/$BUDDY_EXECUTION_PULL_REQUEST_NO"
  MERGE_BASE=`wget -qO - 
    https://api.github.com/repos/${BUDDY_REPO_SLUG}/${PULL_REQUEST_ID} 
    | jq -r ".base.ref"`

  git diff --name-only HEAD origin/$MERGE_BASE > .pvs-pr.list
  pvs-studio-analyzer analyze -j8 
                              -o PVS-Studio.log 
                              --disableLicenseExpirationCheck 
                              -S .pvs-pr.list
else
  pvs-studio-analyzer analyze -j8 
                              -o PVS-Studio.log 
                              --disableLicenseExpirationCheck
fi

plog-converter -t errorfile PVS-Studio.log --cerr -w

Ngati mwawerengapo gawo la Travs-CI, ndiye kuti code iyi ndi yodziwika kwa inu, komabe, pali sitepe yatsopano:

Kuwunika kwa zomwe amachita ndikukoka zopempha mu Travis CI, Buddy ndi AppVeyor pogwiritsa ntchito PVS-Studio
Chowonadi ndi chakuti tsopano sitikusanthula zotsatira za kuphatikiza, koma MUTU wa nthambi yomwe pempholi likupangidwa:

Kuwunika kwa zomwe amachita ndikukoka zopempha mu Travis CI, Buddy ndi AppVeyor pogwiritsa ntchito PVS-Studio
Kotero ife tiri mu kudzipereka koyenera B3 ndipo tiyenera kupeza kusiyana A3:

PULL_REQUEST_ID="pulls/$BUDDY_EXECUTION_PULL_REQUEST_NO"
  MERGE_BASE=`wget -qO - 
    https://api.github.com/repos/${BUDDY_REPO_SLUG}/${PULL_REQUEST_ID} 
    | jq -r ".base.ref"`
git diff --name-only HEAD origin/$MERGE_BASE > .pvs-pr.list

Pofuna kudziwa A3 Tiyeni tigwiritse ntchito GitHub API:

https://api.github.com/repos/${USERNAME}/${REPO}/pulls/${PULL_REQUEST_ID}

Tidagwiritsa ntchito zotsatirazi zoperekedwa ndi Buddy:

  • $BUDDY_EXECUTION_PULL_REQEUST_NO - nambala yofunsira;
  • $BUDDY_REPO_SLUG - kuphatikiza kwa dzina lolowera ndi malo (mwachitsanzo max / test).

Tsopano tiyeni tisunge zosinthazo pogwiritsa ntchito batani lomwe lili pansipa, ndikuthandizira kusanthula kopempha:

Kuwunika kwa zomwe amachita ndikukoka zopempha mu Travis CI, Buddy ndi AppVeyor pogwiritsa ntchito PVS-Studio
Mosiyana ndi Travis CI, sitiyenera kufotokoza .pvs-studio posungira, popeza Buddy amasunga mafayilo onse kuti ayambitsenso. Chifukwa chake, chomaliza chomwe chatsala ndikusunga malowedwe ndi mawu achinsinsi a PVS-Studio ku Buddy. Pambuyo posunga zosintha, tidzabwerera ku Pipeline. Tiyenera kupita kukayika zosintha ndikuwonjezera kulowa ndi kiyi ya PVS-Studio:

Kuwunika kwa zomwe amachita ndikukoka zopempha mu Travis CI, Buddy ndi AppVeyor pogwiritsa ntchito PVS-Studio
Pambuyo pake, kuwonekera kwa pempho latsopano kapena kudzipereka kudzayambitsa cheke. Ngati chochita chili ndi zolakwika, ndiye Buddy azilozera patsamba lofunsira kukoka.

AppVeyor

Kukhazikitsa AppVeyor ndikofanana ndi Buddy, popeza zonse zimachitika pa intaneti ndipo palibe chifukwa chowonjezera fayilo ya * .yml kumalo osungirako polojekiti.

Tiyeni tipite ku Zikhazikiko tabu muchidule cha polojekiti:

Kuwunika kwa zomwe amachita ndikukoka zopempha mu Travis CI, Buddy ndi AppVeyor pogwiritsa ntchito PVS-Studio
Tiyeni tisunthire pansi tsambali ndikuthandizira kusungitsa posungira pazofunsira zokoka:

Kuwunika kwa zomwe amachita ndikukoka zopempha mu Travis CI, Buddy ndi AppVeyor pogwiritsa ntchito PVS-Studio
Tsopano tiyeni tipite ku Chilengedwe tabu, komwe timafotokozera chithunzicho kuti tipange ndi zosintha zofunikira:

Kuwunika kwa zomwe amachita ndikukoka zopempha mu Travis CI, Buddy ndi AppVeyor pogwiritsa ntchito PVS-Studio
Ngati mudawerengapo magawo am'mbuyomu, mumawadziwa bwino magawo awiriwa - PVS_KEY ΠΈ PVS_USERNAME. Ngati sichoncho, ndiloleni ndikukumbutseni kuti akuyenera kuyang'ana chilolezo cha PVS-Studio analyzer. M'tsogolomu, tidzakumananso nawo muzolemba za Bash.

Patsamba lomweli pansipa, tchulani chikwatu cha caching:

Kuwunika kwa zomwe amachita ndikukoka zopempha mu Travis CI, Buddy ndi AppVeyor pogwiritsa ntchito PVS-Studio
Ngati sitichita izi, ndiye kuti tidzasanthula pulojekiti yonse m'malo mwa mafayilo angapo, koma tidzapeza zotsatira zake potengera mafayilo omwe atchulidwa. Chifukwa chake, ndikofunikira kuyika dzina lolondola lachikwatu.

Tsopano ndi nthawi yoti script iyesedwe. Tsegulani tabu ya Mayeso ndikusankha Script:

Kuwunika kwa zomwe amachita ndikukoka zopempha mu Travis CI, Buddy ndi AppVeyor pogwiritsa ntchito PVS-Studio
Matani khodi ili mu fomu iyi:

sudo apt-get update && sudo apt-get -y install jq

wget -q -O - https://files.viva64.com/etc/pubkey.txt 
  | sudo apt-key add -
sudo wget -O /etc/apt/sources.list.d/viva64.list 
  https://files.viva64.com/etc/viva64.list

sudo apt-get update && sudo apt-get -y install pvs-studio

pvs-studio-analyzer credentials $PVS_USERNAME $PVS_KEY

PWD=$(pwd -L)
if [ "$APPVEYOR_PULL_REQUEST_NUMBER" != '' ]; then
  PULL_REQUEST_ID="pulls/$APPVEYOR_PULL_REQUEST_NUMBER"
  MERGE_BASE=`wget -qO - 
    https://api.github.com/repos/${APPVEYOR_REPO_NAME}/${PULL_REQUEST_ID} 
    | jq -r ".base.ref"`

  git diff --name-only HEAD origin/$MERGE_BASE > .pvs-pr.list
  pvs-studio-analyzer analyze -j8 
                              -o PVS-Studio.log 
                              --disableLicenseExpirationCheck 
                              --dump-files --dump-log pvs-dump.log 
                              -S .pvs-pr.list
else
  pvs-studio-analyzer analyze -j8 
                              -o PVS-Studio.log 
                              --disableLicenseExpirationCheck
fi

plog-converter -t errorfile PVS-Studio.log --cerr -w

Tiyeni tiwone gawo ili la code:

PWD=$(pwd -L)
if [ "$APPVEYOR_PULL_REQUEST_NUMBER" != '' ]; then
  PULL_REQUEST_ID="pulls/$APPVEYOR_PULL_REQUEST_NUMBER"
  MERGE_BASE=`wget -qO - 
   https://api.github.com/repos/${APPVEYOR_REPO_NAME}/${PULL_REQUEST_ID} 
   | jq -r ".base.ref"`

  git diff --name-only HEAD origin/$MERGE_BASE > .pvs-pr.list
  pvs-studio-analyzer analyze -j8 
                              -o PVS-Studio.log 
                              --disableLicenseExpirationCheck 
                              --dump-files --dump-log pvs-dump.log 
                              -S .pvs-pr.list
else
  pvs-studio-analyzer analyze -j8 
                              -o PVS-Studio.log 
                              --disableLicenseExpirationCheck
fi

Ntchito yeniyeni ya mtengo wa lamulo la pwd ku zosinthika zomwe ziyenera kusunga mtengo wosasinthazi zikuwoneka zachilendo poyang'ana koyamba, komabe, ndikufotokozera zonse mumphindi.

Ndikukhazikitsa analyzer mu AppVeyor, ndinakumana ndi khalidwe lachilendo kwambiri la analyzer. Kumbali imodzi, zonse zinayenda bwino, koma kusanthula sikunayambe. Ndakhala nthawi yayitali ndikuwona kuti tili mu /home/appveyor/projects/testcalc/ directory, ndipo wosanthula akutsimikiza kuti tili mu /opt/appveyor/build-agent/. Kenaka ndinazindikira kuti kusiyana kwa $ PWD ndi bodza pang'ono. Pachifukwa ichi, ndidasinthiratu mtengo wake ndisanayambe kusanthula.

Ndiyeno zonse, monga kale:

Kuwunika kwa zomwe amachita ndikukoka zopempha mu Travis CI, Buddy ndi AppVeyor pogwiritsa ntchito PVS-Studio
Tsopano lingalirani zachidule chotsatirachi:

PULL_REQUEST_ID="pulls/$APPVEYOR_PULL_REQUEST_NUMBER"
MERGE_BASE=`wget -qO - 
  https://api.github.com/repos/${APPVEYOR_REPO_NAME}/${PULL_REQUEST_ID} 
  | jq -r ".base.ref"`

Mmenemo, timapeza kusiyana pakati pa nthambi zomwe pempho la kukoka likulengezedwa. Kuti tichite izi, tifunika mitundu yotsatirayi:

  • $APPVEYOR_PULL_REQUEST_NUMBER - kukoka nambala yopempha;
  • $APPVEYOR_REPO_NAME - dzina lolowera ndi nkhokwe ya polojekiti.

Pomaliza

Zachidziwikire, sitinaganizire ntchito zonse zophatikizira zopitilira, komabe, onse ali ndi ntchito yofananira. Kupatula caching, ntchito iliyonse imapanga "njinga" yake, kotero zonse zimakhala zosiyana nthawi zonse.

Kwinakwake, monga Travis-CI, mizere ingapo ya code ndi caching imagwira ntchito bwino; kwinakwake, monga mu AppVeyor, mumangofunika kufotokoza chikwatu pazosintha; koma penapake muyenera kupanga makiyi apadera ndikuyesera kutsimikizira dongosolo kuti likupatseni mwayi wolemba fragment yosungidwa. Choncho, ngati mukufuna kukhazikitsa kukoka pempho kusanthula ntchito mosalekeza kuphatikiza zomwe sizinakambidwe pamwambapa, ndiye choyamba onetsetsani kuti simudzakhala ndi vuto ndi caching.

Zikomo chifukwa chakumvetsera. Ngati china chake sichikuyenda, khalani omasuka kutilembera pa chithandizo. Tilangiza ndikuthandiza.

Kuwunika kwa zomwe amachita ndikukoka zopempha mu Travis CI, Buddy ndi AppVeyor pogwiritsa ntchito PVS-Studio

Ngati mukufuna kugawana nkhaniyi ndi omvera olankhula Chingerezi, chonde gwiritsani ntchito ulalo womasulira: Maxim Zvyagintsev. Kuwunika kwa zomwe amachita ndikukoka zopempha mu Travis CI, Buddy ndi AppVeyor pogwiritsa ntchito PVS-Studio.

Source: www.habr.com

Kuwonjezera ndemanga