Awọn irinṣẹ DevOps kii ṣe fun DevOps nikan. Ilana ti kikọ awọn amayederun adaṣe adaṣe idanwo lati ibere

Apá 1: Wẹ́ẹ̀bùsáítì / Android

Daakọ: Nkan yii jẹ itumọ si Russian ti nkan atilẹba “Awọn irinṣẹ DevOps kii ṣe fun DevOps nikan. "Awọn amayederun adaṣe adaṣe ile lati ibere." Sibẹsibẹ, gbogbo awọn apejuwe, awọn ọna asopọ, awọn agbasọ ọrọ ati awọn ofin ni a tọju ni ede atilẹba lati yago fun ipalọlọ ti itumọ nigbati a tumọ si Russian. Mo fẹ ki o dun kika!

Awọn irinṣẹ DevOps kii ṣe fun DevOps nikan. Ilana ti kikọ awọn amayederun adaṣe adaṣe idanwo lati ibere

Lọwọlọwọ, pataki DevOps jẹ ọkan ninu ibeere julọ ni ile-iṣẹ IT. Ti o ba ṣii awọn aaye wiwa iṣẹ olokiki ati ṣe àlẹmọ nipasẹ owo osu, iwọ yoo rii pe awọn iṣẹ ti o jọmọ DevOps wa ni oke ti atokọ naa. Sibẹsibẹ, o ṣe pataki lati ni oye pe eyi ni akọkọ tọka si ipo 'Oga', eyiti o tumọ si pe oludije ni ipele giga ti awọn ọgbọn, imọ-ẹrọ ati awọn irinṣẹ. Eyi tun wa pẹlu iwọn giga ti ojuse ti o ni nkan ṣe pẹlu iṣẹ ti ko ni idilọwọ ti iṣelọpọ. Sibẹsibẹ, a bẹrẹ lati gbagbe kini DevOps jẹ. Ni ibẹrẹ, kii ṣe eniyan kan pato tabi ẹka kan. Ti a ba wa awọn itumọ ọrọ yii, a yoo rii ọpọlọpọ awọn orukọ ti o lẹwa ati ti o tọ, gẹgẹbi ilana, awọn iṣe, imoye aṣa, ẹgbẹ awọn imọran, ati bẹbẹ lọ.

Amọja mi jẹ ẹlẹrọ adaṣe adaṣe idanwo (Ẹrọ adaṣe adaṣe QA), ṣugbọn Mo gbagbọ pe ko yẹ ki o ni nkan ṣe pẹlu kikọ awọn idanwo adaṣe nikan tabi idagbasoke faaji ilana idanwo. Ni ọdun 2020, imọ ti awọn amayederun adaṣe tun ṣe pataki. Eyi n gba ọ laaye lati ṣeto ilana adaṣe funrararẹ, lati ṣiṣe awọn idanwo lati pese awọn abajade si gbogbo awọn ti o nii ṣe ni ibamu pẹlu awọn ibi-afẹde rẹ. Bi abajade, awọn ọgbọn DevOps jẹ dandan lati gba iṣẹ naa. Ati pe gbogbo eyi dara, ṣugbọn, laanu, iṣoro kan wa (apanirun: nkan yii n gbiyanju lati ṣe irọrun iṣoro yii). Ojuami ni wipe DevOps jẹ lile. Ati pe eyi jẹ kedere, nitori awọn ile-iṣẹ kii yoo san owo pupọ fun nkan ti o rọrun lati ṣe ... Ni agbaye ti DevOps, ọpọlọpọ awọn irinṣẹ, awọn ofin, ati awọn iṣe ti o nilo lati ni oye. Eyi nira paapaa ni ibẹrẹ iṣẹ kan ati da lori iriri imọ-ẹrọ ikojọpọ.

Awọn irinṣẹ DevOps kii ṣe fun DevOps nikan. Ilana ti kikọ awọn amayederun adaṣe adaṣe idanwo lati ibere
orisun: http://maximelanciauxbi.blogspot.com/2017/04/devops-tools.html

Nibi ti a yoo jasi pari pẹlu awọn iforo apa ati idojukọ lori awọn idi ti yi article. 

Kini nkan yii nipa?

Ninu nkan yii, Emi yoo pin iriri mi ti kikọ awọn amayederun adaṣe adaṣe idanwo kan. Ọpọlọpọ awọn orisun alaye wa lori Intanẹẹti nipa ọpọlọpọ awọn irinṣẹ ati bii o ṣe le lo wọn, ṣugbọn Emi yoo fẹ lati wo wọn ni mimọ ni aaye adaṣe adaṣe. Mo gbagbọ pe ọpọlọpọ awọn onimọ-ẹrọ adaṣe jẹ faramọ pẹlu ipo naa nigbati ko si ẹnikan ayafi ti o ba ṣe awọn idanwo ti o dagbasoke tabi bikita nipa titọju wọn. Bi abajade, awọn idanwo di igba atijọ ati pe o ni lati lo akoko mimu wọn dojuiwọn. Lẹẹkansi, ni ibẹrẹ iṣẹ kan, eyi le jẹ iṣẹ ṣiṣe ti o nira: pẹlu ọgbọn pinnu iru awọn irinṣẹ yẹ ki o ṣe iranlọwọ imukuro iṣoro ti a fun, bii o ṣe le yan, tunto ati ṣetọju wọn. Diẹ ninu awọn oludanwo yipada si DevOps (eda eniyan) fun iranlọwọ ati, jẹ ki a sọ ooto, ọna yii ṣiṣẹ. Ni ọpọlọpọ igba eyi le jẹ aṣayan nikan niwọn igba ti a ko ni hihan si gbogbo awọn igbẹkẹle. Ṣugbọn bi a ti mọ, DevOps jẹ awọn eniyan ti o nšišẹ pupọ, nitori wọn ni lati ronu nipa gbogbo awọn amayederun ile-iṣẹ, imuṣiṣẹ, ibojuwo, awọn iṣẹ microservices ati awọn iṣẹ ṣiṣe ti o jọra miiran ti o da lori agbari / ẹgbẹ. Gẹgẹbi igbagbogbo ọran, adaṣe kii ṣe pataki. Nínú irú ọ̀ràn bẹ́ẹ̀, a gbọ́dọ̀ gbìyànjú láti ṣe gbogbo ohun tí ó bá ṣeé ṣe níhà ọ̀dọ̀ wa láti ìbẹ̀rẹ̀ dé òpin. Eyi yoo dinku awọn igbẹkẹle, mu iyara ṣiṣẹ, mu awọn ọgbọn wa dara ati gba wa laaye lati rii aworan nla ti ohun ti n ṣẹlẹ.

Nkan naa ṣafihan awọn irinṣẹ olokiki julọ ati olokiki ati ṣafihan bi o ṣe le lo wọn lati kọ awọn amayederun adaṣe adaṣe ni igbese ni igbese. Ẹgbẹ kọọkan jẹ aṣoju nipasẹ awọn irinṣẹ ti a ti ni idanwo nipasẹ iriri ti ara ẹni. Ṣugbọn eyi ko tumọ si pe o ni lati lo ohun kanna. Awọn irinṣẹ tikararẹ ko ṣe pataki, wọn han ati di ti atijo. Iṣẹ-ṣiṣe imọ-ẹrọ wa ni lati loye awọn ilana ipilẹ: idi ti a nilo ẹgbẹ awọn irinṣẹ ati kini awọn iṣoro iṣẹ ti a le yanju pẹlu iranlọwọ wọn. Ti o ni idi ni opin apakan kọọkan Mo fi awọn ọna asopọ si awọn irinṣẹ ti o jọra ti o le ṣee lo ninu agbari rẹ.

Kini ko si ninu nkan yii

Mo tun ṣe lẹẹkansi pe nkan naa kii ṣe nipa awọn irinṣẹ kan pato, nitorinaa kii yoo si awọn ifibọ koodu lati inu iwe ati awọn apejuwe ti awọn aṣẹ kan pato. Ṣugbọn ni opin apakan kọọkan Mo fi awọn ọna asopọ silẹ fun ikẹkọ alaye.

Eyi ṣe nitori: 

  • ohun elo yii rọrun pupọ lati wa ni awọn orisun pupọ (iwe, awọn iwe, awọn iṣẹ fidio);
  • ti a ba bẹrẹ sii jinle, a yoo ni lati kọ awọn ẹya 10, 20, 30 ti nkan yii (nigba ti awọn ero jẹ 2-3);
  • Emi ko fẹ lati padanu akoko rẹ nitori o le fẹ lo awọn irinṣẹ miiran lati ṣaṣeyọri awọn ibi-afẹde kanna.

Ṣaṣeṣe

Emi yoo fẹ gaan ohun elo yii lati wulo fun gbogbo oluka, kii ṣe kika ati gbagbe nikan. Ninu iwadi eyikeyi, adaṣe jẹ paati pataki pupọ. Fun eyi ni mo ti pese sile Ibi ipamọ GitHub pẹlu awọn ilana igbesẹ-nipasẹ-igbesẹ lori bi o ṣe le ṣe ohun gbogbo lati ibere. Iṣẹ amurele tun wa nduro fun ọ lati rii daju pe o ko ṣe aibikita daakọ awọn ila ti awọn aṣẹ ti o n ṣiṣẹ.

Gbero

Igbese
Imọ-ẹrọ
Irinṣẹ

