Paano Gumawa ng Iyong Unang Jenkins Pipeline?

Isang hakbang-hakbang na gabay sa paglikha ng linya ng Jenkins


Bakit Jenkins Pipeline?

Ang patuloy na Paghahatid (CD) ay isang mahalagang bahagi ng DevOps Lifecycle.

Tinitiyak nito na ang mga software / application developer ay lumilikha ay palaging handa na sa paggawa. Upang mangyari ito, sa tuwing mai-update ang code, kailangan itong maitayo, susuriin, at patuloy na i-deploy. Dito nakapasok ang litrato ni Jenkins Pipeline.

Sa DevOps, ang patuloy na Pagsasama at Patuloy na Paghahatid (CI / CD) ay nakamit sa pamamagitan ng Jenkins Pipeline. Ang paggamit ng Jenkins Pipeline para sa CD ay tumutulong upang maihatid ang software na may mas mabilis at madalas na paglabas. Makakatulong ito upang isama ang feedback sa bawat susunod na paglabas.

Ano ang Jenkins Pipeline?

Ang Jenkins Pipeline ay isang kumbinasyon ng mga trabaho upang maihatid ang software na patuloy na gumagamit ng Jenkins.

Inaakala kong alam mo kung ano ang Jenkins. Kung hindi pagkatapos ay suriin ito Ang kurso ng Udemy upang ma-master si Jenkins.

Ang isang linya ng Jenkins ay binubuo ng maraming mga estado o yugto, at pinatupad sila sa isang pagkakasunod-sunod nang isa pa. Ang JenkinsFile ay isang simpleng text file na ginagamit upang lumikha ng isang pipeline bilang code sa Jenkins. Naglalaman ito ng code sa Groovy Domain Specific Language (DSL), na kung saan ay simpleng isulat at mababasa ng tao.

Alinman maaari mong patakbuhin ang JenkinsFile nang hiwalay, o maaari mong patakbuhin ang pipeline code mula sa Jenkins Web UI din. Mayroong dalawang mga paraan na maaari kang lumikha ng isang pipeline gamit ang Jenkins.

  • Pahayag – isang bagong paraan ng paglikha ng Jenkins Pipeline. Dito nakasulat ka ng groovy code na naglalaman ng mga “pipeline” blocks, na naka-check sa isang SCM (Source Code Management)
  • Scripted – paraan ng pagsulat ng code ng groovy kung saan ang code ay tinukoy sa loob ng mga “node” blocks.

Bago kami makapasok sa demo, kung hindi mo pa nai-install si Jenkins, mangyaring i-install muna ito. Tiyaking mayroon kang Jenkins at tumatakbo sa iyong system.

Lumikha ng isang Jenkins Pipeline

Ganito ang hitsura ng isang daloy ng tubo ng Jenkins, na binubuo ng maraming yugto sa pagitan ng mga tagalikha ng paglikha ng isang software (coding) at software na naihatid sa produksyon.

Jenkins Pipeline

Lumikha tayo ng isang deklarasyong pipeline.

Sa dashboard ng Jenkins, mag-click sa Bagong Item. Pagkatapos ay magpasok ng isang pangalan ng item, halimbawa, ‘Unang Pipeline’ at piliin ang proyekto na ‘Pipeline’. Pagkatapos ay mag-click sa, OK.

Bagong Item - Jenkins Pipeline

Mag-click sa Pipeline tab tulad ng ipinapakita sa imahe sa ibaba, at ilagay ang iyong JenkinsFile code (Groovy Code) dito.

JenkinsFile Code

pipeline {
ahente anumang
yugto
yugto (‘Buuin’) {
mga hakbang {
echo ‘Kumusta, GeekFlare. Simula upang mabuo ang App. ‘
}
}
yugto (‘Pagsubok’) {
mga hakbang {
input (‘Gusto mo bang magpatuloy?’)
}
}
yugto (‘Deploy’) {
kahanay {
entablado (‘Pagsisimula ng pagsisimula’) {
mga hakbang {
sigaw "Simulan ang pag-deploy .."
}
}
entablado (‘Paggagamit ngayon’) {
ahente {
pantalan {
reuseNode totoo
imahe ‘nginx’
}
}

mga hakbang {
sigaw "Nilikha ang Docker"
}
}
}
}
yugto (‘Prod’) {
mga hakbang {
sigaw "Handa na ang Prod"
}

}
}
}

