Kuongorora kwekuita uye kudhonza zvikumbiro muTravis CI, Buddy uye AppVeyor uchishandisa PVS-Studio.

Kuongorora kwekuita uye kudhonza zvikumbiro muTravis CI, Buddy uye AppVeyor uchishandisa PVS-Studio.
Kutanga kubva mushanduro 7.04, iyo PVS-Studio analyzer yeC uye C ++ mitauro paLinux uye macOS ine bvunzo sarudzo yekutarisa rondedzero yemafaira akatsanangurwa. Uchishandisa iyo nyowani modhi, unogona kumisikidza analyzer kuti utarise kuita uye kudhonza zvikumbiro. Ichi chinyorwa chinokuratidza maitiro ekumisikidza GitHub purojekiti faira cheki mune yakakurumbira CI (Inoenderera Kubatanidzwa) masisitimu akadai saTravis CI, Buddy uye AppVeyor.

Faira list check mode

PVS Studio chishandiso chekuona zvikanganiso uye zvinogona kukanganisa mune sosi kodhi yezvirongwa zvakanyorwa muC, C ++, C # uye Java. Inoshanda pane 64-bit masisitimu paWindows, Linux uye macOS.

Iyo vhezheni yePVS-Studio 7.04 yeLinux uye macOS ine modhi yekutarisa rondedzero yemafaira epamhepo. Izvi zvinoshanda kumapurojekiti ane kuvaka sisitimu inobvumidza iwe kugadzira faira compile_commands.json. Inodiwa kuti muongorori abudise ruzivo nezve kuunganidzwa kwemafaira akatsanangurwa. Kana yako kuvaka system isingatsigire kugadzira compile_commands.json faira, unogona kuedza kugadzira faira rakadaro uchishandisa utility. Bear.

Zvakare, iyo modhi yekutarisa rondedzero yemafaira inogona kushandiswa pamwe chete neiyo strace trace ye compiler inomhanya (pvs-studio-analyzer trace). Kuti uite izvi, iwe uchafanirwa kutanga waita yakazara kuvaka kwepurojekiti uye kuitevera kuitira kuti analyzer iunganidze ruzivo rwakakwana nezve maparamita ekubatanidza emafaira ese ari kuongororwa.

