PVS-Studio көмегімен Travis CI, Buddy және AppVeyor бағдарламаларында тапсырыстар мен тарту сұрауларын талдау

PVS-Studio көмегімен Travis CI, Buddy және AppVeyor бағдарламаларында тапсырыстар мен тарту сұрауларын талдау
Linux және macOS жүйелеріндегі C және C++ тілдеріне арналған PVS-Studio анализаторында 7.04 нұсқасынан бастап көрсетілген файлдар тізімін тексеру үшін сынақ опциясы пайда болды. Жаңа режимді пайдалана отырып, анализаторды тапсырмаларды тексеру және сұрауларды тарту үшін конфигурациялауға болады. Бұл мақалада Travis CI, Buddy және AppVeyor сияқты танымал CI (Үздіксіз интеграция) жүйелерінде GitHub жобасының өзгертілген файлдарының тізімін тексеруді қалай орнату керектігі айтылады.

Файлдар тізімін тексеру режимі

PVS-студиясы C, C++, C# және Java тілдерінде жазылған бағдарламалардың бастапқы кодындағы қателер мен ықтимал осалдықтарды анықтау құралы болып табылады. Windows, Linux және macOS жүйелеріндегі 64 биттік жүйелерде жұмыс істейді.

Linux және macOS жүйесіне арналған PVS-Studio 7.04 нұсқасында бастапқы файлдар тізімін тексеру режимі пайда болды. Бұл құрастыру жүйесі файлды жасауға мүмкіндік беретін жобалар үшін жұмыс істейді compile_commands.json. Ол анализаторға көрсетілген файлдарды құрастыру туралы ақпаратты алу үшін қажет. Құрастыру жүйеңіз compile_commands.json файлын жасауды қолдамаса, қызметтік бағдарламаны пайдаланып осындай файлды жасауға тырысуға болады. аю.

Сондай-ақ, файлдар тізімін тексеру режимін компиляторды іске қосудың жолды бақылау журналымен (pvs-studio-analyzer trace) бірге пайдалануға болады. Ол үшін алдымен жобаның толық құрастырылуын орындау керек және анализатор тексерілетін барлық файлдардың компиляция параметрлері туралы толық ақпаратты жинайтындай оны қадағалау керек.

