Di Travis CI, Buddy û AppVeyor de bi karanîna PVS-Studio ve vekolînên betlaneyan û daxwazên kişandinê

Di Travis CI, Buddy û AppVeyor de bi karanîna PVS-Studio ve vekolînên betlaneyan û daxwazên kişandinê
Di analyzera PVS-Studio de ji bo zimanên C û C++ yên li ser Linux û macOS-ê, ji guhertoya 7.04-ê dest pê dike, derfetek ceribandinê xuya bû ku navnîşa pelên diyarkirî kontrol bike. Bi karanîna moda nû, hûn dikarin analîzkerê mîheng bikin da ku peywiran kontrol bike û daxwazan bikişîne. Ev gotar dê nîşanî we bide ka meriv çawa di pergalên populer ên CI (Integrasyona Berdewam) ên wekî Travis CI, Buddy û AppVeyor de, kontrolkirina lîsteya pelê ya projeya GitHub saz dike.

Moda kontrolkirina lîsteya pelan

PVS Studio Amûrek ji bo tespîtkirina xeletî û qelsiyên potansiyel ên di koda çavkaniyê ya bernameyên ku bi C, C++, C# û Java hatine nivîsandin de ye. Li ser pergalên 64-bit li ser Windows, Linux û macOS dixebite.

Guhertoya PVS-Studio 7.04 ji bo Linux û macOS ji bo kontrolkirina navnîşa pelên çavkaniyê modek heye. Ev ji bo projeyên ku pergala avakirina wan dihêle hûn pelek çêbikin dixebite compile_commands.json. Ji bo analîzer hewce ye ku agahdariya li ser berhevkirina pelên diyarkirî derxe. Ger pergala avakirina we piştgirî nade çêkirina pelek compile_commands.json, hûn dikarin bi karanîna karûbar biceribînin ku pelek wusa çêbikin. Hirç.

Di heman demê de, awayê kontrolkirina navnîşa pelan dikare bi şopa şopa berhevkeran (pvs-studio-analyzer trace) re were bikar anîn. Ji bo kirina vê yekê, hûn ê pêşî hewce bikin ku avahiyek tevahî ya projeyê pêk bînin û wê bişopînin da ku analîzer agahdariya bêkêmasî li ser pîvanên berhevkirina hemî pelên ku têne kontrol kirin berhev bike.

