3 sikat na tool para sa pag-aayos ng tuluy-tuloy na deployment (Continuous Deployment)

3 sikat na tool para sa pag-aayos ng tuluy-tuloy na deployment (Continuous Deployment)

Ang Continuous Deployment ay isang espesyal na diskarte sa pagbuo ng software na ginagamit upang mabilis, ligtas at mahusay na ipatupad ang iba't ibang mga function sa software.

Ang pangunahing ideya ay lumikha ng isang maaasahang awtomatikong proseso na nagbibigay-daan sa developer na mabilis na maihatid ang tapos na produkto sa user. Kasabay nito, ang mga patuloy na pagbabago ay ginagawa sa produksyon - ito ay tinatawag na tuloy-tuloy na pipeline ng paghahatid (CD Pipeline).

Inirerekomenda ng Skillbox ang: Praktikal na kurso "Mobile Developer PRO".

Pinapaalala namin sa iyo: para sa lahat ng mga mambabasa ng "Habr" - isang diskwento na 10 rubles kapag nag-enroll sa anumang kurso sa Skillbox gamit ang code na pang-promosyon ng "Habr".

3 sikat na tool para sa pag-aayos ng tuluy-tuloy na deployment (Continuous Deployment)

Upang kontrolin ang daloy, maaari kang gumamit ng malawak na hanay ng mga tool, kabilang ang parehong bayad at ganap na libre. Inilalarawan ng artikulong ito ang tatlo sa mga pinakasikat na solusyon sa mga developer na maaaring maging kapaki-pakinabang sa bawat programmer.

Jenkins

Ganap na self-contained open source automation server. Sulit na magtrabaho kasama upang i-automate ang lahat ng uri ng mga gawain na nauugnay sa pagbuo, pagsubok, pagpapadala, o pag-deploy ng software.

Pinakamababang mga kinakailangan sa PC:

  • 256 MB RAM, 1 GB na espasyo ng file.

Pinakamainam:

  • 1 GB RAM, 50 GB hard drive.

Upang gumana, kakailanganin mo rin ng karagdagang software - bersyon 8 ng Java Runtime Environment (JRE).

Ang arkitektura (ibinahagi na computing) ay ganito ang hitsura:
3 sikat na tool para sa pag-aayos ng tuluy-tuloy na deployment (Continuous Deployment)

Ang Jenkins Server ay isang pag-install na responsable para sa pagho-host ng GUI, pati na rin ang pag-aayos at pagpapatupad ng buong build.

Jenkins Node/Slave/Build Server - mga device na maaaring i-configure para magsagawa ng build work sa ngalan ng Master (master node).

Pag-install para sa Linux

Una kailangan mong idagdag ang Jenkins repository sa system:

cd /tmp && wget -q -O — pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add - echo 'deb pkg.jenkins.io/debian-stable binary/' | sudo tee -a /etc/apt/sources.list.d/je

I-update ang repository ng package:

sudo apt update

I-install ang Jenkins:

sudo apt install jenkins

Pagkatapos nito, magiging available ang Jenkins sa system sa pamamagitan ng default na port 8080.

Upang suriin ang pag-andar, kailangan mong buksan ang address sa browser localhost:8080. Pagkatapos ay i-prompt ka ng system na ipasok ang paunang password para sa root user. Ang password na ito ay matatagpuan sa file /var/lib/jenkins/secrets/initialAdminPassword.

Ngayon ay handa na ang lahat, maaari kang magsimulang lumikha ng mga daloy ng CI/CD. Ang graphical na interface ng workbench ay ganito ang hitsura:

3 sikat na tool para sa pag-aayos ng tuluy-tuloy na deployment (Continuous Deployment)

3 sikat na tool para sa pag-aayos ng tuluy-tuloy na deployment (Continuous Deployment)