Nekudaro, iyi sarudzo ine yakakosha drawback - iwe ungangoda kuita yakazara yekuvaka tsvakiridzo yeprojekiti yese pakuvhurwa kwega kwega, iyo pachayo inopesana nepfungwa yekukurumidza kuzvipira cheki. Kana, kana iwe ukachengetedza mhedzisiro yacho pachayo, kunotevera kuburitswa kweanalyzer kunogona kuve kusina kukwana kana iyo sosi faira yekutsamira chimiro ichichinja mushure mekutsvaga (semuenzaniso, itsva #include inowedzerwa kune imwe yemafaira ekutanga).

Naizvozvo, isu hatikurudzire kushandisa iyo faira runyorwa cheki modhi ine trace log yekutarisa kuita kana kudhonza zvikumbiro. Kana iwe uchigona kuita yekuwedzera kuvaka kana uchitarisa kuzvipira, funga kushandisa iyo modhi kuwedzera kuongorora.

Rondedzero yemafaira ezvinyorwa zvekuongorora inochengetwa kune faira remavara uye yakapfuudzwa kune analyzer uchishandisa parameter -S:

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

Iri faira rinotsanangura hama kana nzira dzakakwana dzemafaira, uye imwe neimwe faira itsva inofanira kunge iri pamutsetse mutsva. Inobvumirwa kutsanangura kwete chete mazita emafaira ekuongorora, asiwo zvinyorwa zvakasiyana-siyana. Iyo parser ichaona kuti iyi haisi faira uye inofuratira mutsara. Izvi zvinogona kubatsira pakutaura kana mafaera akatsanangurwa nemaoko. Nekudaro, kazhinji runyorwa rwemafaira ruchagadzirwa panguva yeCI parsing, semuenzaniso mafaera kubva pakuita kana chikumbiro chekudhonza.

Zvino, uchishandisa iyi modhi, unogona kukurumidza kuyedza kodhi nyowani isati yapinda mubazi guru rekusimudzira. Kuti iyo verification system iite kune analyzer yambiro, iyo yekushandisa purogi-inoshandura mureza wakawedzerwa --ratidza-yambiro:

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

Nemureza uyu, shanduri inodzosa kodhi isiri zero kana paine yambiro mumushumo weanalyzer. Uchishandisa kodhi yekudzosa, unogona kuvharidzira hoko yeprecommit, kuzvipira kana kudhonza chikumbiro, uye kuratidza inogadzirwa analyzer mushumo pachiratidziri, igovane kana kutumira netsamba.

Cherechedza. Nguva yekutanga yaunotanga kuongorora rondedzero yemafaira, iyo purojekiti yese ichaongororwa, nekuti iyo analyzer inoda kuburitsa faira rekutsamira kweiyo purojekiti sosi mafaera pamafaira emusoro. Ichi chinhu chekuparadzanisa C uye C ++ mafaera. Mune ramangwana, iyo yekutsamira faira inogona kuvharirwa uye ichagadziridzwa otomatiki neanalyzer. Mukana wekutarisa unoita kana uchishandisa filelist cheki modhi pamusoro pekushandisa incremental parsing mode ndeyekuti iyo chete faira inoda kuvharirwa, kwete iyo chinhu mafaera.

General nheyo dzekudhonza chikumbiro chekuongorora

Kuongororwa kweprojekti yese kunotora nguva yakawanda, saka zvine musoro kutarisa chimwe chikamu chayo chete. Dambudziko nderekuti iwe unofanirwa kuparadzanisa mafaera matsva kubva kune mamwe mafaera eprojekiti.

Chimbofunga muenzaniso wemuti wekuita une matavi maviri:

Kuongorora kwekuita uye kudhonza zvikumbiro muTravis CI, Buddy uye AppVeyor uchishandisa PVS-Studio.

Ngatiedzei kuti kuzvipira A1 ine nhamba yakakura yekodhi yakatoongororwa. Nguva diki yapfuura takagadzira bazi kubva kukuzvipira A1 uye akachinja mamwe mafaira.

Zvechokwadi, wakaona kuti pashure A1 pakanga paine mamwe maviri ekuita, asi aya aivewo masanganiswa emamwe matavi, nekuti isu hatipindire tenzi. Uye zvino nguva yasvika hotfix ready. Naizvozvo, chikumbiro chekudhonza chakaonekwa chekubatanidza B3 ΠΈ A3.

Zvechokwadi, zvingave zvichibvira kutarisa mugumisiro wose wekubatana kwavo, asi izvi zvingava zvakanyanyisa uye zvisina kufanira, sezvo mafaira mashomanana chete akachinjwa. Nokudaro, zvinonyanya kushanda kuongorora chete zvakashandurwa.

Kuti tiite izvi, tinowana musiyano pakati pematavi, tiri muMUSO webazi ratinoda kusanganisa kuita tenzi:

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

$MERGE_BASE tichakurukura zvakadzama gare gare. Icho chokwadi ndechekuti haisi yega yega sevhisi yeCI inopa ruzivo rwakakosha nezve hwaro hwekubatanidza, saka nguva dzese iwe unofanirwa kuuya nenzira nyowani dzekuwana iyi data. Izvi zvichatsanangurwa pazasi mune yega yega masevhisi ewebhu anotsanangurwa.

Saka, takawana musiyano pakati pematavi, kana kuti, rondedzero yemazita emafaira akashandurwa. Iye zvino tinofanira kupa faira .pvs-pr.list (isu takadzosera zvabuda pamusoro payo) kune analyzer:

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

Mushure mekuongorora, tinoda kushandura faira regi (PVS-Studio.log) kuita chimiro chinoverengwa:

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

Murairo uyu unonyora zvikanganiso mukati stderr (standard error output stream).

Pano chete hatidi chete kuratidza zvikanganiso, asiwo kuzivisa sevhisi yedu yekuungana uye kuyedzwa nezvekuvapo kwezvinetso. Nokuda kweizvi, mureza wakawedzerwa kune chekushandura -W (--ratidza-yambiro) Kana paine kanenge imwe analyzer yambiro, iyo yekudzoka kodhi yekushandisa purogi-inoshandura ichachinja kuita 2, iyo inozozivisa iyo CI sevhisi kuti pane zvingangokanganisa mukudhonza mafaera ekukumbira.

Travis C.I.

Kugadziriswa kunoitwa nenzira yefaira .travis.yml. Kuti zvive nyore, ini ndinokupa zano kuti uise zvese mune yakaparadzana bash script ine mabasa anozodaidzwa kubva mufaira .travis.yml (bash scriptname.sh function_name).

Isu tichawedzera kodhi inodiwa kune script pa Bash, saka tinowana mamwe maitiro. Muchikamu install ngatinyore zvinotevera:

install:
  - bash .travis.sh travis_install

Kana wanga uine chero mirairo, unogona kuiendesa kune script nekubvisa mahyphens.

Ngativhure faira .travis.sh uye wedzera analyzer setup kune basa 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 
}

