de Julius

Cum să configurați implementarea continuă în proiectul dvs. de acasă într-un mod simplu

Cum sa configurati implementarea continua in proiectul dvs de acasa
Fotografie de Sarah Phillips

Implementarea continuă este un lucru frumos. Angajarea proiectului dvs. și vizualizarea acestuia fiind construit și implementat fără a fi nevoie să faceți nimic este fascinant.

Și în acest articol, vreau să vă arăt cum să o faceți cu ușurință în proiectul dvs. de acasă.

Pentru a o clarifica, iată un diagramă care prezintă diferențele dintre livrarea continuă și implementarea continuă.

Cum sa configurati implementarea continua in proiectul dvs de acasa
Livrare continuă vs. implementare continuă

Întrucât, de cele mai multe ori, nimeni în afară de dvs. nu depinde de proiectul dvs. de acasă, vom căuta un flux de lucru cu implementare continuă, deoarece doriți să vedeți modificările imediat implementate. Dacă nu este cazul, puteți modifica fluxul de lucru ulterior.

Veți afla despre următoarele:

  • Cum se face un fișier Docker
  • Cum să vă împingeți proiectul către GitHub
  • Construirea automată a imaginii docker pe Docker Hub
  • Descărcarea și rularea automată a imaginii cu Turnul de veghe

Condiții preliminare:

  • Câteva cunoștințe despre Docker și Dockerfile, deși voi explica unele dintre ele pe parcurs
  • Avea git instalat
  • A Docker Hub cont
  • Un server (Linux) (fizic sau virtual) care rulează Docker

Pentru trimitere, acest este exemplul de depozit GitHub și acest este exemplul de depozit al hub-ului docker pe care îl voi folosi.

Astfel, acest tutorial va fi util numai dacă intenționați să rulați software-ul cu Docker (pe care îl recomand, deoarece Docker este fantastic).

De ce să folosești Docker?

Docker vă permite să aveți același mediu de dezvoltare și producție care îl elimină Heisenbugs și problema „funcționează pe mașina mea”. De asemenea, containerele sunt izolate, ceea ce ne oferă beneficii de securitate.
Mai sunt multe, dar aceste două avantaje mă fac să-mi livrez mereu software-ul în containere Docker.

Configurarea fișierului Docker

În primul rând, vom crea un fișier Docker pentru proiect. Acest fișier special se numește întotdeauna „Dockerfile” fără o extensie și se află în directorul de sus al proiectului.

Un fișier Dockerfile începe cu FROM declarație care îi spune lui Docker cu ce imagine de bază doriți să începeți. Vă puteți imagina că folosiți o pânză cu fundalul deja desenat și doar partea centrală (programul dvs.) lipsește.
De cele mai multe ori imaginea pe care doriți să o extrageți este imaginea de bază a limbajului dvs. de programare, pe care o puteți găsi la cele menționate anterior Docker Hub.

Apoi, copiem fișierele noastre de proiect în containerul de andocare cu COPY.. comanda. Ce face asta?

Acesta preia fișierele din primul director (punctul se referă la directorul curent al fișierului, care include toate fișierele de proiect) și le pune în directorul curent al containerului Docker (amintiți-vă că containerul Docker este propriul său sistem de operare). Fișierele dvs. se află acum în directorul de bază de acolo, pe care poate doriți să îl modificați.

În continuare, trebuie să instalăm dependențe, pe care le voi folosi python pip pentru, dar orice sistem echivalent de gestionare a pachetelor, în funcție de limba aleasă, o va face. Lucrul critic de învățat aici este cum să executați comenzi în container cu RUN.

From python:3.7COPY . .RUN pip install -r requirements.txt

Ușor, nu-i așa? Acum trebuie să începem programul în container.

CMD ["python", "./my_script.py"]

Declarația CMD este unică. Fiecare fișier Docker trebuie să îl aibă ca ultimă linie, deoarece începe procesul primar în container.

Ați terminat fișierul Docker! Acum vă puteți construi manual imaginea și containerul, dar vom ignora asta pentru moment.