1
Ṣiṣẹ agbegbe (mura awọn idanwo oju opo wẹẹbu / Android ki o ṣiṣẹ ni agbegbe) 
Node.js, Selenium, Appium

2
Awọn ọna iṣakoso ẹya 
Git

3
Apoti
Docker, Selenium grid, Selenoid (Web, Android)

4
CI/CD
Gitlab CI

5
Awọn iru ẹrọ awọsanma
Google awọsanma Platform

6
Orilẹ-ede
Kubernetes

7
Awọn amayederun bi koodu (IaC)
Terraform, O ṣeeṣe

Ilana ti apakan kọọkan

Lati jẹ ki alaye naa di mimọ, apakan kọọkan ni a ṣe apejuwe ni ibamu si ilana ilana atẹle:

  • alaye kukuru ti imọ-ẹrọ,
  • iye fun awọn amayederun adaṣe,
  • apejuwe ti ipo lọwọlọwọ ti awọn amayederun,
  • awọn ọna asopọ si iwadi,
  • iru irinṣẹ.

1. Ṣiṣe awọn idanwo ni agbegbe

Apejuwe kukuru ti imọ-ẹrọ

Eyi jẹ igbesẹ igbaradi lati ṣiṣe awọn idanwo demo ni agbegbe ati rii daju pe wọn kọja. Ni apakan iṣe, Node.js ti lo, ṣugbọn ede siseto ati pẹpẹ ko tun ṣe pataki ati pe o le lo awọn ti o lo ninu ile-iṣẹ rẹ. 

Однако в качестве инструментов автоматизации я рекомендую использовать Selenium WebDriver для web-платформ и Appium для Android-платформы соответственно, так как на следующих шагах мы будем использовать Docker-образы, которые заточены на работу конкретно с этими инструментами. Более того, ссылаясь на требования в вакансиях, эти инструменты наиболее востребованы на рынке.

Как вы могли заметить, мы рассматриваем только web и Android-тесты. К сожалению, IOS – совершенно другая история (спасибо Apple). Я планирую продемонстрировать решения и практики, связанные с IOS, в следующих частях.

Iye fun adaṣiṣẹ amayederun

Lati irisi amayederun, ṣiṣe ni agbegbe ko pese iye eyikeyi. O kan ṣayẹwo pe awọn idanwo nṣiṣẹ lori ẹrọ agbegbe ni awọn aṣawakiri agbegbe ati awọn simulators. Ṣugbọn ni eyikeyi ọran, eyi jẹ aaye ibẹrẹ pataki.

Apejuwe ti isiyi ipo ti amayederun

Awọn irinṣẹ DevOps kii ṣe fun DevOps nikan. Ilana ti kikọ awọn amayederun adaṣe adaṣe idanwo lati ibere

Awọn ọna asopọ lati ṣawari

Iru irinṣẹ

  • ede siseto eyikeyi ti o fẹ, ni apapo pẹlu awọn idanwo Selenium/Appium;
  • eyikeyi igbeyewo;
  • eyikeyi olusare igbeyewo.

2. Awọn ọna ṣiṣe iṣakoso ẹya (Git)

Apejuwe kukuru ti imọ-ẹrọ

Kii yoo jẹ ifihan nla si ẹnikẹni ti MO ba sọ pe iṣakoso ẹya jẹ apakan pataki pupọ ti idagbasoke, mejeeji ni ẹgbẹ kan ati ọkọọkan. Da lori awọn orisun pupọ, o jẹ ailewu lati sọ pe Git jẹ aṣoju olokiki julọ. Eto iṣakoso ẹya n pese ọpọlọpọ awọn anfani, gẹgẹbi pinpin koodu, titoju awọn ẹya, mimu-pada sipo si awọn ẹka iṣaaju, mimojuto itan iṣẹ akanṣe, ati awọn afẹyinti. A kii yoo jiroro lori aaye kọọkan ni kikun, nitori Mo ni idaniloju pe o faramọ pẹlu rẹ ati lo ninu iṣẹ ojoojumọ rẹ. Ṣugbọn ti ko ba lojiji, lẹhinna Mo ṣeduro idaduro kika nkan yii ati kikun aafo yii ni kete bi o ti ṣee.

Iye fun adaṣiṣẹ amayederun

Ati nihin o le beere ibeere ti o bọgbọnmu: “Kini idi ti o n sọ fun wa nipa Git? Gbogbo eniyan mọ eyi o si lo mejeeji fun koodu idagbasoke ati fun koodu idanwo-laifọwọyi. ” Iwọ yoo jẹ ẹtọ pipe, ṣugbọn ninu nkan yii a n sọrọ nipa awọn amayederun ati apakan yii ṣe bi awotẹlẹ fun apakan 7: “Amayederun bi koodu (IaC)”. Fun wa, eyi tumọ si pe gbogbo awọn amayederun, pẹlu idanwo, jẹ apejuwe ni irisi koodu, nitorinaa a tun le lo awọn eto ikede si rẹ ati gba awọn anfani kanna bi fun idagbasoke ati koodu adaṣe.

A yoo wo IaC ni awọn alaye diẹ sii ni Igbesẹ 7, ṣugbọn paapaa ni bayi o le bẹrẹ lilo Git ni agbegbe nipa ṣiṣẹda ibi ipamọ agbegbe kan. Aworan nla yoo gbooro sii nigbati a ba ṣafikun ibi ipamọ latọna jijin si awọn amayederun.

Apejuwe ti isiyi ipo ti amayederun

Awọn irinṣẹ DevOps kii ṣe fun DevOps nikan. Ilana ti kikọ awọn amayederun adaṣe adaṣe idanwo lati ibere

Awọn ọna asopọ lati ṣawari

Iru irinṣẹ

3. Apoti (Docker)

Apejuwe kukuru ti imọ-ẹrọ

Lati ṣe afihan bawo ni imudarapọ ti yi awọn ofin ere naa pada, jẹ ki a pada sẹhin ni akoko awọn ewadun diẹ. Pada lẹhinna, awọn eniyan ra ati lo awọn ẹrọ olupin lati ṣiṣe awọn ohun elo. Ṣugbọn ni ọpọlọpọ awọn ọran, awọn orisun ibẹrẹ ti a beere ni a ko mọ tẹlẹ. Bi abajade, awọn ile-iṣẹ lo owo lori rira gbowolori, awọn olupin ti o lagbara, ṣugbọn diẹ ninu agbara yii ko lo patapata.

Ipele ti o tẹle ti itankalẹ jẹ awọn ẹrọ foju (VMs), eyiti o yanju iṣoro ti sisọnu owo lori awọn orisun ti ko lo. Imọ-ẹrọ yii jẹ ki o ṣee ṣe lati ṣiṣe awọn ohun elo ni ominira ti ara wọn laarin olupin kanna, pinpin aaye ti o ya sọtọ patapata. Ṣugbọn, laanu, eyikeyi imọ-ẹrọ ni awọn alailanfani rẹ. Ṣiṣe VM nilo ẹrọ ṣiṣe ni kikun, eyiti o nlo Sipiyu, Ramu, ibi ipamọ ati, da lori OS, awọn idiyele iwe-aṣẹ nilo lati ṣe akiyesi. Awọn ifosiwewe wọnyi ni ipa lori iyara ikojọpọ ati jẹ ki gbigbe gbigbe le nira.

Ati nisisiyi a wá si containerization. Lẹẹkansi, imọ-ẹrọ yii yanju iṣoro iṣaaju, bi awọn apoti ko ṣe lo OS ni kikun, eyiti o sọ ọpọlọpọ awọn ohun elo laaye ati pese ojutu iyara ati irọrun fun gbigbe.

Конечно, технология контейнеризации не является чем-то новым и впервые была представлена в конце 70-х. В те времена проводилось много исследований, наработок, и попыток. Но именно Docker адаптировал эту технологию и сделал ее легкодоступной для масс. В наше время, когда мы говорим о контейнерах, в большинстве случаев мы имеем ввиду Docker. Когда мы говорим о Docker-контейнерах, мы подразумеваем Linux-контейнеры. Мы можем использовать Windows и macOS-системы для запуска контейнеров, но важно понимать, что в таком случае появляется дополнительная прослойка. Например, Docker на Mac незаметно запускает контейнеры внутри легковесной Linux VM. Мы еще вернемся к этой теме, когда будем обсуждать запуск Android-эмуляторов внутри контейнеров, так так здесь появляется очень важной нюанс, который необходимо разобрать более подробно.

Iye fun adaṣiṣẹ amayederun

A rii pe apoti ati Docker jẹ itura. Jẹ ki a wo eyi ni aaye ti adaṣe, nitori gbogbo ọpa tabi imọ-ẹrọ nilo lati yanju iṣoro kan. Jẹ ki a ṣe ilana awọn iṣoro ti o han gbangba ti adaṣe adaṣe ni aaye ti awọn idanwo UI:

  • nọmba nla ti awọn igbẹkẹle nigba fifi sori Selenium ati ni pataki Appium;
  • awọn iṣoro ibamu laarin awọn ẹya ti awọn aṣawakiri, awọn simulators ati awakọ;
  • aini aaye ti o ya sọtọ fun awọn aṣawakiri / awọn simulators, eyiti o ṣe pataki ni pataki fun ṣiṣe ni afiwe;
  • soro lati ṣakoso ati ṣetọju ti o ba nilo lati ṣiṣẹ 10, 50, 100 tabi paapaa awọn aṣawakiri 1000 ni akoko kanna.