Дегенмен, бұл опцияның айтарлықтай кемшілігі бар - сіз оны іске қосқан сайын бүкіл жобаны толық құрастыру ізін орындауыңыз керек, бұл міндеттемені жылдам тексеру идеясына қайшы келеді. Немесе із нәтижесінің өзін кэштейтін болсаңыз, бастапқы файлдардың тәуелділік құрылымы ізден кейін өзгерсе, анализатордың келесі іске қосулары аяқталмауы мүмкін (мысалы, бастапқы файлдардың біріне жаңа #include қосылады).

Сондықтан, тапсырмаларды тексеру немесе сұрауларды тарту үшін файлдар тізімін тексеру режимін бақылау журналымен пайдалануды ұсынбаймыз. Тапсырманы тексеру кезінде қосымша құрастыруды орындай алатын болсаңыз, режимді пайдалануды қарастырыңыз қосымша талдау.

Талдауға арналған бастапқы файлдар тізімі мәтіндік файлда сақталады және параметр арқылы анализаторға беріледі -S:

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

Бұл файл файлдардың салыстырмалы немесе абсолютті жолдарын көрсетеді және әрбір жаңа файл жаңа жолда болуы керек. Талдау үшін тек файл атауларын ғана емес, сонымен қатар әртүрлі мәтіндерді де көрсетуге болады. Талдаушы бұл файл емес екенін көреді және жолды елемейді. Бұл файлдар қолмен көрсетілсе, түсініктеме беру үшін пайдалы болуы мүмкін. Дегенмен, көбінесе CI жүйесінде талдау кезінде файлдар тізімі жасалады, мысалы, олар орындау немесе тарту сұрауынан алынған файлдар болуы мүмкін.

Енді осы режимді пайдалана отырып, негізгі әзірлеу тармағына кірмес бұрын жаңа кодты жылдам тексеруге болады. Сканерлеу жүйесінің анализатордың ескертулеріне жауап беретініне көз жеткізу үшін қызметтік бағдарлама плог түрлендіргіш жалауша қосылды --көрсету-ескертулер:

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

Бұл жалаушамен түрлендіргіш анализатор есебінде ескертулер болса, нөлдік емес кодты қайтарады. Қайтару кодын пайдалана отырып, алдын ала орындалатын ілмекке, орындауға немесе тарту сұрауына тыйым салуға болады және жасалған талдаушы есебін көрсетуге, ортақ пайдалануға немесе электрондық пошта арқылы жіберуге болады.

Ескерту. Файлдар тізімін алғаш рет талдауды бастағанда, бүкіл жоба талданады, өйткені анализатор тақырып файлдарында жобаның бастапқы файлдарының тәуелділік файлын жасауы керек. Бұл C және C++ файлдарын талдау мүмкіндігі. Болашақта тәуелділік файлын кэштеуге болады және ол анализатор арқылы автоматты түрде жаңартылады. Қосымша талдау режимін пайдаланудан гөрі файлдар тізімін тексеру режимін пайдаланған кезде тапсырмаларды тексерудің артықшылығы объект файлдарын емес, тек сол файлды кэштеу қажет.

Тарту сұранысын талдаудың жалпы принциптері

Бүкіл жобаны талдау көп уақытты алады, сондықтан оның белгілі бір бөлігін ғана тексеру мағынасы бар. Мәселе мынада, жаңа файлдарды жоба файлдарының қалған бөлігінен бөлу керек.

Екі тармағы бар тапсырма ағашының мысалын қарастырайық:

PVS-Studio көмегімен Travis CI, Buddy және AppVeyor бағдарламаларында тапсырыстар мен тарту сұрауларын талдау

Бұл міндеттемені елестетіп көрейік A1 сыналған кодтың жеткілікті үлкен көлемін қамтиды. Біраз бұрын біз міндеттемеден филиал жасадық A1 және кейбір файлдарды өзгертті.

Сіз, әрине, кейін байқадыңыз A1 тағы екі міндеттеме орын алды, бірақ бұл да басқа филиалдардың бірігуі болды, өйткені біз міндеттеме бермейміз мастер. Ал енді уақыт келді түзету дайын. Сондықтан біріктіру туралы сұрау пайда болды B3 и A3.

Әрине, оларды біріктірудің бүкіл нәтижесін тексеруге болады, бірақ бұл тым көп уақытты қажет етеді және негізсіз болар еді, өйткені бірнеше файлдар ғана өзгертілді. Сондықтан тек өзгертілгендерін талдау тиімдірек.

Ол үшін біз мастерге біріктіргіміз келетін филиалдың БАСЫНДА бола отырып, тармақтар арасындағы айырмашылықты аламыз:

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

$MERGE_BASE кейінірек егжей-тегжейлі қарастырамыз. Өйткені, әрбір CI қызметі біріктіру үшін дерекқор туралы қажетті ақпаратты бермейді, сондықтан әр жолы осы деректерді алудың жаңа жолдарын ойлап табуға тура келеді. Бұл төменде сипатталған веб-қызметтердің әрқайсысында егжей-тегжейлі сипатталады.

Сонымен, біз филиалдар арасындағы айырмашылықты алдық, дәлірек айтсақ, өзгертілген файл атауларының тізімін алдық. Енді біз файлды беруіміз керек .pvs-pr.list (жоғарыдағы шығысты оған қайта бағыттадық) анализаторға:

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

Талдаудан кейін журнал файлын (PVS-Studio.log) оңай оқылатын пішімге түрлендіру қажет:

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

Бұл пәрмен қателерді тізімдейді stderr (стандартты қате туралы хабардың шығуы).

Тек енді ғана қателерді көрсетіп қана қоймай, ақаулардың болуы туралы құрастыру және тестілеу қызметімізге хабарлауымыз керек. Осы мақсатта конвертерге жалауша қосылды -W (--көрсету-ескертулер). Егер анализатордың кем дегенде бір ескертуі болса, утилитаның қайтару коды плог түрлендіргіш 2-ге өзгереді, бұл өз кезегінде CI қызметіне тарту сұрау файлдарында ықтимал қателердің болуы туралы хабарлайды.

Travis CI

Конфигурация файл ретінде жасалған .travis.yml. Ыңғайлы болу үшін барлығын файлдан шақырылатын функциялары бар бөлек bash сценарийіне қоюға кеңес беремін. .travis.yml (bash script_name.sh function_name).

Біз сценарийге қажетті кодты қосамыз bash, осылайша біз көбірек функционалдылыққа ие боламыз. Бөлімде орнату мынаны жазайық:

install:
  - bash .travis.sh travis_install

Егер сізде қандай да бір нұсқаулар болса, оларды сызықшаларды алып тастап, сценарийге тасымалдауға болады.

Файлды ашайық .travis.sh және функцияға анализатор параметрін қосыңыз 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 
}