Mga Lakas ni Jenkins:

  • scalability na ibinigay ng arkitektura ng Master/Slave;
  • pagkakaroon ng REST XML/JSON API;
  • ang kakayahang ikonekta ang isang malaking bilang ng mga extension salamat sa mga plugin;
  • aktibo at patuloy na umuunlad na komunidad.

Cons:

  • walang analytical block;
  • hindi masyadong user-friendly na interface.

TeamCity

Komersyal na pag-unlad mula sa JetBrains. Ang server ay mahusay na may simpleng pag-setup at isang mahusay na interface. Ang default na configuration ay may malaking bilang ng mga function, at ang bilang ng magagamit na mga plugin ay patuloy na tumataas.

Nangangailangan ng bersyon 8 ng Java Runtime Environment (JRE).

Ang mga kinakailangan sa hardware ng server ay hindi kritikal:

  • RAM - 3,2 GB;
  • processor - dual-core, 3,2 GHz;
  • channel ng komunikasyon na may kapasidad na 1 Gb/s.

Pinapayagan ka ng server na makamit ang mataas na pagganap:

  • 60 proyekto na may 300 build configuration;
  • 2 MB na alokasyon para sa build log;
  • 50 build agent;
  • ang kakayahang magtrabaho kasama ang 50 user sa web version at 30 user sa IDE;
  • 100 koneksyon ng panlabas na VCS, karaniwang Perforce at Subversion. Ang average na oras ng pagbabago ay 120 segundo;
  • higit sa 150 mga pagbabago bawat araw;
  • nagtatrabaho sa database sa isang server;
  • Mga setting ng proseso ng JVM server: -Xmx1100m -XX:MaxPermSize=120m.

Ang mga kinakailangan ng ahente ay batay sa pagpapatakbo ng mga pagtitipon. Ang pangunahing gawain ng server ay subaybayan ang lahat ng konektadong ahente at ipamahagi ang mga nakapila na pagtitipon sa mga ahenteng ito batay sa mga kinakailangan sa pagiging tugma, na nag-uulat ng mga resulta. Dumating ang mga ahente sa iba't ibang mga platform at operating system, kasama ang isang paunang na-configure na kapaligiran.

Ang lahat ng impormasyon tungkol sa mga resulta ng build ay naka-imbak sa database. Pangunahin ito ay kasaysayan at iba pang katulad na data, mga pagbabago sa VCS, mga ahente, pagbuo ng mga pila, mga account ng gumagamit at mga pahintulot. Ang database ay hindi lamang nagsasama ng mga build log at artifact.

3 sikat na tool para sa pag-aayos ng tuluy-tuloy na deployment (Continuous Deployment)

Pag-install para sa Linux

Upang manu-manong i-install ang TeamCity gamit ang isang Tomcat servlet container, dapat mong gamitin ang TeamCity archive: TeamCity .tar.gz. I-download makukuha mo ito mula dito.

tar -xfz TeamCity.tar.gz

/bin/runAll. sh [simula|stop]

Sa una mong pagsisimula, kailangan mong piliin ang uri ng database kung saan maiimbak ang data ng pagpupulong.

3 sikat na tool para sa pag-aayos ng tuluy-tuloy na deployment (Continuous Deployment)

Gumagana ang default na configuration localhost:8111/ na may isang rehistradong build agent na tumatakbo sa parehong PC.

Mga kalakasan ng TeamCity:

  • madaling pag-setup;
  • interface ng user-friendly;
  • isang malaking bilang ng mga built-in na function;
  • Serbisyong pang-supporta;
  • mayroong isang RESTful API;
  • magandang dokumentasyon;
  • magandang seguridad.

Cons:

  • limitadong pagsasama;
  • Ito ay isang bayad na tool;
  • isang maliit na komunidad (na, gayunpaman, ay lumalaki).

GoCD

Isang open source na proyekto na nangangailangan ng bersyon 8 ng Java Runtime Environment (JRE) para sa pag-install at pagpapatakbo.