Ṣugbọn niwọn igba ti Selenium jẹ ohun elo adaṣe adaṣe olokiki julọ ati Docker jẹ ohun elo apoti ti o gbajumọ julọ, ko yẹ ki o jẹ iyalẹnu pe ẹnikan ti gbiyanju lati darapọ wọn lati ṣẹda ohun elo ti o lagbara lati yanju awọn iṣoro ti a mẹnuba loke. Jẹ ki a ro iru awọn solusan ni awọn alaye diẹ sii. 

Selenium akoj ni docker

Этот инструмент является самым популярным в мире Selenium для запуска нескольких браузеров на нескольких машинах и управления ими из центрального узла. Для запуска необходимо зарегистрировать как минимум 2 части: Hub и Node(s). Hub – это центральный узел, который получает все запросы от тестов и распределяет их по соответствующим Nodes. Для каждого Node мы можем настроить конкретную конфигурацию, например, указав нужный браузер и его версию. Однако нам все еще необходимо самим позаботиться о совместимых драйверах для браузеров и установить их на нужные Nodes. По этой причине Selenium grid не используется в чистом виде, за исключением тех случаев, когда нам нужно работать с браузерами, которые нельзя установить на Linux OS. Для всех остальных случаев значительно гибким и правильным решением будет использование Docker-образов для запуска Selenium grid Hub и Nodes. Такой подход сильно упрощает управление узлами, так как мы можем выбрать нужный нам образ с уже установленными совместимыми версиями браузеров и драйверов.

Pelu awọn atunyẹwo odi nipa iduroṣinṣin, paapaa nigbati o nṣiṣẹ nọmba nla ti Nodes ni afiwe, Selenium grid tun jẹ ohun elo olokiki julọ fun ṣiṣe awọn idanwo Selenium ni afiwe. O ṣe pataki lati ṣe akiyesi pe ọpọlọpọ awọn ilọsiwaju ati awọn iyipada ti ọpa yii n han nigbagbogbo ni orisun-ìmọ, eyiti o dojuko ọpọlọpọ awọn igo.

Selenoid fun Ayelujara

Ọpa yii jẹ aṣeyọri ni agbaye ti Selenium bi o ti n ṣiṣẹ taara ninu apoti ati pe o ti jẹ ki igbesi aye ọpọlọpọ awọn onimọ-ẹrọ adaṣe rọrun pupọ. Ni akọkọ, eyi kii ṣe iyipada miiran ti akoj Selenium. Dipo, awọn olupilẹṣẹ ṣẹda ẹya tuntun ti Selenium Hub ni Golang, eyiti, ni idapo pẹlu awọn aworan Docker iwuwo fẹẹrẹ fun ọpọlọpọ awọn aṣawakiri, funni ni iwuri si idagbasoke adaṣe adaṣe. Pẹlupẹlu, ninu ọran ti Selenium Grid, a gbọdọ pinnu gbogbo awọn aṣawakiri ti a beere ati awọn ẹya wọn ni ilosiwaju, eyiti kii ṣe iṣoro nigbati o n ṣiṣẹ pẹlu ẹrọ aṣawakiri kan nikan. Ṣugbọn nigbati o ba de si awọn aṣawakiri atilẹyin ọpọ, Selenoid ni ojutu nọmba kan o ṣeun si ẹya 'alawakiri lori ibeere' rẹ. Gbogbo ohun ti o nilo fun wa ni lati ṣe igbasilẹ awọn aworan pataki pẹlu awọn aṣawakiri ni ilosiwaju ati ṣe imudojuiwọn faili iṣeto ni eyiti Selenoid ṣe ajọṣepọ. Lẹhin Selenoid gba ibeere kan lati awọn idanwo naa, yoo ṣe ifilọlẹ eiyan ti o fẹ laifọwọyi pẹlu ẹrọ aṣawakiri ti o fẹ. Nigbati idanwo naa ba pari, Selenoid yoo yọkuro eiyan naa, nitorinaa o ṣe idasilẹ awọn orisun fun awọn ibeere iwaju. Ọna yii ṣe imukuro patapata iṣoro ti a mọ daradara ti 'ipalara node' ti a nigbagbogbo ba pade ni grid Selenium.

Ṣugbọn, ala, Selenoid kii ṣe ọta ibọn fadaka. A ni ẹya 'oluwakiri lori ibeere', ṣugbọn ẹya 'awọn orisun lori ibeere' ko si si. Lati lo Selenoid, a gbọdọ fi sori ẹrọ lori ohun elo ti ara tabi lori VM kan, eyiti o tumọ si pe a gbọdọ mọ tẹlẹ bi ọpọlọpọ awọn orisun nilo lati pin. Mo gboju pe eyi kii ṣe iṣoro fun awọn iṣẹ akanṣe kekere ti o nṣiṣẹ 10, 20 tabi paapaa awọn aṣawakiri 30 ni afiwe. Ṣugbọn kini ti a ba nilo 100, 500, 1000 tabi diẹ sii? Ko ṣe oye lati ṣetọju ati sanwo fun ọpọlọpọ awọn orisun ni gbogbo igba. Ni awọn apakan 5 ati 6 ti nkan yii, a yoo jiroro awọn solusan ti o gba ọ laaye lati ṣe iwọn, nitorinaa idinku awọn idiyele ile-iṣẹ ni pataki.

Selenoid for Android

После успеха Selenoid в качестве инструмента для web-автоматизации, люди хотели получить что-то подобное для Android. И это свершилось – Selenoid был выпущен с поддержкой Android. С высокоуровневой пользовательской точки зрения принцип работы аналогичен web-автоматизации. Единственное отличие заключается в том, что вместо контейнеров с браузерами Selenoid запускает контейнеры с Android-эмуляторами. На мой взгляд, на сегодняшний момент это самый мощный бесплатный инструмент для запуска Android-тестов параллельно.

Мне бы очень не хотелось говорить о негативных сторонах данного инструмента, так как он действительно мне очень нравится. Но все же тут присутствуют те же недостатки, относящиеся и к web-автоматизации, связанные с масштабированием. В дополнение к этому нужно рассказать о еще одном ограничении, которое может стать неожиданностью, если мы настраиваем инструмент впервые. Для запуска Android-образов нам необходима физическая машина или VM с nested virtualisation — поддержкой. В практическом руководстве я демонстрирую, как это активировать на Linux VM. Однако если вы являетесь macOS пользователем и хотите развернуть Selenoid локально, то для запуска Android-тестов это будет невозможно. Но вы всегда можете запустить Linux VM локально с настроенной ‘nested virtualisation’ и развернуть Selenoid внутри.

Apejuwe ti isiyi ipo ti amayederun

В контексте этой статьи мы добавим 2 инструмента для иллюстрации инфраструктуры. Это Selenium grid для web-тестов и Selenoid для Android-тестов. В руководстве на GitHub я также покажу, как использовать Selenoid для запуска web-тестов. 

Awọn irinṣẹ DevOps kii ṣe fun DevOps nikan. Ilana ti kikọ awọn amayederun adaṣe adaṣe idanwo lati ibere

Awọn ọna asopọ lati ṣawari

Iru irinṣẹ

  • Awọn irinṣẹ ifipamọ miiran wa, ṣugbọn Docker jẹ olokiki julọ. Ti o ba fẹ gbiyanju nkan miiran, ranti pe awọn irinṣẹ ti a ti bo fun ṣiṣe awọn idanwo Selenium ni afiwe kii yoo ṣiṣẹ jade ninu apoti.  
  • Gẹgẹbi a ti sọ tẹlẹ, ọpọlọpọ awọn iyipada ti akoj Selenium, fun apẹẹrẹ, Zalenium.

4.CI/CD

Apejuwe kukuru ti imọ-ẹrọ

Iwa ti iṣọpọ igbagbogbo jẹ olokiki pupọ ni idagbasoke ati pe o wa ni deede pẹlu awọn eto iṣakoso ẹya. Bi o ti jẹ pe eyi, Mo lero pe idarudapọ wa ninu awọn ọrọ-ọrọ. Ni paragi yii Emi yoo fẹ lati ṣe apejuwe awọn iyipada 3 ti imọ-ẹrọ yii lati oju-ọna mi. Lori intanẹẹti iwọ yoo rii ọpọlọpọ awọn nkan pẹlu awọn itumọ oriṣiriṣi, ati pe o jẹ deede deede ti ero rẹ ba yatọ. Ohun pataki julọ ni pe o wa ni oju-iwe kanna pẹlu awọn ẹlẹgbẹ rẹ.