Енді бөлімге қосайық сценарий талдауды орындау:

script:
  - bash .travis.sh travis_script

Ал bash сценарийінде:

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
}

Бұл код жобаны құрастырғаннан кейін іске қосылуы керек, мысалы, CMake жүйесінде құрастырылған болса:

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

Бұл келесідей болады:

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
}

Сіз бұл ортаның айнымалы мәндерін байқаған боларсыз $TRAVIS_PULL_REQUEST и $TRAVIS_BRANCH. Travis CI оларды дербес жариялайды:

  • $TRAVIS_PULL_REQUEST тарту сұрау нөмірін немесе сақтайды жалған, егер бұл кәдімгі филиал болса;
  • $TRAVIS_REPO_SLUG жоба репозиторийінің атын сақтайды.

Бұл функцияның алгоритмі:

PVS-Studio көмегімен Travis CI, Buddy және AppVeyor бағдарламаларында тапсырыстар мен тарту сұрауларын талдау
Travis CI қайтару кодтарына жауап береді, сондықтан ескертулердің болуы қызметке міндеттемені қателер бар деп белгілеуді айтады.

Енді осы код жолын толығырақ қарастырайық:

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

Шын мәнінде Travis CI тарту сұрауын талдау кезінде филиалдарды автоматты түрде біріктіреді:

PVS-Studio көмегімен Travis CI, Buddy және AppVeyor бағдарламаларында тапсырыстар мен тарту сұрауларын талдау
Сондықтан біз талдаймыз A4, жоқ B3->A3. Осы мүмкіндікке байланысты біз айырмашылықты есептеуіміз керек A3, бұл дәл тармақтың жоғарғы жағы шығу тегі.

Бір маңызды деталь қалды – тақырып файлдарының құрастырылған аударма бірліктеріне тәуелділіктерін кэштеу (*.c, *.cc, *.cpp және т.б.). Анализатор бұл тәуелділіктерді файлдар тізімін тексеру режимінде алғаш рет іске қосқанда есептейді, содан кейін оларды .PVS-Studio каталогында сақтайды. Travis CI қалталарды кэштеуге мүмкіндік береді, сондықтан біз каталог деректерін сақтаймыз .PVS-Studio/:

cache:
  directories:
    - .PVS-Studio/

Бұл кодты файлға қосу керек .travis.yml. Бұл каталог талдаудан кейін жиналған әртүрлі деректерді сақтайды, бұл файлдар тізімін талдаудың немесе қосымша талдаудың кейінгі орындалуларын айтарлықтай жылдамдатады. Егер бұл жасалмаса, анализатор барлық файлдарды әр уақытта талдайды.

Buddy

Travis CI сияқты, Buddy GitHub ішінде сақталған жобаларды автоматты түрде құру және сынау мүмкіндігін береді. Travis CI-ден айырмашылығы, ол веб-интерфейсте конфигурацияланады (bash қолдауы бар), сондықтан жобада конфигурация файлдарын сақтаудың қажеті жоқ.

Ең алдымен, құрастыру желісіне жаңа әрекетті қосу керек:

PVS-Studio көмегімен Travis CI, Buddy және AppVeyor бағдарламаларында тапсырыстар мен тарту сұрауларын талдау
Жобаны құру үшін пайдаланылған компиляторды көрсетейік. Осы әрекетте орнатылған докер контейнеріне назар аударыңыз. Мысалы, GCC үшін арнайы контейнер бар:

PVS-Studio көмегімен Travis CI, Buddy және AppVeyor бағдарламаларында тапсырыстар мен тарту сұрауларын талдау
Енді PVS-Studio және қажетті утилиталарды орнатайық:

PVS-Studio көмегімен Travis CI, Buddy және AppVeyor бағдарламаларында тапсырыстар мен тарту сұрауларын талдау
Редакторға келесі жолдарды қосамыз:

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

Енді «Іске қосу» қойындысына (бірінші белгіше) өтіп, сәйкес редактор өрісіне келесі кодты қосамыз:

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

Егер сіз Travs-CI бөлімін оқысаңыз, онда бұл код сізге бұрыннан таныс, бірақ енді жаңа кезең бар:

PVS-Studio көмегімен Travis CI, Buddy және AppVeyor бағдарламаларында тапсырыстар мен тарту сұрауларын талдау
Өйткені, қазір біз біріктіру нәтижесін емес, тарту сұрауы жасалған филиалдың БАСШЫСЫН талдаймыз:

PVS-Studio көмегімен Travis CI, Buddy және AppVeyor бағдарламаларында тапсырыстар мен тарту сұрауларын талдау
Сондықтан біз шартты міндеттемедеміз B3 және біз айырмашылықты алуымыз керек 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

Анықтау үшін A3 GitHub API қолданайық:

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

Біз Buddy беретін келесі айнымалы мәндерді қолдандық:

  • $BUDDY_EXECUTION_PULL_REQEUST_NO — сұрау нөмірін тарту;
  • $BUDDY_REPO_SLUG — пайдаланушы аты мен репозиторийдің тіркесімі (мысалы, max/test).

Енді төмендегі түймені пайдаланып өзгертулерді сақтап, тарту сұрауын талдауды қосамыз:

PVS-Studio көмегімен Travis CI, Buddy және AppVeyor бағдарламаларында тапсырыстар мен тарту сұрауларын талдау
Travis CI-ден айырмашылығы, бізге нақтылау қажет емес .pvs-studio кэштеу үшін, өйткені Buddy келесі іске қосулар үшін барлық файлдарды автоматты түрде кэштейді. Сондықтан, соңғы нәрсе - PVS-Studio үшін логин мен парольді Buddy-де сақтау. Өзгерістерді сақтағаннан кейін біз Pipeline-ға қайта ораламыз. Біз айнымалы мәндерді орнатуға және PVS-Studio үшін логин мен кілт қосуға көшуіміз керек:

PVS-Studio көмегімен Travis CI, Buddy және AppVeyor бағдарламаларында тапсырыстар мен тарту сұрауларын талдау
Осыдан кейін жаңа тарту сұрауының немесе міндеттеменің пайда болуы шолуды бастайды. Тапсырмада қателер болса, Buddy оны тарту сұрауы бетінде көрсетеді.

AppVeyor

AppVeyor орнату Buddy бағдарламасына ұқсас, себебі барлығы веб-интерфейсте болады және жоба репозиторийіне *.yml файлын қосудың қажеті жоқ.

Жобаға шолудағы Параметрлер қойындысына өтейік:

PVS-Studio көмегімен Travis CI, Buddy және AppVeyor бағдарламаларында тапсырыстар мен тарту сұрауларын талдау
Осы бетті төмен айналдырып, тарту сұрауларын жинау үшін кэшті сақтауды қосыңыз:

PVS-Studio көмегімен Travis CI, Buddy және AppVeyor бағдарламаларында тапсырыстар мен тарту сұрауларын талдау
Енді біз құрастыруға арналған кескінді және қажетті орта айнымалы мәндерін көрсететін "Орта" қойындысына өтейік:

PVS-Studio көмегімен Travis CI, Buddy және AppVeyor бағдарламаларында тапсырыстар мен тарту сұрауларын талдау
Алдыңғы бөлімдерді оқыған болсаңыз, сіз осы екі айнымалымен жақсы таныссыз - PVS_KEY и PVS_USERNAME. Олай болмаса, олар PVS-Studio анализаторының лицензиясын тексеру үшін қажет екенін еске сала кетейін. Болашақта біз оларды Bash сценарийлерінде қайта көреміз.