Hayaan akong ipaliwanag ang mga bloke sa itaas.

  • Ang pipeline block ay binubuo ng lahat ng mga tagubilin upang bumuo, pagsubok, at maghatid ng software. Ito ang pangunahing sangkap ng isang Jenkins Pipeline.
  • Isang ahente ay itinalaga upang maisagawa ang pipeline sa isang node at maglaan ng isang lugar ng trabaho para sa pipeline.
  • A yugto ay isang bloke na may mga hakbang upang bumuo, pagsubok, at i-deploy ang application. Ang mga yugto ay ginagamit upang mailarawan ang mga proseso ng Jenkins Pipeline.
  • A hakbang ay isang solong gawain na isasagawa, halimbawa, lumikha ng isang direktoryo, magpatakbo ng isang imahe ng docker, magtanggal ng isang file, atbp.

Ang code ng Groovy sa itaas, gumagamit ako para sa JenkinsFile. Ang anumang magagamit na ahente ay nakatalaga sa pipeline. Pagkatapos tinukoy ko ang yugto ng Gumawa at gumaganap ng isang simpleng hakbang sa echo. Pagkatapos ay tinukoy ko ang yugto ng Pagsubok kung saan tinatanong ang hakbang kung nais mong magpatuloy o hindi. Pagkatapos nito, nakalikha ako ng isang yugto ng Deploy, na mayroong dalawang higit pang mga yugto sa loob nito na tumatakbo. Ang yugto ng pagsisimula ng pag-deploy ay may isang hakbang na may utos ng echo, at ang pag-iimpok ngayon ay may isang hakbang na kumukuha ng isang imahe ng docker ng Nginx sa node. Sa wakas, mayroong isang yugto ng Prod na may isang simpleng hakbang sa echo.

Ang pipeline na ipinaliwanag sa itaas ay may mga yugto na may mga simpleng hakbang upang maunawaan mo kung paano ito gumagana. Sa sandaling malaman mo kung paano lumikha ng isang Pipeline, maaari kang magdagdag ng mas kumplikado at lumikha din ng mga kumplikadong pipeline.

Kapag mayroon kang code sa tab na Pipeline, mag-click sa Mag-apply at I-save. Sa wakas, mag-click sa Gumawa Ngayon upang simulan ang pagbuo ng Jenkins Pipeline na nilikha mo lamang.

Bumuo Ngayon