Nitorinaa, awọn ofin 3 wa: CI - Integration Tesiwaju, CD - Ifijiṣẹ Ilọsiwaju ati lẹẹkansi CD - Ilọsiwaju Ilọsiwaju. (Ni isalẹ Emi yoo lo awọn ofin wọnyi ni Gẹẹsi). Iyipada kọọkan n ṣafikun ọpọlọpọ awọn igbesẹ afikun si opo gigun ti idagbasoke rẹ. Ṣugbọn ọrọ naa lemọlemọfún (tesiwaju) jẹ ohun pataki julọ. Ni aaye yii, a tumọ si nkan ti o ṣẹlẹ lati ibẹrẹ si ipari, laisi idalọwọduro tabi idasi afọwọṣe. Jẹ ki a wo CI & CD ati CD ni aaye yii.

  • Itẹsiwaju Integration eyi ni ipele ibẹrẹ ti itankalẹ. Lẹhin fifi koodu titun silẹ si olupin naa, a nireti lati gba esi ni iyara pe awọn ayipada wa dara. Ni deede, CI pẹlu ṣiṣiṣẹ awọn irinṣẹ itupalẹ koodu aimi ati ẹyọkan/awọn idanwo API inu. Eyi n gba wa laaye lati gba alaye nipa koodu wa laarin iṣẹju-aaya/iṣẹju diẹ.
  • Ilọsiwaju Ilọsiwaju ni a diẹ to ti ni ilọsiwaju igbese ibi ti a ṣiṣe Integration / UI igbeyewo. Sibẹsibẹ, ni ipele yii a ko gba awọn abajade ni yarayara bi pẹlu CI. Ni akọkọ, iru awọn idanwo wọnyi gba to gun lati pari. Ni ẹẹkeji, ṣaaju ifilọlẹ, a gbọdọ mu awọn ayipada wa si agbegbe idanwo / iṣeto. Pẹlupẹlu, ti a ba n sọrọ nipa idagbasoke alagbeka, lẹhinna igbesẹ afikun yoo han lati ṣẹda kikọ ohun elo wa.
  • Imuṣiṣẹ Ilọsiwaju dawọle pe a ṣe idasilẹ awọn ayipada wa laifọwọyi si iṣelọpọ ti gbogbo awọn idanwo gbigba ba ti kọja ni awọn ipele iṣaaju. Ni afikun si eyi, lẹhin ipele itusilẹ, o le tunto ọpọlọpọ awọn ipele, gẹgẹbi ṣiṣe awọn idanwo ẹfin lori iṣelọpọ ati gbigba awọn metiriki ti iwulo. Ilọsiwaju Ilọsiwaju ṣee ṣe nikan pẹlu agbegbe to dara nipasẹ awọn idanwo adaṣe. Ti o ba nilo awọn ilowosi afọwọṣe eyikeyi, pẹlu idanwo, lẹhinna eyi ko si mọ lemọlemọfún (tesiwaju). Lẹhinna a le sọ pe opo gigun ti epo wa ni ibamu pẹlu iṣe ti Ifijiṣẹ Ilọsiwaju.

Iye fun adaṣiṣẹ amayederun

Ni abala yii, Mo yẹ ki o ṣalaye pe nigba ti a ba sọrọ nipa awọn idanwo UI opin-si-opin, o tumọ si pe a yẹ ki a gbe awọn ayipada wa ati awọn iṣẹ to somọ lati ṣe idanwo awọn agbegbe. Ijọpọ Ilọsiwaju - ilana naa ko wulo fun iṣẹ-ṣiṣe yii ati pe a gbọdọ ṣe abojuto imuse o kere ju awọn iṣe Ifijiṣẹ Ilọsiwaju. Ilọsiwaju Ilọsiwaju tun jẹ oye ni ipo ti awọn idanwo UI ti a ba nlo lati ṣiṣe wọn ni iṣelọpọ.

Ati pe ṣaaju ki a to wo apejuwe ti iyipada faaji, Mo fẹ sọ awọn ọrọ diẹ nipa GitLab CI. Ko dabi awọn irinṣẹ CI/CD miiran, GitLab n pese ibi ipamọ latọna jijin ati ọpọlọpọ awọn ẹya afikun miiran. Nitorinaa, GitLab jẹ diẹ sii ju CI. O pẹlu iṣakoso koodu orisun, iṣakoso Agile, awọn opo gigun ti CI / CD, awọn irinṣẹ gedu ati ikojọpọ awọn metiriki jade kuro ninu apoti. Itumọ GitLab ni Gitlab CI/CD ati GitLab Runner. Eyi ni apejuwe kukuru lati oju opo wẹẹbu osise:

Gitlab CI/CD jẹ ohun elo wẹẹbu kan pẹlu API ti o tọju ipo rẹ sinu ibi ipamọ data, ṣakoso awọn iṣẹ akanṣe / kọ ati pese wiwo olumulo kan. GitLab Runner jẹ ohun elo kan ti o kọ awọn ilana. O le ṣe ransogun lọtọ ati ṣiṣẹ pẹlu GitLab CI/CD nipasẹ API kan. Fun awọn idanwo ti nṣiṣẹ o nilo mejeeji apẹẹrẹ Gitlab ati Runner.

Apejuwe ti isiyi ipo ti amayederun

Awọn irinṣẹ DevOps kii ṣe fun DevOps nikan. Ilana ti kikọ awọn amayederun adaṣe adaṣe idanwo lati ibere

Awọn ọna asopọ lati ṣawari

Iru irinṣẹ

5. Awọn iru ẹrọ awọsanma

Apejuwe kukuru ti imọ-ẹrọ

Ni apakan yii a yoo sọrọ nipa aṣa ti o gbajumọ ti a pe ni 'awọn awọsanma gbangba'. Laibikita awọn anfani nla ti agbara agbara ati awọn imọ-ẹrọ iṣipopada ti a ṣalaye loke pese, a tun nilo awọn orisun iširo. Awọn ile-iṣẹ ra awọn olupin ti o gbowolori tabi awọn ile-iṣẹ data iyalo, ṣugbọn ninu ọran yii o jẹ dandan lati ṣe awọn iṣiro (nigbakugba aiṣedeede) ti iye awọn orisun ti a yoo nilo, boya a yoo lo wọn 24/7 ati fun awọn idi wo. Fun apẹẹrẹ, iṣelọpọ nilo olupin ti n ṣiṣẹ XNUMX/XNUMX, ṣugbọn ṣe a nilo awọn orisun kanna fun idanwo ni ita awọn wakati iṣẹ? O tun da lori iru idanwo ti a ṣe. Apeere kan yoo jẹ awọn idanwo fifuye / wahala ti a gbero lati ṣiṣẹ lakoko awọn wakati ti kii ṣiṣẹ lati le gba awọn abajade ni ọjọ keji. Ṣugbọn ni pato wiwa olupin XNUMX/XNUMX ko nilo fun awọn idanwo adaṣe opin-si-opin ati ni pataki kii ṣe fun awọn agbegbe idanwo afọwọṣe. Fun iru awọn ipo bẹẹ, yoo dara lati gba ọpọlọpọ awọn ohun elo bi o ṣe nilo lori ibeere, lo wọn, ati dawọ sisanwo nigbati wọn ko nilo wọn mọ. Pẹlupẹlu, yoo jẹ nla lati gba wọn lesekese nipa ṣiṣe awọn jinna asin diẹ tabi ṣiṣe awọn iwe afọwọkọ meji kan. Eleyi jẹ ohun ti gbangba awọsanma ti wa ni lilo fun. Jẹ ki a wo itumọ naa:

“Awọsanma gbangba jẹ asọye bi awọn iṣẹ iširo ti a funni nipasẹ awọn olupese ẹnikẹta lori Intanẹẹti ti gbogbo eniyan, ṣiṣe wọn wa fun ẹnikẹni ti o fẹ lati lo tabi ra wọn. Wọn le jẹ ọfẹ tabi ta lori ibeere, gbigba awọn alabara laaye lati sanwo nikan fun lilo fun awọn iyipo Sipiyu, ibi ipamọ, tabi bandiwidi ti wọn jẹ. ”

Nibẹ jẹ ẹya ero ti gbangba awọsanma ni o wa gbowolori. Ṣugbọn ero pataki wọn ni lati dinku awọn idiyele ile-iṣẹ. Gẹgẹbi a ti sọ tẹlẹ, awọn awọsanma gbangba gba ọ laaye lati gba awọn orisun lori ibeere ati sanwo nikan fun akoko ti o lo wọn. Paapaa, nigbakan a gbagbe pe awọn oṣiṣẹ gba owo osu, ati awọn alamọja tun jẹ orisun ti o gbowolori. O gbọdọ ṣe akiyesi pe awọn awọsanma ti gbogbo eniyan jẹ ki atilẹyin amayederun rọrun pupọ, eyiti o fun laaye awọn onimọ-ẹrọ lati dojukọ awọn iṣẹ ṣiṣe pataki diẹ sii. 

Iye fun adaṣiṣẹ amayederun

Awọn orisun kan pato wo ni a nilo fun awọn idanwo UI ipari-si-opin? Ni ipilẹ iwọnyi jẹ awọn ẹrọ foju tabi awọn iṣupọ (a yoo sọrọ nipa Kubernetes ni apakan atẹle) fun ṣiṣe awọn aṣawakiri ati awọn emulators. Awọn aṣawakiri diẹ sii ati awọn emulators ti a fẹ lati ṣiṣẹ ni nigbakannaa, diẹ sii Sipiyu ati iranti ti o nilo ati owo diẹ sii ti a ni lati sanwo fun. Nitorinaa, awọn awọsanma ti gbogbo eniyan ni ipo adaṣe adaṣe idanwo gba wa laaye lati ṣiṣẹ nọmba nla (100, 200, 1000…) ti awọn aṣawakiri / emulators lori ibeere, gba awọn abajade idanwo ni yarayara bi o ti ṣee ki o dẹkun isanwo fun iru awọn orisun aṣiwere-lekoko. agbara. 