Төмендегі бетте біз кэштеу үшін қалтаны көрсетеміз:

PVS-Studio көмегімен Travis CI, Buddy және AppVeyor бағдарламаларында тапсырыстар мен тарту сұрауларын талдау
Егер біз мұны жасамасақ, жұп файлдардың орнына бүкіл жобаны талдаймыз, бірақ біз көрсетілген файлдардан нәтиже аламыз. Сондықтан каталог атауын дұрыс енгізу маңызды.

Енді сценарийді сынау уақыты келді. Тесттер қойындысын ашып, Сценарийді таңдаңыз:

PVS-Studio көмегімен Travis CI, Buddy және AppVeyor бағдарламаларында тапсырыстар мен тарту сұрауларын талдау
Бұл пішінге келесі кодты қою керек:

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

Кодтың келесі бөлігіне назар аударайық:

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

Бұл әдепкі мәнді сақтауы керек айнымалыға pwd пәрменінің мәнін нақты тағайындау бір қарағанда оғаш болып көрінеді, бірақ мен қазір бәрін түсіндіремін.

AppVeyor жүйесінде анализаторды орнату кезінде мен анализатордың өте оғаш әрекетіне тап болдым. Бір жағынан, бәрі дұрыс жұмыс істеді, бірақ талдау басталған жоқ. Мен /home/appveyor/projects/testcalc/ каталогында екенімізді байқауға көп уақыт жұмсадым, ал анализатор біздің /opt/appveyor/build-agent/ ішінде екенімізге сенімді. Содан кейін мен $PWD айнымалысы аздап жатқанын түсіндім. Осы себепті талдауды бастамас бұрын оның мәнін қолмен жаңарттым.

Содан кейін бәрі бұрынғыдай:

PVS-Studio көмегімен Travis CI, Buddy және AppVeyor бағдарламаларында тапсырыстар мен тарту сұрауларын талдау
Енді келесі фрагментті қарастырыңыз:

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

Онда біз тарту сұрауы жарияланған тармақтар арасындағы айырмашылықты аламыз. Мұны істеу үшін бізге келесі орта айнымалылары қажет:

  • $APPVEYOR_PULL_REQUEST_NUMBER — сұрау нөмірін тарту;
  • $APPVEYOR_REPO_NAME - пайдаланушы аты және жоба репозиторийі.

қорытынды

Әрине, біз мүмкін болатын үздіксіз интеграция қызметтерінің барлығын қарастырған жоқпыз, дегенмен олардың барлығының бір-біріне өте ұқсас жұмыс ерекшеліктері бар. Кэштеуді қоспағанда, әрбір қызмет өзінің «велосипедін» жасайды, сондықтан бәрі әрқашан басқаша.

Бір жерде, Travis-CI сияқты, кодтың бірнеше жолы мен кэштеу мінсіз жұмыс істейді; бір жерде, AppVeyor сияқты, параметрлерде қалтаны көрсету керек; бірақ бір жерде бірегей кілттер жасау керек және жүйені кэштелген фрагментті қайта жазу мүмкіндігін беру үшін сендіруге тырысу керек. Сондықтан, жоғарыда талқыланбаған үздіксіз біріктіру қызметінде тарту сұрауларын талдауды орнатқыңыз келсе, алдымен кэштеуде қиындықтар туындамайтынына көз жеткізіңіз.

Назарларыңызға рахмет. Егер бірдеңе орындалмаса, бізге жазыңыз қолдау. Біз кеңес береміз және көмектесеміз.

PVS-Studio көмегімен Travis CI, Buddy және AppVeyor бағдарламаларында тапсырыстар мен тарту сұрауларын талдау

Егер сіз осы мақаланы ағылшын тілінде сөйлейтін аудиториямен бөліскіңіз келсе, аударма сілтемесін пайдаланыңыз: Максим Звягинцев. PVS-Studio көмегімен Travis CI, Buddy және AppVeyor бағдарламаларында тапсырыстар мен тарту сұрауларын талдау.

Ақпарат көзі: www.habr.com

пікір қалдыру