Mga Kinakailangan sa System:

  • RAM - 1 GB minimum, higit pa ay mas mahusay;
  • processor - dual-core, na may core frequency na 2 GHz;
  • hard drive - hindi bababa sa 1 GB ng libreng espasyo.

Ahente:

  • RAM - hindi bababa sa 128 MB, higit pa ay mas mahusay;
  • processor - hindi bababa sa 2 GHz.

Tinitiyak ng server ang pagpapatakbo ng mga ahente at nagbibigay ng isang maginhawang interface para sa gumagamit:

3 sikat na tool para sa pag-aayos ng tuluy-tuloy na deployment (Continuous Deployment)

Mga Yugto/Mga Trabaho/Mga Gawain:

3 sikat na tool para sa pag-aayos ng tuluy-tuloy na deployment (Continuous Deployment)

Pag-install para sa Linux

echo "deb download.gocd.org /” | sudo tee /etc/apt/sources.list.d/gocd.list

kulutan download.gocd.org/GOCD-GPG-KEY.asc | sudo apt-key add -
add-apt-repository ppa:openjdk-r/ppa

apt-makakuha ng update

apt-get install -y openjdk-8-jre

apt-get i-install ang go-server

apt-get install go-agent

/etc/init.d/go-server [start|stop|status|restart]

/etc/init.d/go-agent [start|stop|status|restart]

Bilang default, tumatakbo ang GoCd localhost: 8153.

Mga lakas ng GoCd:

  • open source;
  • simpleng pag-install at pagsasaayos;
  • magandang dokumentasyon;

  • Mahusay na user interface:

3 sikat na tool para sa pag-aayos ng tuluy-tuloy na deployment (Continuous Deployment)

  • kakayahang magpakita ng step-by-step na landas sa pag-deploy ng GoCD sa isang view:

3 sikat na tool para sa pag-aayos ng tuluy-tuloy na deployment (Continuous Deployment)

  • mahusay na pagpapakita ng istraktura ng pipeline:

3 sikat na tool para sa pag-aayos ng tuluy-tuloy na deployment (Continuous Deployment)

  • Ino-optimize ng GoCD ang daloy ng trabaho sa CD sa mga pinakasikat na cloud environment kabilang ang Docker, AWS;
  • ginagawang posible ng tool na itama ang mga problema sa pipeline, kung saan mayroong pagsubaybay sa bawat pagbabago mula sa commit hanggang sa pag-deploy nang real time.

Cons:

  • hindi bababa sa isang ahente ang kailangan;
  • walang console upang ipakita ang lahat ng nakumpletong gawain;
  • upang maisagawa ang bawat utos, kailangan mong lumikha ng isang gawain para sa pagsasaayos ng pipeline;
  • Upang i-install ang plugin kailangan mong ilipat ang .jar file sa /plugins/external at i-restart ang server;
  • medyo maliit na komunidad.

Bilang konklusyon

Tatlong kasangkapan lang ito, sa katunayan marami pa. Mahirap pumili, kaya tiyak na kailangan mong bigyang pansin ang mga karagdagang aspeto.

Ginagawang posible ng open source code ng tool na maunawaan kung ano ito, at magdagdag ng mga bagong feature nang mas mabilis. Ngunit kung ang isang bagay ay hindi gumagana, kailangan mong umasa lamang sa iyong sarili at sa tulong ng komunidad. Ang mga bayad na tool ay nagbibigay ng suporta na minsan ay kritikal.

Kung ang seguridad ang iyong pangunahing priyoridad, sulit na magtrabaho kasama ang isang lokal na tool. Kung hindi, ang pagpili ng solusyon sa SaaS ay isang magandang opsyon.

At panghuli, upang matiyak ang isang tunay na epektibong tuluy-tuloy na proseso ng pag-deploy, kailangan mong bumalangkas ng mga pamantayan na ang mga detalye ay magbibigay-daan sa iyong paliitin ang hanay ng mga magagamit na tool.

Inirerekomenda ng Skillbox ang:

Pinagmulan: www.habr.com

Magdagdag ng komento