Awọn olupese awọsanma olokiki julọ ni Awọn iṣẹ wẹẹbu Amazon (AWS), Microsoft Azure, Google Cloud Platform (GCP). Bi o ṣe le ṣe itọsọna n pese awọn apẹẹrẹ ti bii o ṣe le lo GCP, ṣugbọn ni gbogbogbo ko ṣe pataki ohun ti o lo fun awọn iṣẹ ṣiṣe adaṣe. Gbogbo wọn pese isunmọ iṣẹ ṣiṣe kanna. Ni deede, lati yan olupese kan, iṣakoso dojukọ gbogbo awọn amayederun ile-iṣẹ ati awọn ibeere iṣowo, eyiti o kọja ipari ti nkan yii. Fun awọn onimọ-ẹrọ adaṣe, yoo jẹ ohun ti o nifẹ si lati ṣe afiwe lilo awọn olupese awọsanma pẹlu lilo awọn iru ẹrọ awọsanma pataki fun awọn idi idanwo, gẹgẹ bi awọn Labs Sauce, BrowserStack, BitBar, ati bẹbẹ lọ. Nitorinaa jẹ ki a ṣe paapaa! Ni ero mi, Awọn Labs Sauce jẹ oko idanwo awọsanma olokiki julọ, eyiti o jẹ idi ti Mo lo fun lafiwe. 

GCP vs Sauce Labs fun awọn idi adaṣe:

Представим, что нам нужно прогнать одновременно 8 web-тестов и 8 Android-тестов. Для этого мы будем использовать GCP и запустим 2 виртуальные машины с Selenoid. На первой мы поднимем 8 контейнеров с браузерами. На второй – 8 контейнеров с эмуляторами. Давайте взглянем на цены:  

Awọn irinṣẹ DevOps kii ṣe fun DevOps nikan. Ilana ti kikọ awọn amayederun adaṣe adaṣe idanwo lati ibere
Lati ṣiṣẹ eiyan kan pẹlu Chrome, a nilo n1-boṣewa-1 машина. В случае с Android Eyi yoo n1-boṣewa-4 fun ọkan emulator. Ni otitọ, ọna irọrun diẹ sii ati din owo ni lati ṣeto awọn iye olumulo kan pato fun Sipiyu / Iranti, ṣugbọn ni akoko eyi ko ṣe pataki fun lafiwe pẹlu Awọn Labs Sauce.

Ati pe eyi ni awọn owo-ori fun lilo Awọn Labs Sauce:

Awọn irinṣẹ DevOps kii ṣe fun DevOps nikan. Ilana ti kikọ awọn amayederun adaṣe adaṣe idanwo lati ibere
Mo gbagbọ pe o ti ṣe akiyesi iyatọ tẹlẹ, ṣugbọn Emi yoo tun pese tabili kan pẹlu awọn iṣiro fun iṣẹ-ṣiṣe wa:

Awọn ohun elo ti a beere
Oṣooṣu
Awọn wakati ṣiṣẹ(8 owurọ - 8 irọlẹ)
Awọn wakati ṣiṣẹ+ Ṣáájú

GCP fun Ayelujara
n1-boṣewa-1 x 8 = n1-boṣewa-8
$194.18
23 ọjọ * 12h * 0.38 = $ 104.88 
23 ọjọ * 12h * 0.08 = $ 22.08

Obe Labs fun Web
Awọn idanwo afiwera Cloud8 foju
$1.559
-
-

GCP for Android
n1-boṣewa-4 x 8: n1-boṣewa-16
$776.72
23 ọjọ * 12h * 1.52 = $ 419.52 
23 days * 12h * 0.32 = 88.32$

Sauce Labs for Android
Real Device Cloud 8 ni afiwe igbeyewo
$1.999
-
-

Bii o ti le rii, iyatọ ninu idiyele jẹ nla, ni pataki ti o ba ṣiṣẹ awọn idanwo nikan lakoko akoko iṣẹ wakati mejila. Ṣugbọn o le ge awọn idiyele paapaa siwaju ti o ba lo awọn ẹrọ iṣaaju. Kini o jẹ?

VM preemptible jẹ apẹẹrẹ ti o le ṣẹda ati ṣiṣe ni idiyele pupọ ju awọn iṣẹlẹ deede lọ. Bibẹẹkọ, Ẹrọ Iṣiro le fopin si (tẹlẹ) awọn iṣẹlẹ wọnyi ti o ba nilo iraye si awọn orisun wọnyẹn fun awọn iṣẹ ṣiṣe miiran. Awọn apẹẹrẹ ti a ti ṣaju tẹlẹ jẹ agbara Oniṣiro Oniṣiro, nitorinaa wiwa wọn yatọ pẹlu lilo.

Ti awọn ohun elo rẹ ba jẹ ifarada-ẹbi ati pe o le koju awọn iṣaju apẹẹrẹ ti o ṣeeṣe, lẹhinna awọn iṣẹlẹ iṣaaju le dinku awọn idiyele Ẹrọ Iṣiro rẹ ni pataki. Fun apẹẹrẹ, awọn iṣẹ sisẹ ipele le ṣiṣẹ lori awọn iṣẹlẹ ti a ti ṣajọ tẹlẹ. Ti diẹ ninu awọn iṣẹlẹ wọnyẹn ba fopin si lakoko sisẹ, iṣẹ naa fa fifalẹ ṣugbọn ko da duro patapata. Awọn apẹẹrẹ ti o ṣaju tẹlẹ pari awọn iṣẹ ṣiṣe ṣiṣe ipele rẹ laisi gbigbe afikun iṣẹ ṣiṣe lori awọn iṣẹlẹ ti o wa tẹlẹ ati laisi nilo ki o san idiyele ni kikun fun awọn apẹẹrẹ deede deede.

И это все еще не конец! В действительности я уверен, что никто не запускает тесты по 12 часов без перерыва. И если это так, то вы можете автоматически запускать и останавливать виртуальные машины, когда они не нужны. Реальное время использования может снизиться до 6 часов в сутки. Тогда оплата в контексте нашей задачи уменьшится аж до 11$ в месяц за 8 браузеров. Разве это не прекрасно? Но с preemptible машинами мы должны быть осторожны и готовы к прерываниям и нестабильной работе, хотя эти ситуации могут быть предусмотрены и обработаны программно. Оно того стоит!

Но ни в коем случае я не говорю ‘никогда не используйте облачные тестовые фермы’. Они имеют ряд преимуществ. Прежде всего это не просто виртуальная машина, а полноценное решение для автоматизации тестирования с набором функционала из коробки: удаленный доступ, логи, скриншоты, видеозапись, различные браузеры и физические мобильные устройства. Во многих ситуациях это может быть незаменимой шикарной альтернативой. Особенно тестовые платформы полезны для IOS-автоматизации, когда публичные облака могут предложить только Linux/Windows-системы. Но разговор про IOS будет в следующих статьях. Я рекомендую всегда смотреть по ситуации и отталкиваться от задач: в каких-то дешевле и эффективнее использовать публичные облака, а в каких то тестовые платформы определено стоят потраченных денег.

Apejuwe ti isiyi ipo ti amayederun

Awọn irinṣẹ DevOps kii ṣe fun DevOps nikan. Ilana ti kikọ awọn amayederun adaṣe adaṣe idanwo lati ibere

Awọn ọna asopọ lati ṣawari

Awọn irinṣẹ to jọra:

6. Orchestration

Apejuwe kukuru ti imọ-ẹrọ

У меня хорошие новости – мы почти достигли конца статьи! На данный момент наша инфраструктура автоматизации состоит из web и Android-тестов, которые мы запускаем через GitLab CI параллельно, используя инструменты с поддержкой Docker: Selenium grid и Selenoid. Более того, мы используем созданные через GCP виртуальные машины для поднятия в них контейнеров с браузерами и эмуляторами. Для уменьшения расходов мы запускаем этим виртуальные машины только по требованию и останавливаем, когда тестирование не проводится. Существует ли что-то еще, что может улучшить нашу инфраструктуру? Ответ – да! Встречаем Kubernetes (K8s)!

Ni akọkọ, jẹ ki a wo bii awọn ọrọ orchestration, iṣupọ, ati Kubernetes ṣe ni ibatan si ara wọn. Ni ipele giga, orchestration jẹ eto ti o nfi ati ṣakoso awọn ohun elo. Fun adaṣe adaṣe, iru awọn ohun elo ti a fi sinu apo jẹ Selenium grid ati Selenoid. Docker ati K8s ṣe iranlowo fun ara wọn. A lo akọkọ fun imuṣiṣẹ ohun elo, ekeji fun orchestration. Ni ọna, K8s jẹ iṣupọ kan. Iṣẹ-ṣiṣe ti iṣupọ ni lati lo awọn VM bi Nodes, eyiti o fun ọ laaye lati fi sori ẹrọ ọpọlọpọ awọn iṣẹ ṣiṣe, awọn eto ati awọn iṣẹ laarin olupin kan (iṣupọ). Ti eyikeyi awọn Nodes ba kuna, Awọn Nodes miiran yoo gbe soke, eyiti o ṣe idaniloju iṣẹ ṣiṣe ti ko ni idilọwọ ti ohun elo wa. Ni afikun si eyi, K8s ni iṣẹ ṣiṣe pataki ti o ni ibatan si wiwọn, o ṣeun si eyiti a gba laifọwọyi iye ti o dara julọ ti awọn orisun ti o da lori fifuye ati ṣeto awọn opin.