Ito ang magiging hitsura ng interface ng gumagamit kapag tumatakbo ang pipeline. Kung sinunod mo nang tama ang lahat ng mga hakbang, ang iyong build ay magiging matagumpay, at nagpapakita ito ng isang asul na kulay para sa build (# 27). Kung may mga pagkakamali sa build, magbibigay ito ng pulang kulay sa build (# 27).

Gumawa ng Jenkins 27

Ngayon mag-click sa # 27 build at pagkatapos ay mag-click sa Console Output upang suriin kung ano ang eksaktong nangyari sa back-end nang tumakbo ito.

Bumuo si Jenkins

Ganito ang hitsura ng output tulad ng pagtatapos sa isang mensahe ng MAGSULAT.

Output ng Tagumpay sa Console

Sinimulan ng geekflare ng gumagamit
Tumatakbo sa antas ng Kakayahan: MAX_SURVIVABILITY
[Pipeline] Simula ng Pipeline
[Pipeline] node
Tumatakbo sa Jenkins sa / var / lib / jenkins / workspace / Unang Pipeline
[Pipeline] {
[Pipeline] yugto
[Pipeline] {(Buuin)
[Pipeline] echo
Kumusta, GeekFlare. Simula upang bumuo ng App.
[Pipeline]}
[Pipeline] // yugto
[Pipeline] yugto
[Pipeline] {(Pagsubok)
[Pipeline] input
Gusto mo bang magpatuloy?
Magpatuloy o Abort
Inaprubahan ng geekflare
[Pipeline]}
[Pipeline] // yugto
[Pipeline] yugto
[Pipeline] {(Deploy)
[Pipeline] kahanay
[Pipeline] {(Sangay: Panimulang pagsugod)
[Pipeline] {(Sangay: Pagdeposito ngayon)
[Pipeline] yugto
[Pipeline] {(Pagsisimula ng pagtanggi)
[Pipeline] yugto
[Pipeline] {(Nagtatagal ngayon)
[Pipeline] getContext
[Pipeline] isUnix
[Pipeline] sh
[Pipeline] echo
Simulan ang pag-deploy ..
[Pipeline]}
+ inspeksyon ng docker -f. nginx
[Pipeline] // yugto
[Pipeline]}

Error: Walang ganoong bagay: nginx
[Pipeline] isUnix
[Pipeline] sh
+ docker pull nginx
Paggamit ng default na tag: pinakabagong
pinakabagong: Paghihila mula sa library / nginx
8d691f585fa8: Paghila ng fs layer
5b07f4e08ad0: Paghila ng layer ng fs
abc291867bca: Paghila ng fs layer
abc291867bca: Pag-verify ng Checksum
abc291867bca: Kumpleto ang pag-download
5b07f4e08ad0: Pag-verify ng Checksum
5b07f4e08ad0: Kumpleto ang pag-download
8d691f585fa8: Pag-verify ng Checksum
8d691f585fa8: Kumpleto ang pag-download
8d691f585fa8: Kumpleto ang hilahin
5b07f4e08ad0: Hilahin ang kumpleto
abc291867bca: Kumuha ng kumpleto
Digest: sha256: 922c815aa4df050d4df476e92daed4231f466acc8ee90e0e774951b0fd7195a4
Katayuan: Nai-download na mas bagong imahe para sa nginx: pinakabagong
[Pipeline] kasama angDockerContainer
Hindi mukhang tumatakbo si Jenkins sa loob ng isang lalagyan
$ docker run -t -d -u 125: 131 -w "/ var / lib / jenkins / workspace / Unang Pipeline" -v "/ var / lib / jenkins / workspace / Unang Pipeline: / var / lib / jenkins / workspace / Unang Pipeline: rw, z" -v "/ var / lib / jenkins / workspace / Una [protektado ng email]: / var / lib / jenkins / workspace / Una [protektado ng email]: rw, z" -e ******** -e ******** -e ******** -e ******** -e ******** – e ******** -e ******** -e ******** -e ******** -e ******** – e ******** -e ******** -e ******** -e ******** -e ******** – e ******** -e ******** -e ******** -e ******** -e ******** – e ******** -e ******** -e ******** nginx pusa
$ docker top 3141793b98f315dc90a57d810068b8eedb6f62debafb9040de06635b558f2943 -eo pid, comm
[Pipeline] {
[Pipeline] echo
Nilikha ang Docker
[Pipeline]}
$ docker stop – oras = 1 3141793b98f315dc90a57d810068b8eedb6f62debafb9040de06635b558f2943
$ docker rm -f 3141793b98f315dc90a57d810068b8eedb6f62debafb9040de06635b558f2943
[Pipeline] // withDockerContainer
[Pipeline]}
[Pipeline] // yugto
[Pipeline]}
[Pipeline] // kahanay
[Pipeline]}
[Pipeline] // yugto
[Pipeline] yugto
[Pipeline] {(Prod)
[Pipeline] echo
Handa na ang Prod
[Pipeline]}
[Pipeline] // yugto
[Pipeline]}
[Pipeline] // node
[Pipeline] Wakas ng Pipeline
Tapos na: MAGKAROON

Ang nasa itaas na Jenkins Pipeline ay lumikha ng isang imahe ng docker ng Nginx. Maaari mong i-verify na sa pamamagitan ng pagpapatakbo ng utos sa ibaba. Maaari mong makita ang imahe ng docker ng Nginx ay nakalista din.

[protektado ng email]: ~ $ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx pinakabagong 540a289bab6c 2 linggo ang nakakaraan 126MB
httpd pinakabagong 7d85cc3b2d80 2 buwan na ang nakakaraan 154MB
redis pinakabagong f7302e4ab3a8 2 buwan ang nakalipas 98.2MB
geekflare_mongodb pinakabagong 095d17727ca0 3 buwan na ang nakakaraan 325MB

Konklusyon

Inaasahan kong ito ay nagbibigay sa iyo ng isang ideya ng Linya ng Jenkins benepisyo at kung paano ka makakalikha ng isa. Ang nasa itaas ay isang simpleng pagpapakita, at ang pinakamahusay na paraan upang matuto ay sa pamamagitan ng pagsubok sa pagbuo ng mga komplikadong pipeline.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map