ProHoster > ΠΠ»ΠΎΠ³ > Kev tswj hwm > Lub voj voog ntawm ntuj raug txim nrog GitHub Kev Ua Haujlwm (tsim lub CI / CD raj rau Java project)
Lub voj voog ntawm ntuj raug txim nrog GitHub Kev Ua Haujlwm (tsim lub CI / CD raj rau Java project)
Kuv feem ntau yuav tsum tsim cov kav dej rau kev tsim cov haujlwm hauv Java. Qee lub sij hawm nws yog qhov qhib, qee zaum nws tsis yog. Tsis ntev los no kuv tau txiav txim siab sim txav qee qhov ntawm kuv qhov chaw cia khoom los ntawm Travis-CI thiab TeamCity mus rau GitHub Actions, thiab qhov no yog qhov tawm ntawm nws.
Dab tsi yuav peb automate?
Ua ntej, peb xav tau ib qhov project uas peb yuav automate, cia peb ua ib daim ntawv thov me me hauv Spring boot / Java 11 / Maven. Rau lub hom phiaj ntawm tsab xov xwm no, peb yuav tsis txaus siab rau daim ntawv thov logic tag nrho; cov txheej txheem nyob ib ncig ntawm daim ntawv thov yog ib qho tseem ceeb rau peb, yog li ib qho yooj yim REST API maub los yuav txaus rau peb.
Koj tuaj yeem saib cov peev txheej ntawm no: github.com/antkorwin/github-actions Txhua theem ntawm kev tsim lub raj xa dej tau cuam tshuam los ntawm kev thov rub rau qhov project no.
JIRA thiab kev npaj
Nws tsim nyog hais tias peb feem ntau siv JIRA raws li qhov teeb meem tracker, yog li cia peb tsim ib lub rooj sib tham sib cais rau txoj haujlwm no thiab ntxiv cov teeb meem thawj zaug rau ntawd:
Ib me ntsis tom qab peb yuav rov qab mus rau dab tsi nthuav yam JIRA thiab GitHub tuaj yeem muab ua ke.
Peb automate lub rooj sib txoos ntawm qhov project
Peb qhov kev sim ua tiav yog tsim los ntawm maven, yog li tsim nws yooj yim heev, txhua yam peb xav tau yog lub pob huv huv mvn.
Txhawm rau ua qhov no siv Github Kev Ua Haujlwm, peb yuav tsum tsim cov ntaub ntawv hauv qhov chaw khaws cia piav qhia peb cov haujlwm ua haujlwm, qhov no tuaj yeem ua tiav nrog cov ntaub ntawv yml tsis tu ncua, Kuv tsis tuaj yeem hais tias kuv nyiam "yml programming", tab sis peb tuaj yeem ua li cas - peb ua nws hauv .github/ directory workflow/ file build.yml nyob rau hauv uas peb yuav piav qhia txog cov kev ua thaum tsim tus tswv ceg:
ntawm: rub_request/push - qhia tau hais tias qhov kev ua haujlwm no yuav tsum tau pib ua haujlwm txhua lub sijhawm thaum muaj kev thawb rau tus tswv thiab rub cov lus thov raug tsim.
Hauv qab no yog cov lus piav qhia ntawm cov haujlwm (cov hauj lwm) thiab cov kauj ruam ua tiav (cov kauj ruam) rau txhua txoj haujlwm.
khiav-on - Ntawm no peb tuaj yeem xaiv lub hom phiaj OS, xav tsis thoob, koj tuaj yeem xaiv Mac OS, tab sis ntawm cov chaw khaws khoom ntiag tug no kim heev (piv rau Linux).
siv tso cai rau koj rov siv dua lwm yam kev ua, piv txwv li, siv cov kev ua / teeb tsa-java qhov peb nruab ib puag ncig rau Java 11.
Kev tsim tau raug teeb tsa, cov kev sim tau ua tiav, thiab peb tuaj yeem tso tawm. Cia peb saib yuav ua li cas GitHub Kev Ua Haujlwm tuaj yeem ua rau kev tswj hwm kev tso tawm yooj yim dua.
Thaum ua hauj lwm, kuv muaj tej yaam num uas nws code puag nyob rau hauv bitbucket (txhua yam zoo li hauv zaj dab neeg ntawd "Kuv sau rau bitbucket thaum nruab hnub, cog lus rau GitHub hmo ntuj"). Hmoov tsis zoo, bitbucket tsis muaj cov cuab yeej tswj kev tso tawm. Qhov no yog ib qho teeb meem, vim hais tias rau txhua qhov kev tso tawm koj yuav tsum manually tsim ib nplooj ntawv nyob rau hauv confluence thiab pov tag nrho cov nta muaj nyob rau hauv lub tso tawm muaj, nrhiav los ntawm lub palaces ntawm lub siab, cov hauj lwm nyob rau hauv jira, commits nyob rau hauv lub repository. Muaj ntau txoj hauv kev ua yuam kev, koj tuaj yeem hnov ββββqab ib yam dab tsi lossis nkag mus rau qee yam uas tau tso tawm dhau los, qee zaum nws tsuas yog tsis paub meej tias yuav ua li cas cais qhov kev thov rub raws li - nws puas yog qhov tshwj xeeb lossis kab laum kho, lossis kho cov kev xeem, lossis ib yam dab tsi infrastructural.
GitHub ua li cas pab tau peb? Muaj qhov ua tau zoo - tso tawm cov ntawv sau tawm, nws tso cai rau koj los teeb tsa cov ntawv tso tawm cov qauv los teeb tsa pawg ntawm rub cov lus thov thiab cia li pab pawg hauv cov ntawv tso tawm:
Piv txwv template rau teeb tsa ib daim ntawv qhia (.github/release-drafter.yml):
Kuv tsis tau ua tiav hauv kev sib koom ua ke uas tau tso cov ntawv sau rau hauv kev thov rub nrog qhov kev txiav txim uas kuaj xyuas qhov muaj cov ntawv xav tau; match-label tsis xav pom cov ntawv sau ntxiv los ntawm bot. Nws zoo nkaus li yooj yim los sau koj tus kheej qhov kev txiav txim uas sib txuas ob theem. Tab sis txawm nyob rau hauv daim ntawv no nws yog heev yooj yim mus siv; koj yuav tsum xaiv ib daim ntawv lo los ntawm daim ntawv thaum tsim ib tug rub daim ntawv thov.
Nws yog lub sij hawm rau deploy
Kuv sim ntau qhov kev xaiv xa mus los ntawm GitHub Kev Ua Haujlwm (ntawm ssh, ntawm scp, thiab siv docker-hub), thiab kuv tuaj yeem hais tias, feem ntau, koj yuav pom txoj hauv kev xa cov binary mus rau lub server, txawm li cas los xij koj lub raj xa dej yuav ua li cas. yog.
Kuv nyiam qhov kev xaiv ntawm kev khaws tag nrho cov txheej txheem hauv ib qho chaw, yog li cia peb saib yuav ua li cas xa mus rau GitHub Pob (qhov no yog qhov chaw khaws cia rau cov ntsiab lus binary, npm, thawv, docker).
Ua ntej, peb yuav tsum tsim cov ntaub ntawv JAR ntawm peb daim ntawv thov, tom qab ntawd peb suav txoj hauv kev mus rau GitHub docker npe thiab lub npe ntawm peb daim duab. Muaj qee qhov kev ua yuam kev ntawm no uas peb tseem tsis tau ntsib:
ib qho kev tsim kho xws li: ncha "::set-output lub npe = NAME:: VALUE" tso cai rau koj los teeb tsa tus nqi ntawm qhov sib txawv hauv cov kauj ruam tam sim no, yog li ntawd nws tuaj yeem nyeem hauv tag nrho lwm cov kauj ruam.
koj tuaj yeem tau txais tus nqi ntawm qhov sib txawv ntawm cov kauj ruam dhau los dhau los ntawm tus cim ntawm cov kauj ruam no: ${{step.global_env.outputs.DOCKERHUB_IMAGE_NAME }}
Tus qauv GITHUB_REPOSITORY hloov pauv tau khaws cov npe ntawm cov chaw khaws cia thiab nws tus tswv ("tus tswv / repo-name"). Txhawm rau txiav txhua yam ntawm kab no tshwj tsis yog lub npe ntawm lub chaw khaws cia, peb yuav siv bash syntax: ${GITHUB_REPOSITORY#*/}
Txhua yam uas tseem tshuav yog los teeb tsa peb lub server kom ua haujlwm nrog cov npe no thiab rov pib qhov kev pabcuam. Tej zaum kuv yuav tham txog yuav ua li cas ua qhov no los ntawm systemd lwm lub sijhawm.
Saib xyuas
Cia peb saib cov kev xaiv yooj yim ntawm yuav ua li cas kuaj mob rau peb daim ntawv thov siv GitHub Actions. Peb daim ntawv thov khau raj muaj tus actuator, yog li peb tsis tas yuav sau API los xyuas nws cov xwm txheej; peb twb ua txhua yam rau cov tub nkeeg. Koj tsuas yog yuav tsum rub tus tswv tsev: SERVER-URL:PORT/actuator/health
Muaj qhov tshwj xeeb ua rau qhov no ntawm GitHub, txhua yam nws xav tau yog qhov teeb meem ID tau txais hauv cov kauj ruam dhau los thiab kev tso cai hauv JIRA uas peb tau ua saum toj no.
Ib yam li ntawd, koj tuaj yeem rub cov haujlwm thaum koom ua ke rau hauv tus tswv, thiab lwm yam xwm txheej los ntawm GitHub workflow. Feem ntau, nws tag nrho nyob ntawm koj lub tswv yim thiab lub siab xav ua kom cov txheej txheem niaj hnub ua.
tshawb pom
Yog tias koj saib ntawm daim duab DEVOPS classic, peb tau them tag nrho cov theem, tshwj tsis yog tej zaum ua haujlwm, kuv xav tias yog koj sim, koj tuaj yeem pom qee qhov kev nqis tes ua hauv kev ua lag luam rau kev koom ua ke nrog kev pabcuam-lub rooj, yog li peb yuav xav tias lub raj xa dej tig. tawm kom meej thiab cov lus xaus tuaj yeem kos raws li nws siv.
Tshaj:
Kev lag luam nrog kev npaj ua tiav rau txhua lub sijhawm, qhov no yog qhov txias heev. Nyob rau hauv feem ntau ntawm lawv, koj tuaj yeem saib ntawm qhov chaws kom nkag siab yuav ua li cas los daws qhov teeb meem zoo sib xws lossis tshaj tawm qhov kev thov rau tus sau ncaj qha hauv GitHub repository.
Xaiv lub hom phiaj platform rau kev sib dhos: Linux, mac os, windows yog qhov nthuav dav heev.
Github Pob yog qhov zoo tshaj plaws, nws yooj yim los khaws tag nrho cov txheej txheem hauv ib qho chaw, koj tsis tas yuav nthwv dej los ntawm cov qhov rais sib txawv, txhua yam nyob hauv ib lub vojvoog ntawm ib lossis ob tus nas nyem thiab ua tiav zoo nrog GitHub Kev Ua. Docker sau npe kev txhawb nqa hauv cov dawb version kuj yog qhov zoo dua.
GitHub zais cov lus zais hauv kev tsim cov cav, yog li siv nws los khaws cov passwords thiab tokens tsis yog qhov txaus ntshai. Thaum tag nrho kuv cov kev sim, kuv yeej tsis tuaj yeem pom qhov zais cia hauv nws daim ntawv ntshiab hauv console.
Dawb rau Open Source tej yaam num
Txais:
YML, zoo, kuv tsis nyiam nws. Thaum ua hauj lwm nrog xws li ib tug ntws, feem ntau cov lus cog lus kuv muaj yog "kho yml hom", ces koj tsis nco qab muab ib tug tab nyob rau hauv ib qho chaw, los yog koj sau nws nyob rau hauv tsis ncaj ncees lawm kab. Feem ntau, zaum pem hauv ntej ntawm ib qho screen nrog tus protractor thiab tus pas ntsuas tsis yog qhov kev paub zoo tshaj plaws.
DEBUG, debugging qhov ntws nrog commits, khiav ib tug rebuild, thiab outputting rau lub console tsis yog ib txwm yooj yim, tab sis nws yog ntau ntawm cov "koj nyob nraum overdone" qeb; koj tau siv los ua hauj lwm nrog yooj yim IDEA, thaum koj yuav debug dab tsi .
Koj tuaj yeem sau koj qhov kev txiav txim ntawm txhua yam yog tias koj qhwv nws hauv Docker, tab sis tsuas yog javascript yog ib txwm txhawb nqa, tau kawg qhov no yog qhov teeb meem ntawm saj, tab sis kuv xav tau lwm yam tsis yog js.
Lub lim tiam tom ntej kuv yuav ua yeeb yam nrog qhia ntawm Heisenbug 2020 Piter lub rooj sib tham. Kuv yuav qhia koj tsis yog yuav ua li cas kom tsis txhob ua yuam kev thaum npaj cov ntaub ntawv xeem, tab sis kuj qhia kuv cov lus zais ntawm kev ua haujlwm nrog cov ntaub ntawv teev hauv Java daim ntawv thov!