Ni otitọ, gbigbe Kubernetes pẹlu ọwọ lati ibere kii ṣe iṣẹ-ṣiṣe kekere rara. Emi yoo fi ọna asopọ kan silẹ si olokiki bi o ṣe le ṣe itọsọna “Kubernetes The Hard Way” ati ti o ba nifẹ, o le ṣe adaṣe rẹ. Ṣugbọn, da, awọn ọna miiran ati awọn irinṣẹ wa. Ọna to rọọrun ni lati lo Google Kubernetes Engine (GKE) ni GCP, eyiti yoo gba ọ laaye lati gba iṣupọ ti a ti ṣetan ni awọn jinna diẹ. Mo ṣeduro lilo ọna yii lati bẹrẹ ikẹkọ, nitori yoo gba ọ laaye lati dojukọ lori kikọ bi o ṣe le lo awọn K8 fun awọn iṣẹ ṣiṣe rẹ dipo kikọ ẹkọ bii awọn paati inu yẹ ki o wa papọ. 

Iye fun adaṣiṣẹ amayederun

Jẹ ki a wo awọn ẹya pataki diẹ ti awọn K8 pese:

  • imuṣiṣẹ ohun elo: lilo opo-opopona opo dipo VM;
  • ìmúdàgba igbelosoke: din iye owo ti oro ti o ti wa ni lilo nikan lori eletan;
  • iwosan ara ẹni: imularada laifọwọyi ti awọn pods (ni abajade eyi ti awọn apoti tun tun pada);
  • yiyọ awọn imudojuiwọn ati awọn iyipada ti awọn ayipada laisi akoko isinmi: awọn irinṣẹ imudojuiwọn, awọn aṣawakiri ati awọn emulators ko ṣe idiwọ iṣẹ ti awọn olumulo lọwọlọwọ

Ṣugbọn awọn K8 ko tun jẹ ọta ibọn fadaka. Lati loye gbogbo awọn anfani ati awọn idiwọn ni agbegbe ti awọn irinṣẹ ti a nṣe ayẹwo (Selenium grid, Selenoid), a yoo jiroro ni ṣoki nipa eto ti K8s. Iṣupọ ni awọn oriṣi meji ti Awọn apa: Awọn apa Titunto ati Awọn apa Osise. Awọn Nodes Titunto jẹ iduro fun iṣakoso, imuṣiṣẹ ati awọn ipinnu ṣiṣe eto. Awọn apa osise wa nibiti awọn ohun elo ti ṣiṣẹ. Awọn apa tun ni agbegbe asiko asiko eiyan ninu. Ninu ọran wa, eyi ni Docker, eyiti o jẹ iduro fun awọn iṣẹ ti o jọmọ eiyan. Ṣugbọn awọn ọna abayọ tun wa, fun apẹẹrẹ apoti. O ṣe pataki lati ni oye pe wiwọn tabi iwosan ara ẹni ko kan taara si awọn apoti. Eyi ni imuse nipasẹ fifi / dinku nọmba awọn adarọ-ese, eyiti o ni awọn apoti (nigbagbogbo apoti kan fun podu, ṣugbọn da lori iṣẹ-ṣiṣe o le jẹ diẹ sii). Awọn ipo giga-giga ni awọn apa oṣiṣẹ, inu eyiti awọn adarọ-ese wa, inu eyiti awọn apoti ti gbe soke.

Ẹya igbelowọn jẹ bọtini ati pe o le lo si awọn apa mejeji laarin adagun-ipo iṣupọ ati awọn adarọ-ese laarin ipade kan. Awọn oriṣi iwọn meji lo wa ti o kan si awọn apa mejeeji ati awọn adarọ-ese. Iru akọkọ jẹ petele - igbelowọn waye nipasẹ jijẹ nọmba awọn apa/pods. Iru yi jẹ diẹ preferable. Iru keji jẹ, ni ibamu, inaro. A ṣe iwọn wiwọn nipasẹ jijẹ iwọn awọn apa/pods, kii ṣe nọmba wọn.

Bayi jẹ ki a wo awọn irinṣẹ wa ni aaye ti awọn ofin ti o wa loke.

Selenium akoj

Gẹgẹbi a ti sọ tẹlẹ, akoj Selenium jẹ irinṣẹ olokiki pupọ, ati pe kii ṣe iyalẹnu pe o ti wa ninu apoti. Nitorinaa, ko ṣe iyalẹnu pe akoj Selenium le wa ni ran lọ si awọn K8s. Apeere ti bii o ṣe le ṣe eyi ni a le rii ni ibi ipamọ K8s osise. Gẹgẹbi igbagbogbo, Mo so awọn ọna asopọ ni opin apakan naa. Ni afikun, bi o ṣe le ṣe itọsọna fihan bi o ṣe le ṣe eyi ni Terraform. Awọn ilana tun wa lori bi o ṣe le ṣe iwọn nọmba awọn adarọ-ese ti o ni awọn apoti aṣawakiri ninu. Ṣugbọn iṣẹ irẹjẹ aifọwọyi ni aaye ti K8s kii ṣe iṣẹ-ṣiṣe ti o han gbangba patapata. Nigbati mo bẹrẹ ikẹkọ, Emi ko rii eyikeyi itọnisọna to wulo tabi awọn iṣeduro. Lẹhin awọn iwadii pupọ ati awọn adanwo pẹlu atilẹyin ti ẹgbẹ DevOps, a yan ọna ti igbega awọn apoti pẹlu awọn aṣawakiri to ṣe pataki inu adarọ ese kan, eyiti o wa ni inu ipade oṣiṣẹ kan. Ọna yii gba wa laaye lati lo ilana ti igbelowọn petele ti awọn apa nipasẹ jijẹ nọmba wọn. Mo nireti pe eyi yoo yipada ni ọjọ iwaju ati pe a yoo rii awọn apejuwe diẹ sii ati siwaju sii ti awọn isunmọ ti o dara julọ ati awọn solusan ti a ti ṣetan, paapaa lẹhin itusilẹ ti Selenium grid 4 pẹlu iṣiparọ inu ti o yipada.

Selenoid:

Ifilọlẹ Selenoid ni K8s lọwọlọwọ jẹ ibanujẹ nla julọ. Wọn ko ni ibamu. Ni imọran, a le gbe eiyan Selenoid kan sinu adarọ-ese kan, ṣugbọn nigbati Selenoid bẹrẹ ifilọlẹ awọn apoti pẹlu awọn aṣawakiri, wọn yoo tun wa ninu podu kanna. Eyi jẹ ki iwọnwọn ko ṣee ṣe ati, bi abajade, iṣẹ Selenoid inu iṣupọ kan kii yoo yato si iṣẹ inu ẹrọ foju kan. Ipari itan.

Moon:

Mọ igo yii nigbati o n ṣiṣẹ pẹlu Selenoid, awọn olupilẹṣẹ ṣe idasilẹ ọpa ti o lagbara diẹ sii ti a pe ni Oṣupa. Ọpa yii jẹ apẹrẹ ni akọkọ lati ṣiṣẹ pẹlu Kubernetes ati, bi abajade, ẹya-ara autoscaling le ati pe o yẹ ki o lo. Pẹlupẹlu, Emi yoo sọ pe ni akoko ti o jẹ awọn nikan ọpa kan ni agbaye Selenium, eyiti o ni atilẹyin iṣupọ K8s abinibi kuro ninu apoti (ko si ohun to wa, ri tókàn ọpa ). Awọn ẹya pataki ti Oṣupa ti o pese atilẹyin yii ni: 

Aini ipinlẹ patapata. Awọn ile itaja Selenoid ni alaye iranti nipa awọn akoko aṣawakiri nṣiṣẹ lọwọlọwọ. Ti o ba jẹ fun idi kan ilana rẹ ṣubu - lẹhinna gbogbo awọn akoko ṣiṣe ti sọnu. Oṣupa ni ilodi si ko ni ipo inu ati pe o le ṣe atunṣe kọja awọn ile-iṣẹ data. Awọn akoko aṣawakiri wa laaye paapaa ti ọkan tabi diẹ ẹ sii awọn ẹda ba lọ silẹ.

Nitorinaa, Oṣupa jẹ ojutu nla, ṣugbọn iṣoro kan wa: kii ṣe ọfẹ. Iye owo da lori nọmba awọn akoko. O le ṣiṣe awọn akoko 0-4 nikan fun ọfẹ, eyiti ko wulo ni pataki. Ṣugbọn, bẹrẹ lati igba karun, iwọ yoo ni lati san $5 fun ọkọọkan. Ipo naa le yatọ lati ile-iṣẹ si ile-iṣẹ, ṣugbọn ninu ọran wa, lilo Oṣupa jẹ asan. Gẹgẹbi Mo ti ṣalaye loke, a le ṣiṣe awọn VM pẹlu Selenium Grid lori ibeere tabi mu nọmba awọn Nodes pọ si ninu iṣupọ. Fun isunmọ opo gigun ti epo kan, a ṣe ifilọlẹ awọn aṣawakiri 500 ati da gbogbo awọn orisun duro lẹhin ti awọn idanwo ti pari. Ti a ba lo Oṣupa, a yoo ni lati san afikun 500 x 5 = $2500 fun oṣu kan, laibikita iye igba ti a ṣe awọn idanwo. Lẹẹkansi, Emi ko sọ pe maṣe lo Oṣupa. Fun awọn iṣẹ ṣiṣe rẹ, eyi le jẹ ojutu ti ko ṣe pataki, fun apẹẹrẹ, ti o ba ni ọpọlọpọ awọn iṣẹ akanṣe / awọn ẹgbẹ ninu agbari rẹ ati pe o nilo iṣupọ nla ti o wọpọ fun gbogbo eniyan. Gẹgẹbi nigbagbogbo, Mo fi ọna asopọ silẹ ni ipari ati ṣeduro ṣiṣe gbogbo awọn iṣiro pataki ni ipo ti iṣẹ-ṣiṣe rẹ.