Acum, vom crea depozitul nostru pe GitHub, dar amintiți-vă să lăsați „Inițializați acest depozit cu un README” bifat.

1612191007 699 Cum sa configurati implementarea continua in proiectul dvs de acasa

Apoi, ar trebui să copiați adresa URL la distanță.

1612191007 415 Cum sa configurati implementarea continua in proiectul dvs de acasa

Deschideți un cmd / shell în directorul rădăcină al proiectului dvs.

Trebuie să vă inițializați depozitul git, să adăugați fișierele, să configurați telecomanda, să comiteți fișierele și să împingeți proiectul către GitHub.

git initgit add *git remote add origin https://github.com/<user>/<repository>.gitgit commit -a -m "Make Dockerfile ready for CD"git push -u origin master

Acum, depozitul dvs. GitHub ar trebui să arate astfel:

1612191007 708 Cum sa configurati implementarea continua in proiectul dvs de acasa

Felicitări, ați cam terminat!

Următorul pas este să conectați GitHub la Docker Hub. Pentru aceasta, accesați setările contului.

1612191007 742 Cum sa configurati implementarea continua in proiectul dvs de acasa

Derulați în jos și conectați-vă gazda git.

1612191008 878 Cum sa configurati implementarea continua in proiectul dvs de acasa

Creați acum depozitul pe hub-ul docker.

1612191008 148 Cum sa configurati implementarea continua in proiectul dvs de acasa

Dă-i un nume repo și faceți clic pe pictograma GitHub (sau Bitbucket, dacă asta vă aparține). Acum alegeți organizația (de obicei numele dvs. de utilizator) și numele proiectului. Dacă doriți să utilizați imaginea principală pentru construire și să treceți întotdeauna la cele mai recente, puteți face acum clic pe „Creați și construiți” și să urmăriți imaginea construită pentru dvs. În caz contrar, trebuie să editați setările de construire.

1612191008 342 Cum sa configurati implementarea continua in proiectul dvs de acasa

Ultimii pași! Acum ai nevoie Turnul de veghe pe mașina dvs. țintă.
Watchtower este un program care extrage imaginile dvs. de andocare care rulează și verifică dacă există actualizări. Dacă există actualizări, acesta închide grațios containerul original și creează un container din noua imagine cu aceleași setări.

Cel mai bun lucru este că putem instala și Watchtower cu Docker!

Introduceți următoarele în terminal:

docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock v2tec/watchtower

Apoi, trebuie să rulați containerul Docker pentru proiectul dvs.!

docker run -d --name <my-project> <username>/<my-project>

Opțiunea „-d” face ca programul dvs. să ruleze în fundal, astfel încât programul nu se închide dacă închideți terminalul.

Deci, pentru a rezuma, dacă împingeți un commit către depozitul dvs. GitHub, hub-ul Docker va construi automat o imagine Docker pentru dvs. Această imagine este apoi trasă de WatchTower și este rulată cu toate opțiunile originale.

Dacă aveți nevoie de ajutor în orice moment, nu vă fie teamă să întrebați, mă bucur să vă ajut.
Dacă este o problemă tehnică, o problemă pe Proiectul GitHub ar fi grozav!

Dar ce rămâne cu testele?

Buna intrebare!
Puteți utiliza Travis CI pentru a vă rula testele în același timp.
Puteți citi despre acest lucru Aici, dar esența acestuia este că adăugați un alt fișier la depozitul dvs. care conține instrucțiuni pentru un server extern pentru a executa teste unitare sau orice alte instrucțiuni.

Dar ce se întâmplă dacă vreau să se creeze imaginea mea docker doar dacă testele trec?

Acest lucru ne rupe puțin fluxul de lucru.
Acum nu ne mai putem baza pe hub-ul docker pentru a ne construi imaginile. În schimb, va fi și Travis CI care va produce imaginea și apoi o va împinge către depozitul Docker Hub. Citiți despre asta Aici.