Zvino ngatiwedzere kune chikamu chinyorwa run analysis:

script:
  - bash .travis.sh travis_script

Uye mune 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
}

Iyi kodhi inofanira kuitwa mushure mekunge purojekiti yavakwa, semuenzaniso, kana wanga uine CMake kuvaka:

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

Zvichaita sezvizvi:

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
}

Iwe unogona kunge watoona iyo yakatsanangurwa nharaunda inosiyana. $TRAVIS_PULL_REQUEST ΠΈ $TRAVIS_BRANCH. Travis CI inovazivisa yega:

  • $TRAVIS_PULL_REQUEST inochengeta nhamba yekukumbira yekudhonza, kana venhemakana riri davi ramazuva ose;
  • $TRAVIS_REPO_SLUG inochengeta zita renzvimbo yeprojekiti.

Iyo algorithm yeiyi basa:

Kuongorora kwekuita uye kudhonza zvikumbiro muTravis CI, Buddy uye AppVeyor uchishandisa PVS-Studio.
Travis CI inopindura kudzorera makodhi, saka kuvapo kweyambiro kunoudza sevhisi kuti iratidze chibvumirano sebuggy.

Ngatitarisei zvakanyanya pamutsara uyu wekodhi:

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

Icho chokwadi ndechekuti Travis CI inobatanidza matavi otomatiki panguva yekuongororwa kwechikumbiro chekudhonza:

Kuongorora kwekuita uye kudhonza zvikumbiro muTravis CI, Buddy uye AppVeyor uchishandisa PVS-Studio.
Nokudaro, tinoongorora A4asi kwete B3->A3. Nekuda kwechinhu ichi, isu tinofanirwa kuverenga mutsauko kubva А3, inongori pamusoro pebazi kubva zvakabva.

Chinhu chimwe chakakosha chinoramba chiripo - kuchengetedza zvinotsamira pamafaira emusoro pazvikamu zveshanduro zvakaunganidzwa (*.c, *.cc, *.cpp, etc.). Iyo analyzer inoverengera izvi zvinotsamira pakutanga kwekutanga mumodhi yekutarisa rondedzero yemafaira uye wozoachengeta mu.PVS-Studio dhairekitori. Travis CI inokutendera kuti uchengetedze maforodha, saka isu tichachengetedza dhairekitori data .PVS-Studio/:

cache:
  directories:
    - .PVS-Studio/

Iyi kodhi inoda kuwedzerwa kufaira .travis.yml. Iri dhairekitori rinochengeta data rakasiyana rakaunganidzwa mushure mekuongorora, izvo zvinonyanya kukurumidza kunotevera kumhanya kwefaira rekuongorora kana kuwedzera kuongororwa. Kana izvi zvikasaitwa, saka analyzer anozonyatso ongorora mafaera ese nguva dzese.

Buddy

SaTravis C.I., Buddy inopa kugona kugadzira otomatiki uye kuyedza mapurojekiti anochengetwa paGitHub. Kusiyana neTravis CI, inogadziriswa muwebhu interface (bash rutsigiro iripo), saka hapana chikonzero chekuchengeta mafaera ekugadzirisa mupurojekiti.

Chekutanga pane zvese, isu tinofanirwa kuwedzera chiito chitsva kumutsetse wekuvaka:

Kuongorora kwekuita uye kudhonza zvikumbiro muTravis CI, Buddy uye AppVeyor uchishandisa PVS-Studio.
Rondedzera iyo compiler yakashandiswa kugadzira chirongwa. Ziva iyo docker mudziyo wakaiswa mune ichi chiitiko. Semuenzaniso, kune yakakosha mudziyo weGCC:

Kuongorora kwekuita uye kudhonza zvikumbiro muTravis CI, Buddy uye AppVeyor uchishandisa PVS-Studio.
Iye zvino ngatiise PVS-Studio uye zvinodiwa:

Kuongorora kwekuita uye kudhonza zvikumbiro muTravis CI, Buddy uye AppVeyor uchishandisa PVS-Studio.
Wedzera mitsara inotevera kumupepeti:

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

Zvino ngatiendei kuRun tab (iyo yekutanga icon) uye wedzera iyo inotevera kodhi kune inoenderana mupepeti ndima:

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

Kana iwe wakaverenga chikamu paTravs-CI, saka iyi kodhi yatove kujaira kwauri, zvisinei, ikozvino pane nhanho nyowani:

Kuongorora kwekuita uye kudhonza zvikumbiro muTravis CI, Buddy uye AppVeyor uchishandisa PVS-Studio.
Icho chokwadi ndechekuti ikozvino hatisi kuongorora mhedzisiro yekubatanidza, asi MUSORO webazi kubva kwairi kunoitwa chikumbiro chekudhonza:

Kuongorora kwekuita uye kudhonza zvikumbiro muTravis CI, Buddy uye AppVeyor uchishandisa PVS-Studio.
Saka tiri muchibvumirano chezvisungo B3 uye tinofanira kuwana mutsauko kubva 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

Zvekugadzirisa A3 Ngatishandisei GitHub API:

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

Isu takashandisa anotevera akasiyana akapihwa naBuddy:

  • $BUDDY_EXECUTION_PULL_REQEUST_NO - dhonza chikumbiro nhamba;
  • $BUDDY_REPO_SLUG - musanganiswa wezita rekushandisa uye repository (semuenzaniso max / bvunzo).

Zvino ngatichengetedzei shanduko tichishandisa bhatani riri pazasi, uye tigone kudhonza chikumbiro chekuongorora:

Kuongorora kwekuita uye kudhonza zvikumbiro muTravis CI, Buddy uye AppVeyor uchishandisa PVS-Studio.
Kusiyana neTravis CI, isu hatifanire kutsanangura .pvs-studio ye caching, sezvo Buddy anozvivharira mafaera ese ekutanga kunotevera. Naizvozvo, chinhu chekupedzisira chasara kuchengetedza login uye password yePVS-Studio muBuddy. Mushure mekuchengetedza shanduko, isu tichadzokera kuPipeline. Isu tinofanirwa kuenda kune kumisikidza zvinosiyana uye kuwedzera login uye kiyi yePVS-Studio:

Kuongorora kwekuita uye kudhonza zvikumbiro muTravis CI, Buddy uye AppVeyor uchishandisa PVS-Studio.
Mushure meizvozvo, kutaridzika kwechikumbiro chitsva chekudhonza kana kuzvipira kunokonzeresa cheki. Kana kuzvipira kuine zvikanganiso, ipapo Buddy anozonongedza pane yekudhonza peji peji.

AppVeyor

Kumisikidza AppVeyor kwakafanana neBuddy, sezvo zvese zvichiitika muwebhu interface uye hapana chikonzero chekuwedzera *.yml faira kune purojekiti repository.

Handei kune Settings tebhu mune yeprojekiti overview:

Kuongorora kwekuita uye kudhonza zvikumbiro muTravis CI, Buddy uye AppVeyor uchishandisa PVS-Studio.
Ngatiburutse pasi peji rino uye tigone kuchengetedza cache yekuvaka zvikumbiro zvekudhonza:

Kuongorora kwekuita uye kudhonza zvikumbiro muTravis CI, Buddy uye AppVeyor uchishandisa PVS-Studio.
Zvino ngatiendei kune Yemamiriro ekunze tab, kwatinotsanangura mufananidzo wekuvaka uye inodiwa nharaunda inosiyana:

Kuongorora kwekuita uye kudhonza zvikumbiro muTravis CI, Buddy uye AppVeyor uchishandisa PVS-Studio.
Kana wakaverenga zvikamu zvakapfuura, unonyatsoziva nezvemhando mbiri idzi βˆ’ PVS_KEY ΠΈ PVS_USERNAME. Kana zvisina kudaro, rega ndikuyeuchidze kuti ivo vanofanirwa kutarisa rezinesi rePVS-Studio analyzer. Mune ramangwana, tichasangana navo zvakare muzvinyorwa zveBash.