Oluko: (Ifarabalẹ! Eyi ko si ninu nkan atilẹba ati pe o wa ninu itumọ Russian nikan)

Gẹgẹbi Mo ti sọ, Selenium jẹ irinṣẹ olokiki pupọ, ati aaye IT n dagbasoke ni iyara pupọ. Nígbà tí mo ń ṣiṣẹ́ lórí ìtumọ̀ náà, irinṣẹ́ tuntun kan tí ń ṣèlérí tí wọ́n ń pè ní Callisto fara hàn lórí ìkànnì wa (hello Cypress àti àwọn apànìyàn Selenium mìíràn). O ṣiṣẹ ni abinibi pẹlu awọn K8s ati gba ọ laaye lati ṣiṣe awọn apoti Selenoid ni awọn adarọ-ese, ti a pin kaakiri awọn Nodes. Ohun gbogbo ṣiṣẹ ọtun jade ninu apoti, pẹlu autoscaling. Ikọja, ṣugbọn o nilo lati ni idanwo. Mo ti ṣakoso tẹlẹ lati mu ohun elo yii ṣiṣẹ ati ṣiṣe awọn idanwo pupọ. Ṣugbọn o ti wa ni kutukutu lati fa awọn ipinnu, lẹhin gbigba awọn esi lori ijinna pipẹ, boya Emi yoo ṣe atunyẹwo ni awọn nkan iwaju. Ni bayi Mo n lọ awọn ọna asopọ nikan fun iwadii ominira.  

Apejuwe ti isiyi ipo ti amayederun

Awọn irinṣẹ DevOps kii ṣe fun DevOps nikan. Ilana ti kikọ awọn amayederun adaṣe adaṣe idanwo lati ibere

Awọn ọna asopọ lati ṣawari

Iru irinṣẹ

7. Amayederun bi koodu (IaC)

Apejuwe kukuru ti imọ-ẹrọ

Ati nisisiyi a wa si apakan ti o kẹhin. Ni deede, imọ-ẹrọ yii ati awọn iṣẹ ṣiṣe ti o jọmọ kii ṣe ojuṣe ti awọn ẹlẹrọ adaṣe. Ati pe awọn idi wa fun eyi. Ni akọkọ, ni ọpọlọpọ awọn ajo, awọn ọran amayederun wa labẹ iṣakoso ti ẹka DevOps ati awọn ẹgbẹ idagbasoke ko bikita nipa ohun ti o jẹ ki opo gigun ti epo ṣiṣẹ ati bii ohun gbogbo ti o sopọ pẹlu rẹ nilo lati ni atilẹyin. Ni ẹẹkeji, jẹ ki a jẹ ooto, iṣe ti Awọn amayederun bi koodu (IaC) ko tun gba ni ọpọlọpọ awọn ile-iṣẹ. Ṣugbọn dajudaju o ti di aṣa olokiki ati pe o ṣe pataki lati gbiyanju lati ni ipa ninu awọn ilana, awọn isunmọ ati awọn irinṣẹ ti o ni nkan ṣe pẹlu rẹ. Tabi o kere ju duro titi di oni.

Jẹ ká bẹrẹ pẹlu awọn iwuri fun lilo yi ona. A ti jiroro tẹlẹ pe lati ṣiṣe awọn idanwo ni GitlabCI, a yoo nilo ni o kere ju awọn orisun lati ṣiṣe Gitlab Runner. Ati lati ṣiṣe awọn apoti pẹlu awọn aṣawakiri / emulators, a nilo lati ṣura VM tabi iṣupọ kan. Ni afikun si awọn ohun elo idanwo, a nilo iye pataki ti agbara lati ṣe atilẹyin idagbasoke, iṣeto, awọn agbegbe iṣelọpọ, eyiti o tun pẹlu awọn apoti isura data, awọn iṣeto adaṣe, awọn atunto nẹtiwọọki, awọn iwọntunwọnsi fifuye, awọn ẹtọ olumulo, ati bẹbẹ lọ. Ọrọ pataki ni igbiyanju ti o nilo lati ṣe atilẹyin fun gbogbo rẹ. Awọn ọna pupọ lo wa ti a le ṣe awọn ayipada ati yi awọn imudojuiwọn jade. Fun apẹẹrẹ, ni aaye ti GCP, a le lo console UI ninu ẹrọ aṣawakiri ati ṣe gbogbo awọn iṣe nipa titẹ awọn bọtini. Omiiran yoo jẹ lati lo awọn ipe API lati ṣe ajọṣepọ pẹlu awọn nkan awọsanma, tabi lo laini aṣẹ gcloud lati ṣe awọn ifọwọyi ti o fẹ. Ṣugbọn pẹlu nọmba ti o tobi pupọ ti awọn nkan oriṣiriṣi ati awọn eroja amayederun, o nira tabi paapaa ko ṣee ṣe lati ṣe gbogbo awọn iṣẹ pẹlu ọwọ. Pẹlupẹlu, gbogbo awọn iṣe afọwọṣe wọnyi ko ni iṣakoso. A ko le fi wọn silẹ fun atunyẹwo ṣaaju ipaniyan, lo eto iṣakoso ẹya, ki o yara yi awọn ayipada ti o yori si isẹlẹ naa pada. Lati yanju iru awọn iṣoro bẹ, awọn onimọ-ẹrọ ṣẹda ati ṣẹda awọn iwe afọwọkọ bash / ikarahun laifọwọyi, eyiti ko dara julọ ju awọn ọna iṣaaju lọ, nitori wọn ko rọrun lati ka ni iyara, oye, ṣetọju ati yipada ni aṣa ilana.

Ninu nkan yii ati bii-lati ṣe itọsọna, Mo lo awọn irinṣẹ 2 ti o ni ibatan si adaṣe IaC. Iwọnyi jẹ Terraform ati Ansible. Diẹ ninu awọn eniyan gbagbọ pe ko ṣe oye lati lo wọn ni akoko kanna, nitori pe iṣẹ ṣiṣe wọn jọra ati pe wọn jẹ paarọ. Ṣugbọn otitọ ni pe ni ibẹrẹ wọn fun wọn ni awọn iṣẹ ṣiṣe ti o yatọ patapata. Ati pe otitọ pe awọn irinṣẹ wọnyi yẹ ki o ṣe iranlowo fun ara wọn ni a timo ni igbejade apapọ nipasẹ awọn olupilẹṣẹ ti o nsoju HashiCorp ati RedHat. Iyatọ imọran ni pe Terraform jẹ ohun elo ipese fun iṣakoso awọn olupin funrararẹ. Lakoko ti Ansible jẹ irinṣẹ iṣakoso iṣeto ni iṣẹ rẹ ni lati fi sori ẹrọ, tunto ati ṣakoso sọfitiwia lori awọn olupin wọnyi.

Ẹya iyatọ bọtini miiran ti awọn irinṣẹ wọnyi jẹ ara ifaminsi. Ko dabi bash ati Ansible, Terraform nlo ara asọye ti o da lori apejuwe ti ipo ipari ti o fẹ lati ṣe aṣeyọri bi abajade ti ipaniyan. Fun apẹẹrẹ, ti a ba yoo ṣẹda 10 VMs ati lo awọn ayipada nipasẹ Terraform, lẹhinna a yoo gba 10 VM. Ti a ba tun ṣiṣẹ iwe afọwọkọ naa, ko si ohun ti yoo ṣẹlẹ nitori a ti ni awọn VM 10 tẹlẹ, ati Terraform mọ nipa eyi nitori pe o tọju ipo lọwọlọwọ ti awọn amayederun ni faili ipinlẹ kan. Ṣugbọn Ansible nlo ọna ilana ati, ti o ba beere lọwọ rẹ lati ṣẹda 10 VMs, lẹhinna lori ifilọlẹ akọkọ a yoo gba 10 VMs, iru si Terraform. Ṣugbọn lẹhin ti o tun bẹrẹ a yoo ti ni 20 VM tẹlẹ. Eyi ni iyatọ pataki. Ni aṣa ilana, a ko tọju ipo lọwọlọwọ ati nirọrun ṣapejuwe lẹsẹsẹ awọn igbesẹ ti o gbọdọ ṣe. Nitoribẹẹ, a le mu awọn ipo lọpọlọpọ, ṣafikun ọpọlọpọ awọn sọwedowo fun aye ti awọn orisun ati ipo lọwọlọwọ, ṣugbọn ko si aaye ni jafara akoko wa ati fifi ipa sinu iṣakoso ọgbọn yii. Ni afikun, eyi mu eewu ṣiṣe awọn aṣiṣe pọ si. 