Lêbelê, vê vebijarkê kêmasiyek girîng heye - hûn ê hewce bikin ku di her destpêkirinê de şopek avakirina tevahî ya projeyê pêk bînin, ku bi serê xwe berevajî ramana kontrolkirina bilez a bilez e. An jî, heke hûn encama şopandinê bixwe cache bikin, dibe ku destpêkirina paşîn a analyzerê ne temam bibe heke strukturek girêdayîbûna pelê çavkaniyê piştî şopandinê biguhezîne (mînak, #include nû li yek ji pelên çavkanî tê zêdekirin).

Ji ber vê yekê, em pêşniyar nakin ku moda kontrolkirina navnîşa pelan bi têketinek şopandinê re bikar bînin da ku ceribandinan kontrol bikin an daxwazan bikişînin. Dema ku hûn dikarin dema ku ceribandinek kontrol dikin avahiyek zêde bikin, bi karanîna modê bifikirin analîza zêde.

Navnîşa pelên çavkaniyê yên ji bo analîzê li pelek nivîsê tê hilanîn û bi karanîna pîvanê ji analyzerê re derbas dibe -S:

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

Ev pel riyên nisbî an mutleq ên pelan diyar dike, û her pelek nû divê li ser rêzek nû be. Destûr e ku meriv ne tenê navên pelan ji bo analîzê, lê di heman demê de nivîsên cihêreng jî diyar bike. Parser dê bibîne ku ev ne pelek e û dê rêzê paşguh bike. Heke pelên bi destan têne diyar kirin ev dikare ji bo şîrovekirinê kêrhatî be. Lêbelê, pir caran navnîşa pelan dê di dema parskirina CI-ê de were çêkirin, mînakî pelên ji commit an daxwazek kişandinê.

Naha, bi karanîna vê modê, hûn dikarin zû koda nû biceribînin berî ku ew têkeve şaxê pêşkeftina sereke. Ji bo ku pergala verastkirinê bersivê bide hişyariyên analîzker, karûbar plog-converter ala lê zêde kirin --nîşandan-hişyarî:

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

Bi vê alê re, heke di rapora analîzerê de hişyarî hebin, veguhezkar dê kodek ne-sifir vegere. Bi karanîna koda vegerê, hûn dikarin çengek pêşdibistanê asteng bikin, daxwazek bipejirînin an bikişînin, û raporta analîzerê çêkirî li ser ekranê nîşan bidin, wê parve bikin an bi e-nameyê bişînin.

Not. Cara yekem ku hûn dest bi analîzkirina navnîşa pelan dikin, dê tevahî proje were analîz kirin, ji ber ku pêdivî ye ku analîzer pelek girêdayî pelên çavkaniya projeyê li ser pelên sernavê çêbike. Ev taybetmendiyek parskirina pelên C û C++ ye. Di pêşerojê de, pelê girêdayîbûnê dikare were cachekirin û ew ê bixweber ji hêla analîstê ve were nûve kirin. Feydeya kontrolkirina peywiran dema ku moda kontrolê ya pelan bikar tîne li ser karanîna moda parskirina zêde ev e ku tenê ew pel pêdivî ye ku were cache kirin, ne pelên objektê.

Prensîbên gelemperî yên analîzkirina daxwaza kişandinê

Analîzkirina tevahiya projeyê gelek dem digire, ji ber vê yekê têgihîştî ye ku meriv tenê hin beşek wê kontrol bike. Pirsgirêk ev e ku hûn hewce ne ku pelên nû ji pelên mayî yên projeyê veqetînin.

Nimûneyek ji dara commitê ya bi du çiqilan re bifikirin:

Di Travis CI, Buddy û AppVeyor de bi karanîna PVS-Studio ve vekolînên betlaneyan û daxwazên kişandinê

Werin em îdia bikin ku ev pêk hatiye A1 hejmareke pir mezin a kodê heye ku berê hatî kontrol kirin. Demek berê me şaxek ji komîtê çêkir A1 û hin pel guhert.

Bê guman, we piştî vê yekê dît A1 du komîteyên din jî hebûn, lê ev jî yekbûna şaxên din bûn, ji ber ku em li hev nakin. mamoste. Û niha dem hatiye hotfix amade. Ji ber vê yekê, daxwazek vekişînê ji bo yekbûnê xuya bû B3 и A3.

Bê guman, dê gengaz be ku tevahiya encama hevgirtina wan were kontrol kirin, lê ev ê pir dirêj û nerast be, ji ber ku tenê çend pel hatine guhertin. Ji ber vê yekê, ew bikêrtir e ku meriv tenê yên guhertî analîz bike.

Ji bo kirina vê yekê, em cûdahiya di navbera şaxan de digirin, ku di SERÊ şaxê de ye ku em dixwazin jê bibin master:

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

$MERGE_BASE em ê paşê bi berfirehî bifikirin. Rastî ev e ku ne her karûbarê CI agahdariya pêwîst di derbarê bingehê de ji bo hevgirtinê peyda dike, ji ber vê yekê her carê hûn neçar in ku rêyên nû peyda bikin da ku hûn vê daneyê bistînin. Ev ê li jêr di her yek ji karûbarên webê yên ku hatine destnîşan kirin de li jêr were berfireh kirin.

Ji ber vê yekê, me ferqa di navbera şaxan de, an jî, navnîşa navên pelên ku hatine guheztin girt. Niha divê em pelê bidin .pvs-pr.list (me derana li jor jê re beralî kir) ji analyzerê re:

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

Piştî analîzê, pêdivî ye ku em pelê têketinê (PVS-Studio.log) veguherînin forma xwendinê:

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

Ev ferman dê xeletiyên tê de navnîş bike stderr (herikîna derana xeletiya standard).

Tenê li vir em ne tenê hewce ne ku xeletiyan nîşan bidin, lê di heman demê de karûbarê xwe ji bo kombûn û ceribandinê di derbarê hebûna pirsgirêkan de jî agahdar bikin. Ji bo vê yekê, alek li veguherîner hate zêdekirin -W (--nîşandan-hişyarî). Ger bi kêmanî yek hişyariya analîstê hebe, koda vegerê ya kargêriyê plog-converter dê bibe 2, ku di encamê de dê karûbarê CI agahdar bike ku di pelên daxwaza kişandinê de xeletiyên potansiyel hene.

Travis C.I.

Veavakirin di forma pelê de pêk tê .travis.yml. Ji bo rehetiyê, ez ji we re şîret dikim ku hûn her tiştî bi fonksiyonên ku dê ji pelê werin gazî kirin têxin nav skrîptek bash-a veqetandî. .travis.yml (bash scriptname.sh function_name).

Em ê koda pêwîst li ser skrîptê zêde bikin bash, ji ber vê yekê em bêtir fonksiyonê digirin. Di beşa lêkirin em van tiştan binivîsin:

install:
  - bash .travis.sh travis_install

Ger rêwerzên we hebin, hûn dikarin wan bi rakirina dafikan veguhezînin senaryoyê.

Ka em pelê vekin .travis.sh û sazkirina analîzerê li fonksiyonê zêde bikin 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 
}