Pa peji rimwechete pazasi, tsanangura iyo folda ye caching:

Kuongorora kwekuita uye kudhonza zvikumbiro muTravis CI, Buddy uye AppVeyor uchishandisa PVS-Studio.
Kana tikasaita izvi, tinozoongorora purojekiti yese panzvimbo yemafaira akati wandei, asi isu tichawana zvakabuda zvichibva pane yakatarwa mafaera. Naizvozvo, zvakakosha kuti uise zita rakakodzera redhairekitori.

Iye zvino yave nguva yekuti script iedze. Vhura iyo Test tab uye sarudza Script:

Kuongorora kwekuita uye kudhonza zvikumbiro muTravis CI, Buddy uye AppVeyor uchishandisa PVS-Studio.
Namira kodhi inotevera mufomu iri:

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

Ngatitarisei chikamu chinotevera chekodhi:

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

Iko kupihwa chaiko kwekukosha kweiyo pwd yekuraira kuchinjika iyo inofanirwa kuchengetedza iyi yakasarudzika kukosha inoita seisinganzwisisike pakutanga kutarisa, zvisinei, ini ndichatsanangura zvese nechinguva chidiki.

Ndichiri kumisikidza analyzer muAppVeyor, ndakasangana nemaitiro anoshamisa emuanalyzer. Kune rumwe rutivi, zvinhu zvose zvakashanda zvakanaka, asi kuongorora hakuna kutanga. Ndakapedza nguva yakawanda ndichiona kuti tiri mu/home/appveyor/projects/testcalc/dhairekitori, uye muongorori ane chokwadi chekuti tiri mu/opt/appveyor/build-agent/. Ndakabva ndaona kuti $PWD chinja manyepo. Nechikonzero ichi, ini pamaoko ndakagadzirisa kukosha kwayo ndisati ndatanga ongororo.

Uye zvino zvese, sepakutanga:

Kuongorora kwekuita uye kudhonza zvikumbiro muTravis CI, Buddy uye AppVeyor uchishandisa PVS-Studio.
Zvino funga zvinotevera snippet:

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"`

Mariri, tinowana musiyano pakati pematavi apo chikumbiro chekudhonza chinoziviswa. Kuti tiite izvi tinoda zvinotevera magariro akasiyana:

  • $APPVEYOR_PULL_REQUEST_NUMBER - dhonza chikumbiro nhamba;
  • $APPVEYOR_REPO_NAME - zita rekushandisa uye purojekiti repository.

mhedziso

Ehe, isu hatina kufunga ese anogona kuenderera mberi ekubatanidza masevhisi, zvisinei, iwo ese ane basa rakafanana chaizvo. Kunze kwe caching, sevhisi yega yega inoita "bhasikoro" yayo, saka zvese zvinogara zvakasiyana.

Kumwe kunhu, senge muTravis-CI, mitsetse miviri yekodhi uye caching inoshanda zvisina mhosva; kumwe kunhu, seAppVeyor, iwe unongoda kutsanangura iyo folda muzvirongwa; asi pane imwe nzvimbo iwe unofanirwa kugadzira makiyi akasarudzika uye edza kunyengerera sisitimu kuti ikupe iwe mukana wekunyora iyo cached fragment. Naizvozvo, kana iwe uchida kuseta kudhonza chikumbiro chekuongorora pane inoenderera mberi yekubatanidza sevhisi isina kukurukurwa pamusoro, saka tanga waita shuwa kuti hauzove nematambudziko necaching.

Ndinokutendai nekuteerera kwenyu. Kana chimwe chinhu chisingashande, saka inzwa wakasununguka kutinyorera pa tsigiro. Tichapa mazano nekubatsira.

Kuongorora kwekuita uye kudhonza zvikumbiro muTravis CI, Buddy uye AppVeyor uchishandisa PVS-Studio.

Kana iwe uchida kugovera chinyorwa ichi nevateereri vanotaura Chirungu, tapota shandisa shanduro yekushandura: Maxim Zvyagintsev. Kuongorora kwekuita uye kudhonza zvikumbiro muTravis CI, Buddy uye AppVeyor uchishandisa PVS-Studio..

Source: www.habr.com

Voeg