Ni akopọ gbogbo awọn ti o wa loke, a le pinnu pe Terraform ati akiyesi asọye jẹ ohun elo ti o dara julọ fun ipese awọn olupin. Ṣugbọn o dara julọ lati ṣe aṣoju iṣẹ ti iṣakoso iṣeto ni Ansible. Pẹlu iyẹn ni ọna, jẹ ki a wo awọn ọran lilo ni aaye ti adaṣe.

Iye fun adaṣiṣẹ amayederun

Ohun pataki kan ṣoṣo lati loye nibi ni pe awọn amayederun adaṣe adaṣe yẹ ki o gbero bi apakan ti gbogbo awọn amayederun ile-iṣẹ. Eyi tumọ si pe gbogbo awọn iṣe IaC gbọdọ wa ni lilo ni agbaye si awọn orisun ti gbogbo agbari. Tani o ṣe iduro fun eyi da lori awọn ilana rẹ. Ẹgbẹ DevOps ni iriri diẹ sii ninu awọn ọran wọnyi, wọn rii gbogbo aworan ti ohun ti n ṣẹlẹ. Sibẹsibẹ, awọn onimọ-ẹrọ QA ni o ni ipa diẹ sii ninu ilana ti iṣelọpọ adaṣe ati ilana ti opo gigun ti epo, eyiti o fun wọn laaye lati rii dara julọ gbogbo awọn ayipada ti o nilo ati awọn aye fun ilọsiwaju. Aṣayan ti o dara julọ ni lati ṣiṣẹ pọ, paṣipaarọ imo ati awọn ero lati ṣe aṣeyọri esi ti a reti. 

Eyi ni awọn apẹẹrẹ diẹ ti lilo Terraform ati Ansible ni aaye ti adaṣe adaṣe ati awọn irinṣẹ ti a jiroro tẹlẹ:

1. Apejuwe awọn pataki abuda ati sile ti VMs ati awọn iṣupọ lilo Terraform.

2. Lilo Ansible, fi sori ẹrọ awọn irinṣẹ pataki fun idanwo: docker, Selenoid, Selenium Grid ati ṣe igbasilẹ awọn ẹya ti a beere fun awọn aṣawakiri / emulators.

3. Lilo Terraform, ṣe apejuwe awọn abuda ti VM ninu eyiti GitLab Runner yoo ṣe ifilọlẹ.

4. Fi GitLab Runner sori ẹrọ ati awọn irinṣẹ ti o tẹle pẹlu lilo Ansible, ṣeto awọn eto ati awọn atunto.

Apejuwe ti isiyi ipo ti amayederun

Awọn irinṣẹ DevOps kii ṣe fun DevOps nikan. Ilana ti kikọ awọn amayederun adaṣe adaṣe idanwo lati ibere

Awọn ọna asopọ lati ṣawari:

Iru irinṣẹ

Jẹ ki a ṣe akopọ rẹ!

Igbese
Imọ-ẹrọ
Irinṣẹ
Iye fun adaṣiṣẹ amayederun

1
Nṣiṣẹ agbegbe
Node.js, Selenium, Appium

  • Awọn irinṣẹ olokiki julọ fun wẹẹbu ati alagbeka
  • Ṣe atilẹyin ọpọlọpọ awọn ede ati awọn iru ẹrọ (pẹlu Node.js)

2
Awọn ọna iṣakoso ẹya 
Git

  • Awọn anfani ti o jọra pẹlu koodu idagbasoke

3
Apoti
Docker, Selenium grid, Selenoid (Web, Android)

  • Ṣiṣe awọn idanwo ni afiwe
  • Awọn agbegbe ti o ya sọtọ
  • Rọrun, awọn iṣagbega ẹya ti o rọ
  • Yiyipo idekun ajeku oro
  • Rọrun lati ṣeto

4
CI/CD
Gitlab CI

  • Awọn idanwo apakan ti opo gigun ti epo
  • Idahun kiakia
  • Hihan fun gbogbo ile/ẹgbẹ

5
Awọn iru ẹrọ awọsanma
Google awọsanma Platform

  • Awọn orisun lori ibeere (a sanwo nikan nigbati o nilo)
  • Rọrun lati ṣakoso ati imudojuiwọn
  • Hihan ati iṣakoso ti gbogbo oro

6
Orilẹ-ede
Kubernetes
Ni ipo ti awọn apoti pẹlu awọn aṣawakiri/awọn emulators inu awọn adarọ-ese:

  • Iwontunwọnsi / aifọwọyi
  • Iwosan ara-ẹni
  • Awọn imudojuiwọn ati awọn rollbacks laisi idilọwọ

7
Awọn amayederun bi koodu (IaC)
Terraform, O ṣeeṣe

  • Awọn anfani kanna pẹlu awọn amayederun idagbasoke
  • Gbogbo awọn anfani ti ikede koodu
  • Rọrun lati ṣe awọn ayipada ati ṣetọju
  • Ni kikun adaṣe

Awọn aworan atọka maapu ọkan: itankalẹ ti awọn amayederun

igbese 1: Agbegbe
Awọn irinṣẹ DevOps kii ṣe fun DevOps nikan. Ilana ti kikọ awọn amayederun adaṣe adaṣe idanwo lati ibere

igbese 2: VCS
Awọn irinṣẹ DevOps kii ṣe fun DevOps nikan. Ilana ti kikọ awọn amayederun adaṣe adaṣe idanwo lati ibere

step3: Containerization 
Awọn irinṣẹ DevOps kii ṣe fun DevOps nikan. Ilana ti kikọ awọn amayederun adaṣe adaṣe idanwo lati ibere

igbese 4: CI/CD 
Awọn irinṣẹ DevOps kii ṣe fun DevOps nikan. Ilana ti kikọ awọn amayederun adaṣe adaṣe idanwo lati ibere

step5: awọsanma Platform
Awọn irinṣẹ DevOps kii ṣe fun DevOps nikan. Ilana ti kikọ awọn amayederun adaṣe adaṣe idanwo lati ibere

step6: Orchestration
Awọn irinṣẹ DevOps kii ṣe fun DevOps nikan. Ilana ti kikọ awọn amayederun adaṣe adaṣe idanwo lati ibere

igbese 7: IaC
Awọn irinṣẹ DevOps kii ṣe fun DevOps nikan. Ilana ti kikọ awọn amayederun adaṣe adaṣe idanwo lati ibere

Ohun ti ni tókàn?

Nitorinaa, eyi ni opin nkan naa. Ṣugbọn ni ipari, Emi yoo fẹ lati ṣeto diẹ ninu awọn adehun pẹlu rẹ.

Lati ẹgbẹ rẹ
Gẹgẹbi mo ti sọ ni ibẹrẹ, Emi yoo fẹ ki nkan naa jẹ lilo ti o wulo ati iranlọwọ fun ọ lati lo imọ ti o gba ni iṣẹ gidi. Mo tun fi kun ọna asopọ si wulo guide.

Ṣugbọn paapaa lẹhin naa, maṣe da duro, adaṣe, ṣe iwadi awọn ọna asopọ ti o yẹ ati awọn iwe, wa bi o ṣe n ṣiṣẹ ni ile-iṣẹ rẹ, wa awọn aaye ti o le ni ilọsiwaju ati kopa ninu rẹ. Orire daada!

Lati ẹgbẹ mi

Из заголовка видно, что это была только первая часть. Несмотря на то, что она получилось довольно большой, здесь все еще не раскрыты важные темы. Во второй части я планирую рассмотреть инфраструктуру автоматизации в контексте IOS. Из-за ограничений Apple, связанных с запусками IOS симуляторов только на macOS системах, наш набор решений сужен. Например, мы лишены возможности использовать Docker для запуска симулятора или публичных облаков для запуска виртуальных машин. Но это не означает, что нет других альтернатив. Я постараюсь держать вас в курсе передовых решений и современных инструментов!

Paapaa, Emi ko mẹnuba awọn koko-ọrọ nla pupọ ti o jọmọ ibojuwo. Ni Apá 3, Emi yoo wo awọn irinṣẹ ibojuwo amayederun olokiki julọ ati kini data ati awọn metiriki lati gbero.

Ati nipari. Ni ọjọ iwaju, Mo gbero lati tusilẹ ikẹkọ fidio kan lori kikọ awọn amayederun idanwo ati awọn irinṣẹ olokiki. Lọwọlọwọ, awọn iṣẹ ikẹkọ pupọ ati awọn ikowe wa lori DevOps lori Intanẹẹti, ṣugbọn gbogbo awọn ohun elo ni a gbekalẹ ni aaye ti idagbasoke, kii ṣe adaṣe adaṣe. Lori ọran yii, Mo nilo esi gaan lori boya iru iṣẹ ikẹkọ yoo jẹ ohun ti o nifẹ ati iwulo fun agbegbe ti awọn oludanwo ati awọn onimọ-ẹrọ adaṣe. O ṣeun ilosiwaju!

orisun: www.habr.com

Ra alejo gbigba igbẹkẹle fun awọn aaye pẹlu aabo DDoS, awọn olupin VPS VDS 🔥 Ra gbigbalejo oju opo wẹẹbu ti o gbẹkẹle pẹlu aabo DDoS, awọn olupin VPS VDS | ProHoster