Niha em li beşê zêde bikin nivîs analîza xebitandinê:

script:
  - bash .travis.sh travis_script

Û di skrîpta bash de:

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
}

Pêdivî ye ku ev kod piştî ku proje were çêkirin were xebitandin, mînakî, heke we avahiyek CMake hebû:

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

Dê bi vî rengî derkeve:

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
}

Dibe ku we berê guhêrbarên hawîrdorê yên diyarkirî dîtiye. $TRAVIS_PULL_REQUEST и $TRAVIS_BRANCH. Travis CI wan bi xwe eşkere dike:

  • $TRAVIS_PULL_REQUEST hejmara daxwaza vekişînê diparêze, an şaşheke ew şaxek normal be;
  • $TRAVIS_REPO_SLUG navê depoya projeyê diparêze.

Algorîtmaya vê fonksiyonê:

Di Travis CI, Buddy û AppVeyor de bi karanîna PVS-Studio ve vekolînên betlaneyan û daxwazên kişandinê
Travis CI bersivê dide kodên vegerê, ji ber vê yekê hebûna hişyariyan dê ji karûbar re bêje ku kirinê wekî xelet nîşan bide.

Ka em ji nêz ve li vê rêzika kodê binêrin:

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

Rastî ev e ku Travis CI di dema analîzkirina daxwazek kişandinê de bixweber şaxan dike yek:

Di Travis CI, Buddy û AppVeyor de bi karanîna PVS-Studio ve vekolînên betlaneyan û daxwazên kişandinê
Ji ber vê yekê em analîz dikin A4û ne B3-> A3. Ji ber vê taybetmendiyê, pêdivî ye ku em cûdahiya ji hesab bikin A3, ku tenê serê şaxê ji reh.

Yek hûrguliyek girîng dimîne - cachkirina girêdanên pelên sernavê yên li ser yekîneyên wergera berhevkirî (*.c, *.cc, *.cpp, hwd.). Analîzker van pêwendiyan di destpêka yekem de di moda kontrolkirina navnîşa pelan de hesab dike û dûv re wan di pelrêça .PVS-Studio de hilîne. Travis CI dihêle hûn peldankan cache bikin, ji ber vê yekê em ê daneyên peldankê hilînin .PVS-Studio/:

cache:
  directories:
    - .PVS-Studio/

Pêdivî ye ku ev kod li pelê were zêdekirin .travis.yml. Ev pelrêça daneyên cûrbecûr yên ku piştî analîzê hatine berhev kirin hilîne, ku ev ê bi girîngî rêveçûna paşerojê ya analîza navnîşa pelan an analîza zêdebûnê bilez bike. Ger ev neyê kirin, wê hingê analîzer dê her carê bi rastî hemî pelan analîz bike.

Buddy

Mîna Travis C.I., Buddy şiyana ku bixweber projeyên ku li GitHub têne hilanîn çêkirin û ceribandin peyda dike. Berevajî Travis CI, ew di navgîniya malperê de tête mîheng kirin (piştgiriya bash heye), ji ber vê yekê ne hewce ye ku pelên mîhengê di projeyê de hilînin.

Berî her tiştî, divê em çalakiyek nû li xeta avakirinê zêde bikin:

Di Travis CI, Buddy û AppVeyor de bi karanîna PVS-Studio ve vekolînên betlaneyan û daxwazên kişandinê
Berhevkarê ku ji bo avakirina projeyê hatî bikar anîn destnîşan bikin. Bala xwe bidin konteynera dokerê ya ku di vê çalakiyê de hatî saz kirin. Mînakî, ji bo GCC konteynirek taybetî heye:

Di Travis CI, Buddy û AppVeyor de bi karanîna PVS-Studio ve vekolînên betlaneyan û daxwazên kişandinê
Naha em werin PVS-Studio û karûbarên pêwîst saz bikin:

Di Travis CI, Buddy û AppVeyor de bi karanîna PVS-Studio ve vekolînên betlaneyan û daxwazên kişandinê
Rêzên jêrîn li edîtorê zêde bikin:

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

Naha em biçin tabloya Run (îkona yekem) û koda jêrîn li qada edîtorê têkildar lê zêde bikin:

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

Ger we beşa li ser Travs-CI xwendiye, wê hingê ev kod jixwe ji we re nas e, lêbelê, naha gavek nû heye:

Di Travis CI, Buddy û AppVeyor de bi karanîna PVS-Studio ve vekolînên betlaneyan û daxwazên kişandinê
Rastî ev e ku naha em ne encama hevgirtinê, lê SERÊ şaxê ku jê daxwaza kişandinê tê kirin, analîz dikin:

Di Travis CI, Buddy û AppVeyor de bi karanîna PVS-Studio ve vekolînên betlaneyan û daxwazên kişandinê
Ji ber vê yekê em di nav peymanek şertî de ne B3 û divê em ferqê jê bistînin 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

Xwestin kirin A3 Ka em API-ya GitHub bikar bînin:

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

Me guhêrbarên jêrîn ên ku ji hêla Buddy ve hatî peyda kirin bikar anîn:

  • $BUDDY_EXECUTION_PULL_REQEUST_NO - hejmara daxwaza vekişînê;
  • $BUDDY_REPO_SLUG - berhevokek navê bikarhêner û depoyê (mînakî max / test).

Naha em guheztinan bi karanîna bişkoja jêrîn hilînin, û analîza daxwaza kişandinê çalak bikin:

Di Travis CI, Buddy û AppVeyor de bi karanîna PVS-Studio ve vekolînên betlaneyan û daxwazên kişandinê
Berevajî Travis CI, em ne hewce ne ku diyar bikin .pvs-studio ji bo cachkirinê, ji ber ku Buddy ji bo destpêkirinên paşîn bixweber hemî pelan vedişêre. Ji ber vê yekê, tiştê paşîn mayî ev e ku meriv têketin û şîfreya PVS-Studio li Buddy hilîne. Piştî tomarkirina guhertinan, em ê vegerin ser Pipeline. Pêdivî ye ku em biçin mîhengkirina guhêrbaran û têketin û mifteyê ji bo PVS-Studio zêde bikin:

Di Travis CI, Buddy û AppVeyor de bi karanîna PVS-Studio ve vekolînên betlaneyan û daxwazên kişandinê
Piştî wê, xuyangkirina daxwazek nû ya kişandinê an jî kirina dê kontrolek bike. Ger commit xeletî hebe, wê hingê Buddy wê li ser rûpela daxwaza kişandinê destnîşan bike.

AppVeyor

Sazkirina AppVeyor dişibihe Buddy, ji ber ku her tişt di navgîniya malperê de diqewime û ne hewce ye ku pelek *.yml li depoya projeyê zêde bike.

Ka em biçin tabloya Mîhengan di pêşandana projeyê de:

Di Travis CI, Buddy û AppVeyor de bi karanîna PVS-Studio ve vekolînên betlaneyan û daxwazên kişandinê
Ka em vê rûpelê jêrîn bigerin û ji bo avakirina daxwazên kişandinê tomarkirina cache çalak bikin:

Di Travis CI, Buddy û AppVeyor de bi karanîna PVS-Studio ve vekolînên betlaneyan û daxwazên kişandinê
Naha em biçin tabloya Jîngehê, li wir em wêneyê ku were çêkirin û guhêrbarên jîngehê yên pêwîst diyar dikin:

Di Travis CI, Buddy û AppVeyor de bi karanîna PVS-Studio ve vekolînên betlaneyan û daxwazên kişandinê
Ger we beşên berê xwendibe, hûn bi van her du guherbaran re pir nas in - PVS_KEY и PVS_USERNAME. Heke ne, wê hingê bila ez ji we re bi bîr bînim ku ew hewce ne ku lîsansa analîzerê PVS-Studio kontrol bikin. Di pêşerojê de, em ê wan dîsa bi tîpên Bash bibînin.

