Matetika aho no tsy maintsy manangana fantsona ho an'ny tetikasa fananganana ao Java. Indraindray izy io dia open source, indraindray tsy. Vao haingana aho no nanapa-kevitra ny hanandrana hamindra ny sasany amin'ireo fitehirizako avy amin'ny Travis-CI sy TeamCity mankany amin'ny GitHub Actions, ary izany no nivoaka tao.
Inona no hataontsika ho azy?
Voalohany, mila tetikasa izay ho automatique isika, andao hanao fampiharana kely amin'ny Spring boot / Java 11 / Maven. Ho an'ny tanjon'ity lahatsoratra ity dia tsy ho liana amin'ny lojika fampiharana mihitsy izahay; zava-dehibe amintsika ny fotodrafitrasa manodidina ny fampiharana, noho izany dia ampy ho antsika ny fanaraha-maso REST API tsotra.
Azonao jerena eto ny loharano: github.com/antkorwin/github-actions Ny dingana rehetra amin'ny fananganana fantsona dia hita taratra amin'ny fangatahana fisintonana amin'ity tetikasa ity.
JIRA sy drafitra
Tsara ny milaza fa matetika mampiasa JIRA ho toy ny mpanara-maso olana isika, koa andao hamorona birao manokana ho an'ity tetikasa ity ary ampio ireo olana voalohany ao:
Afaka kelikely dia hiverina amin'izay zavatra mahaliana azon'ny JIRA sy GitHub atolotra miaraka isika.
Manao automatique ny fivorian'ny tetikasa izahay
Ny tetik'asa fitsapana ataonay dia naorina tamin'ny alΓ lan'ny maven, noho izany dia tsotra ny fanamboarana azy, ny hany ilainay dia ny fonosana madio mvn.
Mba hanaovana izany amin'ny fampiasana Github Actions, dia mila mamorona rakitra ao amin'ny repository mamaritra ny fizotran'ny asantsika isika, azo atao amin'ny rakitra yml mahazatra izany, tsy afaka milaza aho fa tiako ny "programming yml", fa inona no azontsika atao - ataontsika ao amin'ny .github/directory workflow/file build.yml izay hamariparitanay ny hetsika rehefa manangana sampana master:
on - ity dia famaritana ny hetsika izay hanombohan'ny scripty.
on: pull_request/push - manondro fa mila atomboka ity workflow ity isaky ny misy tosika atao amin'ny tompony ary misy ny fangatahana misintona.
Ity manaraka ity dia famaritana ny asa (asa) sy ny dingana famonoana (dingana) ho an'ny asa tsirairay.
mihazakazaka - Eto isika dia afaka misafidy ny OS kendrena, mahagaga fa afaka misafidy Mac OS mihitsy aza ianao, fa amin'ny trano fitehirizana manokana dia lafo be izany (raha oharina amin'ny Linux).
fampiasana mamela anao hampiasa indray hetsika hafa, ohatra, amin'ny fampiasana ny actions/setup-java hetsika apetratsika ny tontolo iainana ho an'ny Java 11.
Amin'ny fanampiana amin'ny azontsika atao ny mamaritra ny masontsivana izay anombohantsika ny hetsika, amin'ny ankapobeny dia ireo no tohan-kevitra hampitaina amin'ilay hetsika.
Ny hany sisa tavela dia ny fampandehanana ny fananganana tetikasa ao Maven: run: mvn -B clean package sainam-pirenena -B dia milaza fa mila fomba tsy misy ifandrimbonana isika mba tsy te-hanontany antsika zavatra tampoka ilay maven
Mahafinaritra! Ankehitriny, isaky ny manolo-tena amin'ny tompony ianao dia manomboka ny fananganana tetikasa.
Famoahana andrana automatique
Ny fivoriambe dia tsara, fa raha ny marina, ny tetikasa dia azo amboarina soa aman-tsara, fa tsy miasa. Noho izany, ny dingana manaraka dia ny automatique ny andrana. Ho fanampin'izay, mety tsara ny mijery ny valin'ny fanadinana rehefa manao famerenana PR ianao - fantatrao tsara fa mandalo ny fitsapana ary tsy misy adino ny mitantana ny sampana alohan'ny hanaovana merge.
Hanao fitsapana izahay rehefa mamorona fangatahana misintona ary mitambatra amin'ny tompony, ary miaraka amin'izay koa dia hanampy ny famoronana tatitra momba ny fandrakofana kaody.
Mba handrakofana ny fitsapana dia mampiasa codecov aho miaraka amin'ny plugin jacoco. codecov dia manana ny asany manokana, saingy mila famantarana izy io mba hiarahana amin'ny fangatahanay:
${{ secrets.CODECOV_TOKEN }} - Ho hitantsika imbetsaka io fanorenana io, ny tsiambaratelo dia fomba iray hitehirizana tsiambaratelo ao amin'ny GitHub, afaka manoratra tenimiafina / famantarana / mpampiantrano / url sy data hafa izay tsy tokony hampidirina ao amin'ny fototry ny code repository.
Azonao atao ny manampy varimbazaha amin'ny tsiambaratelo ao amin'ny toeran'ny tahiry ao amin'ny GitHub:
Afaka mahazo token ianao amin'ny codecov.io Aorian'ny fanomezan-dΓ lana amin'ny alΓ lan'ny GitHub, raha te hampiditra tetikasa ho an'ny daholobe ianao dia mila manaraka rohy toy izao: Anaran'ny mpampiasa GitHub/[anarana anarana]. Azo ampiana tahiry manokana ihany koa; Mba hanaovana izany dia mila manome zo codecov amin'ny fampiharana ao amin'ny Github ianao.
Ankehitriny ny codecov bot dia hiditra ny tsirairay amin'ireo fangatahan-tsika misintona ary hanampy tabilao fanovana fandrakofana:
Andeha isika hanampy analyzer static
Amin'ny ankamaroan'ny tetikasa loharano misokatra dia mampiasa rahona sonar aho amin'ny famakafakana code static, mora ny mifandray amin'ny travis-ci. Noho izany dia dingana lojika izany rehefa mifindra any amin'ny GitHub Actions mba hanao toy izany koa. Ny tsenan'ny hetsika dia zavatra mahafinaritra, saingy tamin'ity indray mitoraka ity dia nampalahelo ahy kely izany, satria noho ny fahazarana dia nahita ny hetsika nilaiko aho ary nanampy izany tamin'ny fizotran'ny asa. Saingy hita fa tsy manohana ny fiasana amin'ny alΓ lan'ny hetsika famakafakana tetikasa amin'ny maven na gradle ny sonar. Mazava ho azy fa voasoratra ao amin'ny antontan-taratasy izany, fa iza no mamaky azy?!
Manao fangatahana misintona izahay ary miandry ny fahatongavan'ny sonarcloud[bot] ao amin'ny fanehoan-kevitra:
Famotsorana ny fitantanana
Namboarina ny fananganana, natao ny fitsapana, ary afaka manao famoahana izahay. Andeha hojerentsika ny fomba ahafahan'ny GitHub Actions manamora ny fitantanana ny famoahana.
Any am-piasana dia manana tetikasa aho izay misy ny fototry ny kaody ao anaty bitbucket (toy ny ao amin'io tantara io ny zava-drehetra "Manoratra amin'ny bitbucket aho mandritra ny andro, manolo-tena amin'ny GitHub amin'ny alina"). Indrisy anefa fa tsy manana fitaovana fitantanana famoahana naorina ny bitbucket. Olana izany, satria isaky ny famoahana dia tsy maintsy mamorona pejy amin'ny confluence ianao ary manipy ny endri-javatra rehetra tafiditra ao amin'ny famoahana any, mikaroka amin'ny lapan'ny saina, asa ao amin'ny jira, manao ao amin'ny tahiry. Betsaka ny mety ho diso, afaka manadino zavatra ianao na mampiditra zavatra efa navoaka tamin'ny farany, indraindray tsy mazava tsara hoe inona no hanasokajiana ny fangatahana fisintonana ho - endri-javatra ve izy io na fanamboarana bug, na fitsapana fanitsiana, na zavatra fotodrafitrasa .
Ahoana no ahafahan'ny hetsika GitHub manampy antsika? Misy hetsika lehibe - mpandrafitra famotsorana, mamela anao hametraka mΓ΄dely rakitra naoty famoahana mba hananganana sokajin'ny fangatahana fisintonana ary hanangona azy ireo ho azy ao amin'ny rakitra naoty famoahana:
Ny fangatahana fisintonana rehetra manomboka izao dia angonina ao anaty naoty famoahana ho azy - majika!
Eto dia mety hipoitra ny fanontaniana: ahoana raha manadino ny mametraka marika ao amin'ny PR ny mpamorona? Avy eo dia tsy fantatra mazava hoe inona no sokajy hametrahany azy, ary mbola tsy maintsy miatrika izany amin'ny tanana ianao, miaraka amin'ny PR tsirairay. Mba hamahana ity olana ity dia afaka mampiasa hetsika hafa isika - fanamarinana marika - manamarina ny fisian'ny marika amin'ny fangatahana fisarihana. Raha tsy misy marika takiana, dia tsy hahomby ny fanamarinana ary hahita hafatra momba izany isika ao amin'ny fangatahanay.
Koa satria niresaka momba ny lohahevitra toy ny asa mahomby miaraka amin'ny fangatahana misintona izahay, dia ilaina ny miresaka momba ny hetsika toy ny labeler, mametraka marika ao amin'ny PR mifototra amin'ny fanovana ny rakitra. Ohatra, azontsika atao ny manamarika ho [hanorina] izay fangatahana misintona misy fiovana amin'ny lahatahiry .github/workflow.
Tiako ny safidy hitazonana ny fotodrafitrasa manontolo amin'ny toerana iray, koa andao hojerentsika ny fomba fametrahana ny GitHub Packages (ity dia tahiry ho an'ny atiny binary, npm, jar, docker).
Script amin'ny fananganana sary docker sy famoahana azy ao amin'ny GitHub Packages:
Voalohany, mila manangana ny rakitra JAR amin'ny fampiharana ataontsika isika, aorian'izay dia kajy ny lalana mankany amin'ny rejisitra docker GitHub sy ny anaran'ny sarintsika. Misy fika vitsivitsy tsy mbola hitantsika eto:
Ny fanorenana toy ny: echo "::set-output name=NAME::VALUE" dia ahafahanao mametraka ny sandan'ny fari-piainana amin'ny dingana ankehitriny, mba ho vakiana amin'ny dingana hafa rehetra.
azonao atao ny mahazo ny sandan'ny fari-piainana amin'ny dingana teo aloha amin'ny alalan'ny famantarana an'ity dingana ity: ${{ steps.global_env.outputs.DOCKERHUB_IMAGE_NAME }}
Ny fari-piadidiana GITHUB_REPOSITORY mahazatra dia mitahiry ny anaran'ny tahiry sy ny tompony ("tompony/repo-name"). Mba hanapahana ny zava-drehetra amin'ity andalana ity afa-tsy ny anaran'ny tahiry, dia hampiasa syntax bash izahay: ${GITHUB_REPOSITORY#*/}
Mba hanondroana ny dikan-ny sary, dia mampiasa ny isa voalohany avy amin'ny SHA hash ny commit - GITHUB_SHA misy ihany koa ny nuances eto, raha manao toy izany fanorenana tsy rehefa mitambatra ho tompony, fa koa araka ny fisintonana fangatahana famoronana. hetsika, dia mety tsy mifanandrify amin'ny hash hitantsika ao amin'ny tantaran'ny git ny SHA, satria ny hetsika/hetsika famandrihana dia manao ny hash manokana ho azy manokana mba hisorohana ny hetsika maty paika ao amin'ny PR.
Raha mandeha tsara ny zava-drehetra, dia sokafy ny fizarana fonosana (https://github.com/antkorwin/github-actions/packages) ao amin'ny tahiry dia hahita sary docker vaovao ianao:
Any ianao dia afaka mahita lisitry ny dikan-ny sary docker.
Ny hany sisa tavela dia ny manamboatra ny mpizara anay hiasa amin'ity rejisitra ity ary hamerina ny serivisy. Mety hiresaka momba ny fomba hanaovana izany amin'ny alΓ lan'ny systemd aho amin'ny fotoana hafa.
fanaraha-maso
Andeha hojerentsika ny safidy tsotra amin'ny fomba fanaovana fitiliana ara-pahasalamana ho an'ny fampiharana amin'ny fampiasana GitHub Actions. Ny fampiharana booty dia manana actuator, noho izany dia tsy mila manoratra API akory izahay mba hanamarinana ny toerany; efa nanao ny zava-drehetra ho an'ny kamo. Mila misintona ny mpampiantrano fotsiny ianao: SERVER-URL:PORT/actuator/health
Ny hany ilaintsika dia ny manoratra asa hijerena ny mpizara amin'ny fampiasana cron, ary raha tampoka dia tsy mamaly anay izany, dia handefa fampahafantarana amin'ny alΓ lan'ny telegrama izahay.
Voalohany, andeha hojerentsika ny fomba fampandehanana cron workflow:
Andeha hojerentsika ny satan'ny mpizara amin'ny alΓ lan'ny curl:
jobs:
ping:
runs-on: ubuntu-18.04
steps:
- name: curl actuator
id: ping
run: |
echo "::set-output name=status::$(curl ${{secrets.SERVER_HOST}}/api/actuator/health)"
- name: health check
run: |
if [[ ${{ steps.ping.outputs.status }} != *"UP"* ]]; then
echo "health check is failed"
exit 1
fi
echo "It's OK"
Voalohany, tehirizinay ao anaty faribolana izay novalin'ny mpizara ny fangatahana, amin'ny dingana manaraka dia manamarina fa UP ny sata ary, raha tsy izany, dia mivoaka miaraka amin'ny hadisoana izahay. Raha mila "manafotra" hetsika amin'ny tananao ianao, dia fivoahana 1 - fitaovam-piadiana mety.
- name: send alert in telegram
if: ${{ failure() }}
uses: appleboy/telegram-action@master
with:
to: ${{ secrets.TELEGRAM_TO }}
token: ${{ secrets.TELEGRAM_TOKEN }}
message: |
Health check of the:
${{secrets.SERVER_HOST}}/api/actuator/health
failed with the result:
${{ steps.ping.outputs.status }}
Alefantsika amin'ny telegrama ihany raha tsy nahomby ny hetsika tamin'ny dingana teo aloha. Mba handefasana hafatra dia mampiasa appleboy/telegram-action izahay; azonao atao ny mamaky momba ny fomba hahazoana token'ny bot sy id chat ao amin'ny antontan-taratasy: github.com/appleboy/telegram-action
Aza adino ny manoratra ao amin'ny tsiambaratelo ao amin'ny Github: URL ho an'ny mpizara sy famantarana ho an'ny bot telegrama.
Bonus track - JIRA ho an'ny kamo
Nampanantena aho fa hiverina any aminβny JIRA, ary niverina. Imbetsaka aho no nahita toe-javatra iray tamin'ny stand-up rehefa nanao endri-javatra ny developer, nanambatra sampana, saingy nanadino ny nisintona ilay olana tao amin'ny JIRA. Mazava ho azy fa raha natao amin'ny toerana iray izany rehetra izany dia ho mora kokoa, fa raha ny marina dia manoratra kaody ao amin'ny IDE isika, manambatra ny sampana amin'ny bitbucket na GitHub, ary avy eo dia misintona ny asa ho any Jira, noho izany dia mila manokatra varavarankely vaovao. , indraindray miditra indray sns. Rehefa tsaroanao tsara izay tokony hataonao manaraka, dia tsy misy dikany ny fanokafana ny solaitrabe indray. Vokatr'izany, amin'ny maraina amin'ny standup dia mila mandany fotoana amin'ny fanavaozana ny biraon'ny asa ianao.
Hanampy antsika amin'ity asa mahazatra ity ihany koa ny GitHub; ho fanombohana dia afaka misintona ho azy ireo olana ao amin'ny tsanganana code_review isika rehefa mandefa fangatahana misintona. Ny hany tokony hataonao dia ny manaraka ny fivoriamben'ny sampana nomena anarana:
Misy hetsika manokana amin'izany ao amin'ny GitHub, ny hany ilaina dia ny ID olana azo tamin'ny dingana teo aloha sy ny fanomezan-dΓ lana tao amin'ny JIRA izay nataonay teo ambony.
Toy izany koa, azonao atao ny misintona asa rehefa mitambatra ao amin'ny master, sy hetsika hafa avy amin'ny workflow GitHub. Amin'ny ankapobeny, miankina amin'ny eritreritrao sy ny fanirianao hanao automatique ny dingana mahazatra izany.
hitany
Raha mijery ny mahazatra DEVOPS kisary, isika dia nandrakotra ny dingana rehetra, afa-tsy angamba miasa, Heveriko fa raha miezaka ianao, dia afaka mahita hetsika sasany eo amin'ny tsena ho an'ny fidirana amin'ny rafitra fanampiana-birao, ka dia mihevitra fa ny fantsona nivadika. feno ary azo tsoahina avy amin'ny fampiasana azy.
matihanina:
Tsena misy hetsika efa vita ho an'ny fotoana rehetra, tena mahafinaritra izany. Amin'ny ankamaroan'izy ireo dia azonao atao koa ny mijery ny kaody loharano mba hahafantarana ny fomba hamahana olana mitovy amin'izany na handefa fangatahana endri-javatra amin'ny mpanoratra mivantana ao amin'ny tahiry GitHub.
Ny fisafidianana ny sehatra kendrena amin'ny fivoriambe: Linux, mac os, windows dia endri-javatra mahaliana.
Ny Packages Github dia zavatra tsara, mety tsara ny mitazona ny fotodrafitrasa manontolo amin'ny toerana iray, tsy mila mivezivezy amin'ny varavarankely samihafa ianao, ny zava-drehetra dia ao anatin'ny salan'isa iray na roa totozy ary mitambatra tsara amin'ny GitHub Actions. Ny fanohanan'ny rejistra Docker amin'ny dikan-teny maimaim-poana dia tombony tsara ihany koa.
GitHub dia manafina tsiambaratelo amin'ny fananganana logs, noho izany dia tsy mampatahotra ny fampiasana azy hitehirizana tenimiafina sy marika. Nandritra ny fanandramana rehetra nataoko dia tsy afaka nahita ny tsiambaratelo tamin'ny endriny madio tao amin'ny console aho.
Maimaimpoana ho an'ny tetikasa Open Source
maharatsy ny mifampiresaka:
YML, eny, tsy tiako izy. Rehefa miasa amin'ny fikorianan'ny toy izany, ny hafatra fanolorana mahazatra indrindra ananako dia ny "fix yml format", dia adinonao ny mametraka tabilao any ho any, na manoratra izany amin'ny tsipika diso. Amin'ny ankapobeny, ny mipetraka eo anoloan'ny efijery misy protractor sy mpanapaka dia tsy traikefa mahafinaritra indrindra.
DEBUG, debugging ny fikorianan'ny commits, manao fanamboarana indray, ary ny famoahana ny console dia tsy mety foana, fa bebe kokoa amin'ny sokajy "be loatra ianao"; zatra miasa miaraka amin'ny IDEA mety ianao, rehefa afaka debug na inona na inona. .
Azonao atao ny manoratra ny hetsika ataonao amin'ny zavatra rehetra raha toa ka mamatotra azy ao amin'ny Docker ianao, fa ny javascript ihany no tohanan'ny teratany, mazava ho azy fa resaka tsiro izany, fa aleoko zavatra hafa fa tsy js.