Di heman rûpelê jêrîn de, peldanka ji bo cachkirinê diyar bikin:

Di Travis CI, Buddy û AppVeyor de bi karanîna PVS-Studio ve vekolînên betlaneyan û daxwazên kişandinê
Ger em wiya nekin, wê hingê em ê li şûna çend pelan tevahiya projeyê analîz bikin, lê em ê li gorî pelên diyarkirî encam bistînin. Ji ber vê yekê, girîng e ku navê pelrêça rast têkevin.

Niha dema ceribandina senaryoyê ye. Tabloya Tests vekin û Skrîpt hilbijêrin:

Di Travis CI, Buddy û AppVeyor de bi karanîna PVS-Studio ve vekolînên betlaneyan û daxwazên kişandinê
Koda jêrîn di vê formê de bişînin:

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

Ka em li beşa jêrîn a kodê binêrin:

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

Vebijêrkek taybetî ya nirxa fermana pwd ji guhêrbarek ku divê vê nirxa xwerû hilîne di nihêrîna pêşîn de xerîb xuya dike, lêbelê, ez ê di kêliyekê de her tiştî rave bikim.

Dema ku analîzkerê li AppVeyor-ê saz kir, ez rastî tevgerek pir ecêb a analîzer hatim. Ji aliyekî ve, her tişt rast xebitî, lê analîz dest pê nekir. Min gelek wext derbas kir ku em di pelrêça /home/appveyor/projects/testcalc/ de ne, û analîzer piştrast e ku em di /opt/appveyor/build-agent/ de ne. Dûv re min fêm kir ku guhêrbar $ PWD hinekî derew e. Ji ber vê yekê, min berî destpêkirina analîzê bi destan nirxa wê nû kir.

Û paşê her tişt, wekî berê:

Di Travis CI, Buddy û AppVeyor de bi karanîna PVS-Studio ve vekolînên betlaneyan û daxwazên kişandinê
Niha pişka jêrîn bifikirin:

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

Di wê de, em cûdahiya di navbera şaxên ku daxwaza kişandinê li ser têne ragihandin de digirin. Ji bo vê yekê em hewceyê guhêrbarên hawîrdorê yên jêrîn in:

  • $APPVEYOR_PULL_REQUEST_NUMBER - jimareya daxwaza kişandinê;
  • $APPVEYOR_REPO_NAME - navê bikarhêner û depoya projeyê.

encamê

Bê guman, me hemî karûbarên întegrasyonê yên domdar ên mimkun nehesiband, lêbelê, ew hemî taybetmendiyên xebata pir dişibin hev. Ji bilî cachkirinê, her karûbar "bike" xwe çêdike, ji ber vê yekê her tişt her gav cûda ye.

Li deverek, mîna li Travis-CI, çend rêzikên kod û cachkirinê bêkêmasî dixebitin; li cîhek, wekî AppVeyor, hûn tenê hewce ne ku peldankê di mîhengan de diyar bikin; lê li cîhek hûn hewce ne ku mifteyên yekta biafirînin û hewl bidin ku pergalê qanih bikin da ku fersendê bide we ku hûn perçeya cache ji nû ve binivîsin. Ji ber vê yekê, heke hûn dixwazin analîza daxwaza kişandinê li ser karûbarek întegrasyonê ya domdar ku li jor nehatiye nîqaş kirin saz bikin, wê hingê pêşî piştrast bikin ku hûn ê bi cachkirinê re nebin pirsgirêk.

Spas ji bo baldariya we. Ger tiştek bi ser neket, wê hingê bi dilxwazî ​​​​ji me re binivîsin alîkarî. Em ê şîret û alîkariyê bikin.

Di Travis CI, Buddy û AppVeyor de bi karanîna PVS-Studio ve vekolînên betlaneyan û daxwazên kişandinê

Heke hûn dixwazin vê gotarê bi temaşevanên ku bi Îngilîzî diaxivin re parve bikin, ji kerema xwe lînka wergerê bikar bînin: Maxim Zvyagintsev. Di Travis CI, Buddy û AppVeyor de bi karanîna PVS-Studio ve vekolînên betlaneyan û daxwazên kişandinê.

Source: www.habr.com

Add a comment